]> glassweightruler.freedombox.rocks Git - xdg-ninja.git/blobdiff - xdg-ninja.sh
Add newline to log HELP for increased readability
[xdg-ninja.git] / xdg-ninja.sh
index ee84cf0634da9675b6d018eae6f367f29815542c..d873df2b11d60a0f13b7b6ab19d6d6372d43d886 100755 (executable)
@@ -1,11 +1,18 @@
-#!/usr/bin/env bash
-
-USE_GLOW=true
-if ! command -v glow &>/dev/null; then
-    printf "Glow not found, markdown rendering not available."
-    printf "Output will be raw markdown and might look weird."
-    printf "Install glow for easier reading & copy-paste."
-    USE_GLOW=false
+#!/usr/bin/env sh
+# shellcheck disable=SC2016
+
+USE_GLOW=false
+USE_BAT=false
+if command -v glow >/dev/null 2>/dev/null; then
+    USE_GLOW=true
+elif command -v bat >/dev/null 2>/dev/null; then
+    USE_BAT=true
+    printf "Glow not found, markdown rendering will be done by bat.\n"
+    printf "Install glow for easier reading & copy-paste.\n"
+else
+    printf "Glow or bat not found, markdown rendering not available.\n"
+    printf "Output will be raw markdown and might look weird.\n"
+    printf "Install glow for easier reading & copy-paste.\n"
 fi
 
 unalias -a
 fi
 
 unalias -a
@@ -64,7 +71,7 @@ if [ -z "${XDG_RUNTIME_DIR}" ]; then
     printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m/run/user/$UID\e[1;0m\n'
 fi
 
     printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m/run/user/$UID\e[1;0m\n'
 fi
 
-if ! command -v jq &>/dev/null; then
+if ! command -v jq >/dev/null 2>/dev/null; then
     printf "jq is needed to run this script, but it wasn't found. Please install it to be able to use this script."
     exit
 fi
     printf "jq is needed to run this script, but it wasn't found. Please install it to be able to use this script."
     exit
 fi
@@ -74,9 +81,9 @@ printf "\n"
 # Function to expand environment variables in string
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
 # Function to expand environment variables in string
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
-    declare data="$1"
-    declare delimiter="__apply_shell_expansion_delimiter__"
-    declare command="cat <<$delimiter"$'\n'"$data"$'\n'"$delimiter"
+    data="$1"
+    delimiter="__apply_shell_expansion_delimiter__"
+    command=$(printf "cat <<%s\n%s\n%s" "$delimiter" "$data" "$delimiter")
     eval "$command"
 }
 
     eval "$command"
 }
 
@@ -121,9 +128,11 @@ log() {
 
     HELP)
         if $USE_GLOW; then
 
     HELP)
         if $USE_GLOW; then
-            printf "%s" "$HELP" | glow -
+            printf "%s\n" "$HELP" | glow -
+        elif $USE_BAT; then
+            printf "%s\n" "$HELP" | bat -pp -f --language markdown
         else
         else
-            printf "%s" "$HELP"
+            printf "%s\n" "$HELP"
         fi
         ;;
 
         fi
         ;;
 
@@ -171,14 +180,16 @@ check_program() {
 
     while IFS= read -r file; do
         check_file "$file" "$NAME"
 
     while IFS= read -r file; do
         check_file "$file" "$NAME"
-    done <<<"$(printf "%s" "$INPUT" | jq -rc '.files[]')"
+    done <<EOF
+$(echo "$INPUT" | jq -rc '.files[]')
+EOF
 }
 
 # Loops over all files in the programs/ directory and calls check_program
 enumerate_programs() {
     printf "\e[1;3mStarting to check your \e[1;36m\$HOME.\e[1;0m\n"
     printf "\n"
 }
 
 # Loops over all files in the programs/ directory and calls check_program
 enumerate_programs() {
     printf "\e[1;3mStarting to check your \e[1;36m\$HOME.\e[1;0m\n"
     printf "\n"
-       for prog_filename in "$(dirname "${BASH_SOURCE[0]}")"/programs/*; do
+    for prog_filename in "${0%/*}"/programs/*; do
         check_program "$(cat "$prog_filename")"
     done
     printf "\e[1;3mDone checking your \e[1;36m\$HOME.\e[1;0m\n"
         check_program "$(cat "$prog_filename")"
     done
     printf "\e[1;3mDone checking your \e[1;36m\$HOME.\e[1;0m\n"