X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/xdg-ninja.git/blobdiff_plain/50eb373303465dccdea8fe15e977d45d8fc4b79e..a0c13c19b8deb711deafaaaa0d2dec1d5dea0e31:/xdg-ninja.sh diff --git a/xdg-ninja.sh b/xdg-ninja.sh index 8d98269..5fd1261 100755 --- a/xdg-ninja.sh +++ b/xdg-ninja.sh @@ -1,19 +1,52 @@ #!/bin/bash USE_GLOW=true -if ! command -v glow &> /dev/null -then +if ! command -v glow &>/dev/null; then echo "Glow not found, markdown rendering not available." + echo "Output will be raw markdown and might look weird." + echo "Install glow for easier reading & copy-paste." USE_GLOW=false fi unalias -a -ERR=0 -WARN=1 -INFO=2 -SUCS=3 -HELP=4 +HELPSTRING="""\ + + + \e[37;45;1mxdg-ninja\e[0m + + \e[1;3mCheck your \$HOME for unwanted files.\e[1;0m + + ──────────────────────────────────── + + \e[3m--help\e[0m \e[1mThis help menu\e[0m + \e[3m-h\e[0m + + \e[3m--no-skip-ok\e[0m \e[1mDisplay messages for all files checked (verbose)\e[0m + \e[3m-v\e[0m + + \e[3m--skip-ok\e[0m \e[1mDon't display anything for files that do not exist (default)\e[0m + +""" + +SKIP_OK=true +for i in "$@"; do + if [[ $i == "--help" ]] || [[ $i == "-h" ]]; then + echo -e "$HELPSTRING" + exit + elif [[ $i == "--skip-ok" ]]; then + SKIP_OK=true + elif [[ $i == "--no-skip-ok" ]]; then + SKIP_OK=false + elif [[ $i == "-v" ]]; then + SKIP_OK=false + fi +done + +if ! command -v jq &>/dev/null; then + echo "jq is needed to run this script, but it wasn't found. Please install it to be able to use this script." + exit +fi # Function to expand enviornment variables in string # https://stackoverflow.com/a/20316582/11110290 @@ -37,7 +70,6 @@ check_not_exists_file() { fi } - # Function to handle the formatting of output log() { MODE="$1" @@ -47,29 +79,30 @@ log() { case "$MODE" in - ERR) - printf "[\e[1;31m$NAME\e[1;0m]: \e[1;3m$FILENAME\e[1;0m\n" - ;; + ERR) + printf '[\e[1;31m%s\e[1;0m]: \e[1;3m%s\e[1;0m\n' "$NAME" "$FILENAME" + ;; - WARN) - printf "[\e[1;33m$NAME\e[1;0m]: \e[1;3m$FILENAME\e[1;0m\n" - ;; + WARN) + printf '[\e[1;33m%s\e[1;0m]: \e[1;3m%s\e[1;0m\n' "$NAME" "$FILENAME" + ;; - INFO) - printf "[\e[1;36m$NAME\e[1;0m]: \e[1;3m$FILENAME\e[1;0m\n" - ;; + INFO) + printf '[\e[1;36m%s\e[1;0m]: \e[1;3m%s\e[1;0m\n' "$NAME" "$FILENAME" + ;; - SUCS) - printf "[\e[1;32m$NAME\e[1;0m]: \e[1;3m$FILENAME\e[1;0m\n" - ;; + SUCS) + [ "$SKIP_OK" = false ] && + printf '[\e[1;32m%s\e[1;0m]: \e[1;3m%s\e[1;0m\n' "$NAME" "$FILENAME" + ;; - HELP) - if $USE_GLOW; then - echo "$HELP" | glow - - else - echo "$HELP" - fi - ;; + HELP) + if $USE_GLOW; then + echo "$HELP" | glow - + else + echo "$HELP" + fi + ;; esac } @@ -87,22 +120,22 @@ check_file() { case $? in - 0) - log SUCS "$NAME" "$FILENAME" "$HELP" - ;; - - 1 | 2) - if "$MOVABLE"; then - log ERR "$NAME" "$FILENAME" "$HELP" - else - log WARN "$NAME" "$FILENAME" "$HELP" - fi - if ! [ -z "$HELP" ]; then - log HELP "$NAME" "$FILENAME" "$HELP" - else - log HELP "$NAME" "$FILENAME" "_No help available._" - fi - ;; + 0) + log SUCS "$NAME" "$FILENAME" "$HELP" + ;; + + 1 | 2) + if "$MOVABLE"; then + log ERR "$NAME" "$FILENAME" "$HELP" + else + log WARN "$NAME" "$FILENAME" "$HELP" + fi + if [ "$HELP" ]; then + log HELP "$NAME" "$FILENAME" "$HELP" + else + log HELP "$NAME" "$FILENAME" "_No help available._" + fi + ;; esac } @@ -112,18 +145,23 @@ check_program() { INPUT=$1 NAME=$(echo "$INPUT" | jq -r .name) - while IFS= read -r file; do check_file "$file" "$NAME" - done <<< "$(echo "$INPUT" | jq -rc '.files[]')" + done <<<"$(echo "$INPUT" | jq -rc '.files[]')" } # Loops over all files in the programs/ directory and calls check_program enumerate_programs() { + echo -e "\e[1;3mStarting to check your \e[1;36m\$HOME.\e[1;0m" + echo -e "" for prog_filename in ./programs/*; do - check_program "$(cat $prog_filename)" + check_program "$(cat "$prog_filename")" done + echo -e "\e[1;3mDone checking your \e[1;36m\$HOME.\e[1;0m" + echo -e "" + echo -e "\e[3mIf you have files in your \e[1;36m\$HOME\e[1;0m that shouldn't be there, but weren't recognised by xdg-ninja, please consider creating a configuration file for it and opening a pull request on github.\e[1;0m" + echo -e "" } enumerate_programs