#!/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 ==="