aboutsummaryrefslogtreecommitdiffstats
path: root/hm/soispha/pkgs/scripts/apps/fupdate.sh
diff options
context:
space:
mode:
Diffstat (limited to 'hm/soispha/pkgs/scripts/apps/fupdate.sh')
-rwxr-xr-xhm/soispha/pkgs/scripts/apps/fupdate.sh158
1 files changed, 80 insertions, 78 deletions
diff --git a/hm/soispha/pkgs/scripts/apps/fupdate.sh b/hm/soispha/pkgs/scripts/apps/fupdate.sh
index 7722c070..c038fa69 100755
--- a/hm/soispha/pkgs/scripts/apps/fupdate.sh
+++ b/hm/soispha/pkgs/scripts/apps/fupdate.sh
@@ -3,11 +3,13 @@
# shellcheck source=/dev/null
SHELL_LIBRARY_VERSION="2.0.13" . %SHELL_LIBRARY_PATH
+UPDATE_SCRIPT_NAME="update.sh"
+CONFIG_DIRECTORY_PATH="$HOME/.local/share/flake-update"
-UPDATE_SCRIPT_NAME="update.sh";
-CONFIG_DIRECTORY_PATH="$HOME/.local/share/flake-update";
-
+# Both are used in version()
+# shellcheck disable=SC2034
AUTHORS="Soispha"
+# shellcheck disable=SC2034
YEARS="2023"
# Searches upward for a `UPDATE_SCRIPT_NAME` script
@@ -22,68 +24,68 @@ check_for_update_script() {
# Checks if a given path to the update script is allowed.
# Takes the path as input
# Return 0, if allowed, 1 if not.
-check_for_allowed_update_script(){
- update_script="$1";
- config_path="${CONFIG_DIRECTORY_PATH}${update_script}";
- update_script_hash="$(sha256sum "$update_script")";
+check_for_allowed_update_script() {
+ update_script="$1"
+ config_path="${CONFIG_DIRECTORY_PATH}${update_script}"
+ update_script_hash="$(sha256sum "$update_script")"
if [ -f "$config_path" ]; then
- if [ "$(cat "$config_path")" = "$update_script_hash" ];then
- dbg "Recorded hash matches";
- return 0;
+ if [ "$(cat "$config_path")" = "$update_script_hash" ]; then
+ dbg "Recorded hash matches"
+ return 0
else
- dbg "Recorded hash \'$(cat "$config_path")\' does not match real hash \'$update_script_hash\', assuming not allowed";
- return 1;
+ dbg "Recorded hash \'$(cat "$config_path")\' does not match real hash \'$update_script_hash\', assuming not allowed"
+ return 1
fi
else
- dbg "Path \'$config_path\' does not exist, assuming not allowed";
- return 1;
+ dbg "Path \'$config_path\' does not exist, assuming not allowed"
+ return 1
fi
}
-
# Asks the user if they want to allow a given script.
# Takes the path as input
-ask_to_allow_update_script(){
- update_script="$1";
- config_path="${CONFIG_DIRECTORY_PATH}${update_script}";
- update_script_hash="$(sha256sum "$update_script")";
- println "\033[2J"; # clear the screen
- cat "$update_script";
- readp "Do you want to allow this script?[N/y]: " allow;
- dbg "allow is: $allow";
+ask_to_allow_update_script() {
+ update_script="$1"
+ config_path="${CONFIG_DIRECTORY_PATH}${update_script}"
+ update_script_hash="$(sha256sum "$update_script")"
+ println "\033[2J" # clear the screen
+ cat "$update_script"
+ readp "Do you want to allow this script?[N/y]: " allow
+ # shellcheck disable=SC2154
+ dbg "allow is: $allow"
case "$allow" in
- [yY])
- dbg "allowed script";
- dbg "storing contents in: $config_path";
- mkdir --parents "$(dirname "$config_path")";
- print "$update_script_hash" > "$config_path";
- ;;
- *)
- UPDATE_SCRIPT_NOT_ALLOWED=true;
- ;;
+ [yY])
+ dbg "allowed script"
+ dbg "storing contents in: $config_path"
+ mkdir --parents "$(dirname "$config_path")"
+ print "$update_script_hash" >"$config_path"
+ ;;
+ *)
+ UPDATE_SCRIPT_NOT_ALLOWED=true
+ ;;
esac
}
# Runs the provided script and continues to update the nix flake
# Takes the path to the script and the directory to the flake as arguments
# If the path to the update script is empty, it will be ignored
-update(){
- update_script="$1";
- flake_base_dir="$2";
+update() {
+ update_script="$1"
+ flake_base_dir="$2"
- [ "$update_script" = "" ] || "$update_script";
- dbg "changed directory to: $flake_base_dir";
- cd "$flake_base_dir" || die "Provided dir \'$flake_base_dir\' can not be accessed";
+ [ "$update_script" = "" ] || "$update_script"
+ dbg "changed directory to: $flake_base_dir"
+ cd "$flake_base_dir" || die "Provided dir \'$flake_base_dir\' can not be accessed"
nix flake update
- if grep '[^0-9]_[0-9]' flake.lock > /dev/null; then
- batgrep '[^0-9]_[0-9]' flake.lock;
- die "Your flake.nix contains duplicate inputs!";
+ if grep '[^0-9]_[0-9]' flake.lock >/dev/null; then
+ batgrep '[^0-9]_[0-9]' flake.lock
+ die "Your flake.nix contains duplicate inputs!"
fi
}
help() {
-cat << EOF
+ cat <<EOF
This is a Nix flake update manager.
Usage:
@@ -105,63 +107,63 @@ EOF
main() {
if ! [ "$UPDATE_SCRIPT_NOT_ALLOWED" = true ]; then
- update_script="$(check_for_update_script)";
- flake_base_dir="$(search_flake_base_dir)"; # Assume, that the update script is in the base dir
- dbg "update_script is: $update_script";
- dbg "flake_base_dir is: $flake_base_dir";
+ update_script="$(check_for_update_script)"
+ flake_base_dir="$(search_flake_base_dir)" # Assume, that the update script is in the base dir
+ dbg "update_script is: $update_script"
+ dbg "flake_base_dir is: $flake_base_dir"
if [ "$update_script" = "" ]; then
- update "" "$flake_base_dir";
+ update "" "$flake_base_dir"
elif check_for_allowed_update_script "$update_script" && ! [ "$update_script" = "" ]; then
- update "$update_script" "$flake_base_dir";
+ update "$update_script" "$flake_base_dir"
else
- ask_to_allow_update_script "$update_script";
- main;
+ ask_to_allow_update_script "$update_script"
+ main
fi
fi
}
if [ "$#" -eq 0 ]; then
- main;
+ main
fi
for input in "$@"; do
case "$input" in
- "--help" | "-h")
- help;
- exit 0;
- ;;
- "--version" | "-v")
- version;
- exit 0;
- ;;
- "--")
- end_of_cli_options=true;
- ;;
+ "--help" | "-h")
+ help
+ exit 0
+ ;;
+ "--version" | "-v")
+ version
+ exit 0
+ ;;
+ "--")
+ end_of_cli_options=true
+ ;;
esac
[ "$end_of_cli_options" = "true" ] && break
done
while [ "$#" -ne 0 ]; do
case "$1" in
- "flake")
- main;
- shift 1;
- ;;
- *)
- command="$1";
- shift 1;
- [ "$1" = "--" ] && shift 1
- if which update-"$command" > /dev/null 2>&1;then
- if [ "$end_of_cli_options" = "true" ]; then
- update-"$command" "$@";
- else
- update-"$command";
- fi
+ "flake")
+ main
+ shift 1
+ ;;
+ *)
+ command="$1"
+ shift 1
+ [ "$1" = "--" ] && shift 1
+ if which update-"$command" >/dev/null 2>&1; then
+ if [ "$end_of_cli_options" = "true" ]; then
+ update-"$command" "$@"
else
- die "command \"update-$command\" is not executable, or does not exist";
+ update-"$command"
fi
- ;;
+ else
+ die "command \"update-$command\" is not executable, or does not exist"
+ fi
+ ;;
esac
[ "$end_of_cli_options" = "true" ] && break
done