about summary refs log tree commit diff stats
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