]> glassweightruler.freedombox.rocks Git - xdg-ninja.git/blobdiff - xdg-ninja.sh
Switch heredoc & BASH_SOURCE to POSIX compliant
[xdg-ninja.git] / xdg-ninja.sh
index 5a51bc62afbf2aaf4dcf568e01d446aaf59e612d..aa751bd307c4bc063308e2ef61aaefe5f0950e36 100755 (executable)
@@ -1,7 +1,8 @@
-#!/usr/bin/env bash
+#!/usr/bin/env sh
+# shellcheck disable=SC2016
 
 USE_GLOW=true
 
 USE_GLOW=true
-if ! command -v glow &>/dev/null; then
+if ! command -v glow >/dev/null 2>/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."
     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."
@@ -31,14 +32,14 @@ HELPSTRING="""\
 
 SKIP_OK=true
 for i in "$@"; do
 
 SKIP_OK=true
 for i in "$@"; do
-    if [ "$i" == "--help" ] || [ "$i" == "-h" ]; then
+    if [ "$i" = "--help" ] || [ "$i" = "-h" ]; then
         printf "%b" "$HELPSTRING"
         exit
         printf "%b" "$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
@@ -64,7 +65,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 +75,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"
 }
 
@@ -171,14 +172,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"