]>
glassweightruler.freedombox.rocks Git - xdg-ninja.git/blob - xdg-ninja.sh
4 if ! command -v glow
&>/ dev
/ null
; then
5 echo "Glow not found, markdown rendering not available."
6 echo "Output will be raw markdown and might look weird."
7 echo "Install glow for easier reading & copy-paste."
16 \e[37;45;1mxdg-ninja\e[0m
18 \e[1;3mCheck your \ $HOME for unwanted files.\e[1;0m
20 ────────────────────────────────────
22 \e[3m--help\e[0m \e[1mThis help menu\e[0m
25 \e[3m--no-skip-ok\e[0m \e[1mDisplay messages for all files checked (verbose)\e[0m
28 \e[3m--skip-ok\e[0m \e[1mDon't display anything for files that do not exist (default)\e[0m
34 if [[ $i == "--help" ]] || [[ $i == "-h" ]]; then
37 elif [[ $i == "--skip-ok" ]]; then
39 elif [[ $i == "--no-skip-ok" ]]; then
41 elif [[ $i == "-v" ]]; then
46 if ! command -v jq
&>/ dev
/ null
; then
47 echo "jq is needed to run this script, but it wasn't found. Please install it to be able to use this script."
51 # Function to expand enviornment variables in string
52 # https://stackoverflow.com/a/20316582/11110290
53 apply_shell_expansion
() {
55 declare delimiter
= "__apply_shell_expansion_delimiter__"
56 declare command = "cat << $delimiter " $
' \n ' " $data " $
' \n ' " $delimiter "
60 # Returns 0 if the path doesn't lead anywhere
61 # Return 1 if the path points to a file, 2 if it points to a directory
62 check_not_exists_file
() {
63 FILE_PATH
= $(apply_shell_expansion "$1")
64 if [ -f " $FILE_PATH " ]; then
66 elif [ -d " $FILE_PATH " ]; then
73 # Function to handle the formatting of output
83 printf '[\e[1;31m%s\e[1;0m]: \e[1;3m%s\e[1;0m \n ' " $NAME " " $FILENAME "
87 printf '[\e[1;33m%s\e[1;0m]: \e[1;3m%s\e[1;0m \n ' " $NAME " " $FILENAME "
91 printf '[\e[1;36m%s\e[1;0m]: \e[1;3m%s\e[1;0m \n ' " $NAME " " $FILENAME "
95 [ " $SKIP_OK " = false
] &&
96 printf '[\e[1;32m%s\e[1;0m]: \e[1;3m%s\e[1;0m \n ' " $NAME " " $FILENAME "
101 echo " $HELP " | glow
-
110 # Checks that the given file does not exist, otherwise outputs help
115 FILENAME
= $(echo -E "$INPUT" | jq -r .path)
116 MOVABLE
= $(echo -E "$INPUT" | jq -r .movable)
117 HELP
= $(echo -E "$INPUT" | jq -r .help)
119 check_not_exists_file
" $FILENAME "
124 log SUCS
" $NAME " " $FILENAME " " $HELP "
129 log ERR
" $NAME " " $FILENAME " " $HELP "
131 log WARN
" $NAME " " $FILENAME " " $HELP "
134 log HELP
" $NAME " " $FILENAME " " $HELP "
136 log HELP
" $NAME " " $FILENAME " "_No help available._"
143 # Reads a file from programs/, calls check_file on each file specified for the program
147 NAME
= $(echo "$INPUT" | jq -r .name)
149 while IFS
= read -r file ; do
150 check_file
" $file " " $NAME "
151 done <<< " $(echo "$INPUT" | jq -rc '.files[]') "
154 # Loops over all files in the programs/ directory and calls check_program
155 enumerate_programs
() {
156 echo -e "\e[1;3mStarting to check your \e[1;36m\ $HOME .\e[1;0m"
158 for prog_filename
in .
/ programs
/*; do
159 check_program
" $(cat "$prog_filename") "
161 echo -e "\e[1;3mDone checking your \e[1;36m\ $HOME .\e[1;0m"
163 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"