diff options
author | Soispha <soispha@vhack.eu> | 2024-02-20 16:35:15 +0100 |
---|---|---|
committer | Soispha <soispha@vhack.eu> | 2024-02-20 16:35:15 +0100 |
commit | cc09b607330385d6d81b9c47cf64a2442432e93f (patch) | |
tree | dc7e4503a3341b8936576c6339a70df4adaa2512 /hm/soispha/pkgs/scripts/apps/fupdate | |
parent | refactor(hm/conf/zsh/config): Rework old config scripts (diff) | |
download | nixos-config-cc09b607330385d6d81b9c47cf64a2442432e93f.zip |
refactor(treewide): Add a `.sh` extension to shell scripts
Diffstat (limited to 'hm/soispha/pkgs/scripts/apps/fupdate')
-rw-r--r-- | hm/soispha/pkgs/scripts/apps/fupdate | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/hm/soispha/pkgs/scripts/apps/fupdate b/hm/soispha/pkgs/scripts/apps/fupdate deleted file mode 100644 index 7722c070..00000000 --- a/hm/soispha/pkgs/scripts/apps/fupdate +++ /dev/null @@ -1,167 +0,0 @@ -#! /usr/bin/env dash - -# 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"; - -AUTHORS="Soispha" -YEARS="2023" - -# Searches upward for a `UPDATE_SCRIPT_NAME` script -# Returns a path to the script if it exists, otherwise nothing is returned -check_for_update_script() { - dirname="$(search_upward_files "$UPDATE_SCRIPT_NAME")" - if [ "$dirname" ]; then - printf "%s/%s" "$dirname" "$UPDATE_SCRIPT_NAME" - fi -} - -# 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")"; - if [ -f "$config_path" ]; then - 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; - fi - else - 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"; - 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; - ;; - 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_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!"; - fi -} - -help() { -cat << EOF -This is a Nix flake update manager. - -Usage: - $NAME [--help] - -Options: - --help | -h - Display this help and exit. - --version | -v - Display version and copyright information and exit. - -Commands: - flake - update the flake project - <some other command> - runs a executable called "update-<some other command>", if it exists -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"; - - if [ "$update_script" = "" ]; then - update "" "$flake_base_dir"; - elif check_for_allowed_update_script "$update_script" && ! [ "$update_script" = "" ]; then - update "$update_script" "$flake_base_dir"; - else - ask_to_allow_update_script "$update_script"; - main; - fi - fi -} - -if [ "$#" -eq 0 ]; then - main; -fi - -for input in "$@"; do - case "$input" in - "--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 - else - die "command \"update-$command\" is not executable, or does not exist"; - fi - ;; - esac - [ "$end_of_cli_options" = "true" ] && break -done |