initial commit
This commit is contained in:
commit
a98c64521d
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
*~
|
||||
.DS_Store
|
||||
*.pkg.tar.zst
|
||||
*.pkg.tar.zst.sig
|
20
PKGBUILD
Normal file
20
PKGBUILD
Normal file
@ -0,0 +1,20 @@
|
||||
# Maintainer: Sebastian Hugentobler <shu@vanwa.ch>
|
||||
|
||||
pkgname=repo-tool
|
||||
pkgver=0.1.0
|
||||
pkgrel=1
|
||||
pkgdesc="Build a tree of pacman packages and build a repo of them."
|
||||
arch=("any")
|
||||
url="https://code.vanwa.ch"
|
||||
license=('MIT')
|
||||
depends=("pacman" "gnupg" "findutils")
|
||||
source=(
|
||||
"repo-tool"
|
||||
)
|
||||
sha256sums=("9eae4888a23637580d2323678ba0218bdce2d924e381ddbe2b0114b4a8dbe408")
|
||||
|
||||
package() {
|
||||
cd "$srcdir/"
|
||||
|
||||
install -Dm 755 repo-tool "$pkgdir/usr/bin/repo-tool"
|
||||
}
|
57
repo-tool
Executable file
57
repo-tool
Executable file
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env sh
|
||||
set -o errexit
|
||||
|
||||
build_exclude_arg() {
|
||||
x="$1"
|
||||
if [ -n "$x" ]; then
|
||||
set -- -path "$x" -prune -o
|
||||
exclude_arg="$*"
|
||||
else
|
||||
set -- exclude_arg
|
||||
fi
|
||||
}
|
||||
|
||||
build_pkgs() {
|
||||
pkg_root="$1"
|
||||
build_exclude_arg "$2"
|
||||
|
||||
# shellcheck disable=2086
|
||||
find "$pkg_root" $exclude_arg -name "PKGBUILD" \
|
||||
-exec sh -c 'p="$1"; echo "building and signing $(basename "$p")..."; cd $(dirname "$p") && makepkg -src --sign' shell {} \;
|
||||
}
|
||||
|
||||
build_repo() {
|
||||
pkg_root="$1"
|
||||
repo="$2"
|
||||
repo_name="$3"
|
||||
build_exclude_arg "$repo"
|
||||
|
||||
if [ ! -d "$repo" ]; then
|
||||
mkdir -p "$repo"
|
||||
fi
|
||||
|
||||
# shellcheck disable=2086
|
||||
find "$pkg_root" $exclude_arg -type f \
|
||||
\( -name "*.pkg.tar.zst" -o -name "*.pkg.tar.zst.sig" \) -exec cp "{}" "$repo" \;
|
||||
# shellcheck disable=2035
|
||||
cd "$repo" && repo-add --new --prevent-downgrade --sign "$repo_name.db.tar.gz" *.pkg.tar.zst
|
||||
}
|
||||
|
||||
if [ -z "$1" ] || { [ "$1" != "pkgs" ] && [ "$1" != "repo" ]; }; then
|
||||
echo "usage: $0 pkgs|repo"
|
||||
echo
|
||||
echo "pkgs takes two additional arguments:"
|
||||
echo " - root directory of the package tree"
|
||||
echo " - repo directory (use if it is in the same directory tree, optional)"
|
||||
echo
|
||||
echo "repo takes two additional arguments:"
|
||||
echo " - root directory of the package tree"
|
||||
echo " - repo directory"
|
||||
echo " - repo name"
|
||||
else
|
||||
if [ "$1" = "pkgs" ]; then
|
||||
build_pkgs "$2" "$3"
|
||||
else
|
||||
build_repo "$2" "$3" "$4"
|
||||
fi
|
||||
fi
|
Loading…
Reference in New Issue
Block a user