]> glassweightruler.freedombox.rocks Git - xdg-ninja.git/blobdiff - xdg-ninja.sh
Merge pull request #9 from jakkso/patch-1
[xdg-ninja.git] / xdg-ninja.sh
index 820c8e95e548c80eaaec36f48242e90f0b84e968..5540516ffad8874daccfbf52ff0ff0d50fa73558 100755 (executable)
@@ -1,9 +1,10 @@
-#!/bin/bash
+#!/usr/bin/env bash
 
 USE_GLOW=true
 
 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 "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
 
     USE_GLOW=false
 fi
 
@@ -29,32 +30,46 @@ 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 [[ -z "${XDG_DATA_HOME}" ]]; then
+    printf '\e[1;36m%s\e[1;0m\n' "The \$XDG_DATA_HOME environment variable is not set, make sure to add it to your shell's configuration before setting any of the other environment variables!"
+    printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m$HOME/.local/share\e[1;0m\n'
+fi
+if [[ -z "${XDG_CONFIG_HOME}" ]]; then
+    printf '\e[1;36m%s\e[1;0m\n' "The \$XDG_CONFIG_HOME environment variable is not set, make sure to add it to your shell's configuration before setting any of the other environment variables!"
+    printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m$HOME/.config\e[1;0m\n'
+fi
+if [[ -z "${XDG_STATE_HOME}" ]]; then
+    printf '\e[1;36m%s\e[1;0m\n' "The \$XDG_STATE_HOME environment variable is not set, make sure to add it to your shell's configuration before setting any of the other environment variables!"
+    printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m$HOME/.local/state\e[1;0m\n'
+fi
+if [[ -z "${XDG_CACHE_HOME}" ]]; then
+    printf '\e[1;36m%s\e[1;0m\n' "The \$XDG_CACHE_HOME environment variable is not set, make sure to add it to your shell's configuration before setting any of the other environment variables!"
+    printf '\e[1;36m    ⤷ \e[1mThe recommended value is: \e[1;3m$HOME/.cache\e[1;0m\n'
+fi
+if [[ -z "${XDG_RUNTIME_DIR}" ]]; then
+    printf '\e[1;36m%s\e[1;0m\n' "The \$XDG_RUNTIME_DIR environment variable is not set, make sure to add it to your shell's configuration before setting any of the other environment variables!"
+    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
     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
+# Function to expand environment variables in string
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
     declare data="$1"
 # https://stackoverflow.com/a/20316582/11110290
 apply_shell_expansion() {
     declare data="$1"
@@ -76,7 +91,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"
@@ -86,31 +100,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
 }
@@ -128,22 +141,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
 }
@@ -153,19 +166,18 @@ 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
 enumerate_programs() {
     echo -e "\e[1;3mStarting to check your \e[1;36m\$HOME.\e[1;0m"
     echo -e ""
 }
 
 # 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)"
+       for prog_filename in "$(dirname "${BASH_SOURCE[0]}")"/programs/*; do
+        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 ""