From 13aea1c654b42e11287ac59fe75ce631d56b07e2 Mon Sep 17 00:00:00 2001 From: bart Date: Tue, 20 Oct 2026 23:12:58 +0200 Subject: [PATCH] Add automated update-repo.sh for index generation and signing --- update-repo.sh | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100755 update-repo.sh diff --git a/update-repo.sh b/update-repo.sh new file mode 100755 index 0000000..f1f3ed7 --- /dev/null +++ b/update-repo.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash +# ============================================================================== +# Update and sign Eendoe APT Repository +# ============================================================================== +set -euo pipefail + +REPO_DIR="/sites/repository/binaries" +DISTS_DIR="${REPO_DIR}/dists/stable" +MAIN_DIR="${DISTS_DIR}/main/binary-amd64" +KEY_ID="56499F920639F571" + +echo "=== Updating Eendoe APT Repository ===" + +cd "$REPO_DIR" +mkdir -p "$MAIN_DIR" + +echo "Scanning packages in pool/main..." +dpkg-scanpackages --multiversion pool/main /dev/null > "$MAIN_DIR/Packages" + +echo "Compressing Packages..." +gzip -9c "$MAIN_DIR/Packages" > "$MAIN_DIR/Packages.gz" +bzip2 -9c "$MAIN_DIR/Packages" > "$MAIN_DIR/Packages.bz2" + +echo "Generating Release file..." +cd "$DISTS_DIR" + +cat << EOF > Release +Origin: Eendoe +Label: Eendoe Repository +Suite: stable +Codename: stable +Date: $(date -Ru) +Architectures: amd64 all +Components: main +Description: Eendoe Private APT Package Repository +EOF + +add_checksums() { + local algo="$1" + local cmd="$2" + echo "${algo}:" >> Release + for file in main/binary-amd64/Packages main/binary-amd64/Packages.gz main/binary-amd64/Packages.bz2; do + if [ -f "$file" ]; then + local size + size=$(stat -c%s "$file") + local hash + hash=$($cmd "$file" | awk '{print $1}') + printf " %s %16d %s\n" "$hash" "$size" "$file" >> Release + fi + done +} + +add_checksums "MD5Sum" "md5sum" +add_checksums "SHA1" "sha1sum" +add_checksums "SHA256" "sha256sum" + +echo "Signing Release with GPG key $KEY_ID..." +rm -f Release.gpg InRelease +gpg --batch --yes --default-key "$KEY_ID" --armor --detach-sign -o Release.gpg Release +gpg --batch --yes --default-key "$KEY_ID" --clearsign -o InRelease Release + +echo "=== Repository update & signing complete ==="