summaryrefslogtreecommitdiffstats
path: root/debian/publish.sh
diff options
context:
space:
mode:
authorsumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
committersumuel <samuel@yakubos.org>2026-08-17 20:44:55 +0000
commit76424950e373d3b04ac3dd13019151bfba3e8423 (patch)
tree4c3cfdbda039e592b9186be3e28f8d7cfd439e8a /debian/publish.sh
Add the files
Diffstat (limited to 'debian/publish.sh')
-rwxr-xr-xdebian/publish.sh76
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