63 lines
1.8 KiB
Bash
Executable File
63 lines
1.8 KiB
Bash
Executable File
#!/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 ==="
|