Marty Oehme
4634655619
Fixed paths to images for new repository dotfile delineation. Added quick readme blurb explaining differece of normal and dotfile directories. Readme still explained old bare-repository directory structure. Rewrote sentences to conform to new structure. Removed underscore from bootstrap directory, since the repository does not organize itself through underscore prefixes anymore. Fixed package gathering git-hook to respect new bootstrap directory.
59 lines
1.7 KiB
Bash
Executable file
59 lines
1.7 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
|
|
COMMIT_MSG_FILE="$1"
|
|
COMMIT_SOURCE="$2"
|
|
|
|
BOOTSTRAPDIR="bootstrap"
|
|
pkgfileloc="$(git rev-parse --show-toplevel)/$BOOTSTRAPDIR/packages.txt"
|
|
pkgignoreloc="$(git rev-parse --show-toplevel)/$BOOTSTRAPDIR/packages_ignore.txt"
|
|
listgen="yay"
|
|
|
|
err() {
|
|
printf "\x1b[33mCAUTION:\x1b[0m %s\n" "$*"
|
|
exit 1
|
|
}
|
|
|
|
if [ ! -f "$pkgfileloc" ]; then
|
|
err "File not found - $pkgfileloc, can not determine package differences!"
|
|
fi
|
|
|
|
if ! type "$listgen" >/dev/null 2>&1; then
|
|
err "Yay not installed on machine, can not reliably determine package differences!"
|
|
fi
|
|
|
|
# get commited packages, remove empty lines
|
|
# and lines beginning with # to allow comments
|
|
pkgcommited=$(mktemp)
|
|
sed -e '/^[#$]/d' <"$pkgfileloc" | sort >"$pkgcommited"
|
|
|
|
# get packages on this machine
|
|
# q removes extraneous info
|
|
# e only lists explicitly installed
|
|
# tt removes those that are depended on, but NOT those optionally depended on
|
|
pkgcurrent=$(yay -Qqett | sort)
|
|
# remove those listed in package_ignore.txt
|
|
if [ -f "$pkgignoreloc" ]; then
|
|
pkgcurrent=$(echo "$pkgcurrent" | comm -23 - "$pkgignoreloc")
|
|
fi
|
|
|
|
# compare the lists, list differences
|
|
result=$(echo "$pkgcurrent" | comm -3 - "$pkgcommited")
|
|
|
|
# get files only in repo (field1), and only on machine (field2)
|
|
added=$(echo "$result" | cut -f1 | sed -e '/^$/d')
|
|
removed=$(echo "$result" | cut -s -f2)
|
|
|
|
# if we have no changes, do nothing
|
|
if [ -n "$added" ] || [ -n "$removed" ]; then
|
|
text=$(printf "\-- PACKAGE DIFFERENCES TO COMMITED LIST FOUND --\nPackages NOT YET in repo:\n%s\n\nPackages ONLY in repo:%s\n" "$added" "$removed" | sed 's/^/# /gm')
|
|
else
|
|
exit 0
|
|
fi
|
|
|
|
# prepend package changes to message
|
|
case $COMMIT_SOURCE in
|
|
"" | message, | template,)
|
|
msg=$(echo "$text" | cat - "$COMMIT_MSG_FILE")
|
|
printf "%s" "$msg" >"$COMMIT_MSG_FILE"
|
|
;;
|
|
esac
|