]> glassweightruler.freedombox.rocks Git - xdg-ninja.git/blobdiff - xdg-ninja.sh
xdg-ninja: security and readability fixes
[xdg-ninja.git] / xdg-ninja.sh
index ed8b6644fcb725d5c51fdb168d7b427632f32d70..5fd12615f654adbd6a4914669f982cbd0a0aa0f7 100755 (executable)
@@ -1,8 +1,7 @@
 #!/bin/bash
 
 USE_GLOW=true
 #!/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."
     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."
@@ -31,31 +30,24 @@ HELPSTRING="""\
 """
 
 SKIP_OK=true
 """
 
 SKIP_OK=true
-for i in "$@" ; do
-    if [[ $i == "--help" ]] || [[ $i == "-h" ]] ; then
+for i in "$@"; do
+    if [[ $i == "--help" ]] || [[ $i == "-h" ]]; then
         echo -e "$HELPSTRING"
         exit
         echo -e "$HELPSTRING"
         exit
-    elif [[ $i == "--skip-ok" ]] ; then
+    elif [[ $i == "--skip-ok" ]]; then
         SKIP_OK=true
         SKIP_OK=true
-    elif [[ $i == "--no-skip-ok" ]] ; then
+    elif [[ $i == "--no-skip-ok" ]]; then
         SKIP_OK=false
         SKIP_OK=false
-    elif [[ $i == "-v" ]] ; then
+    elif [[ $i == "-v" ]]; then
         SKIP_OK=false
     fi
 done
 
         SKIP_OK=false
     fi
 done
 
-if ! command -v jq &> /dev/null
-then
+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
 
     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
 
-ERR=0
-WARN=1
-INFO=2
-SUCS=3
-HELP=4
-
 # Function to expand enviornment variables in string
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
 # Function to expand enviornment variables in string
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
@@ -78,7 +70,6 @@ check_not_exists_file() {
     fi
 }
 
     fi
 }
 
-
 # Function to handle the formatting of output
 log() {
     MODE="$1"
 # Function to handle the formatting of output
 log() {
     MODE="$1"
@@ -88,31 +79,30 @@ log() {
 
     case "$MODE" in
 
 
     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)
-            if [ "$SKIP_OK" = false ]; then
-                printf "[\e[1;32m$NAME\e[1;0m]: \e[1;3m$FILENAME\e[1;0m\n"
-            fi
-            ;;
+    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
 }
 
     esac
 }
@@ -130,22 +120,22 @@ check_file() {
 
     case $? in
 
 
     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
 }
 
     esac
 }
@@ -155,11 +145,10 @@ check_program() {
     INPUT=$1
 
     NAME=$(echo "$INPUT" | jq -r .name)
     INPUT=$1
 
     NAME=$(echo "$INPUT" | jq -r .name)
-    
 
     while IFS= read -r file; do
         check_file "$file" "$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
 }
 
 # Loops over all files in the programs/ directory and calls check_program
@@ -167,7 +156,7 @@ 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
     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 ""
     done
     echo -e "\e[1;3mDone checking your \e[1;36m\$HOME.\e[1;0m"
     echo -e ""