#!/bin/bash # post-commit hook: create SBo submission archive for added/updated packages set -u REPO_ROOT=$(git rev-parse --show-toplevel) SBO_DIR="$REPO_ROOT/.extras/SBo" # Find packages whose .SlackBuild was added (A) or modified (M) in this commit. # git diff-tree output format: \t # We only want files exactly one directory deep, e.g. hugo/hugo.SlackBuild. PACKAGES=() while IFS=$'\t' read -r status file; do [[ "$status" != "A" && "$status" != "M" ]] && continue dir=$(dirname "$file") base=$(basename "$file") # Only process packages at SlackBuilds/ depth [[ "$dir" =~ ^SlackBuilds/[^/]+$ ]] || continue [[ "$base" == *.SlackBuild ]] || continue PACKAGES+=("$dir") done < <(git diff-tree --no-commit-id -r --name-status HEAD) [[ ${#PACKAGES[@]} -eq 0 ]] && exit 0 for pkg in "${PACKAGES[@]}"; do echo "" echo "==> Package: $pkg" echo "" echo "Files to be archived:" echo "---------------------" while IFS= read -r f; do printf '%s\n' "${f#"$REPO_ROOT/"}" done < <(find "$REPO_ROOT/$pkg" -type f | sort) echo "" printf "Create SBo archive for '%s'? [y/N] " "$pkg" read -r answer Archive created: SBo/$pkg.tar.gz" else echo " -> Archive FAILED." >&2 fi ;; *) echo " -> Skipped." ;; esac done exit 0