diff options
| author | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
|---|---|---|
| committer | sumuel <samuel@yakubos.org> | 2026-08-17 20:44:55 +0000 |
| commit | 76424950e373d3b04ac3dd13019151bfba3e8423 (patch) | |
| tree | 4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /debian/publish.sh | |
Add the files
Diffstat (limited to 'debian/publish.sh')
| -rwxr-xr-x | debian/publish.sh | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/debian/publish.sh b/debian/publish.sh new file mode 100755 index 0000000..af3a1fc --- /dev/null +++ b/debian/publish.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# WARNING: DO NOT RUN THIS SCRIPT UNLESS YOU KNOW WHAT YOU ARE DOING. + +set -euo pipefail + +command -v debuild >/dev/null 2>&1 || { echo "debuild not found. Install devscripts." >&2; exit 1; } +command -v dput >/dev/null 2>&1 || { echo "dput not found." >&2; exit 1; } + +SCRIPT_DIR="$(cd -- "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +ROOT_DIR="$(cd -- "$SCRIPT_DIR/.." >/dev/null 2>&1 && pwd)" +OUT_DIR="$(dirname "$ROOT_DIR")" +PPA="ppa:zhangsongcui3371/fastfetch" +CODENAMES=( jammy noble plucky questing resolute ) +DRY_RUN=0 + +if [[ -d "$OUT_DIR/build" ]]; then + echo "Output directory exists: $OUT_DIR/build" >&2 + echo "Please move or delete it before proceeding." >&2 + exit 1 +fi + +TEMPLATE="$ROOT_DIR/debian/changelog.tpl" +CHANGELOG_DEBIAN="$ROOT_DIR/debian/changelog" + +if [[ ! -f "$TEMPLATE" ]]; then + echo "Template not found: $TEMPLATE" >&2 + exit 1 +fi + +if ! grep -q '#UBUNTU_CODENAME#' "$TEMPLATE"; then + echo "Template missing placeholder: #UBUNTU_CODENAME#" >&2 + exit 1 +fi + +echo "IMPORTANT: Before proceeding, please ensure that 'debian/changelog.tpl' is up-to-date" +echo " with the correct version number, release notes, and maintainer information." +echo +echo " The template must contain a placeholder like '#UBUNTU_CODENAME#' for the codename." +echo +read -p "Have you reviewed and updated 'debian/changelog.tpl'? (y/N): " -r +echo +if [[ ! $REPLY =~ ^[Yy]$ ]]; then + exit 1 +fi + +cleanup() { + rm -f "$CHANGELOG_DEBIAN" + rm -f "$ROOT_DIR/debian/files" +} +trap cleanup EXIT + +shopt -s nullglob + +for codename in "${CODENAMES[@]}"; do + echo "==> Publishing distro: $codename" + sed "s/#UBUNTU_CODENAME#/${codename}/g" "$TEMPLATE" > "$CHANGELOG_DEBIAN" + + ( cd "$ROOT_DIR" && debuild -S -i -I ) + + changes=( "$OUT_DIR"/fastfetch_*~${codename}_source.changes ) + if [[ ${#changes[@]} -ne 1 ]]; then + echo "Unable to uniquely identify .changes for '$codename' in: $OUT_DIR" >&2 + printf 'Found:\n'; printf ' %s\n' "${changes[@]}" >&2 || true + exit 1 + fi + + if [[ $DRY_RUN -eq 1 ]]; then + echo "[DRY-RUN] dput \"$PPA\" \"${changes[0]}\"" + else + dput "$PPA" "${changes[0]}" + fi + + rm -f "$OUT_DIR"/fastfetch_*~${codename}_source.{changes,dsc,tar.*} + + echo "<== Done: $codename" +done |