done < <(find "$@" -print0);
}
+# shellcheck disable=SC2120
faf() { # find all files. use -L to follow symlinks
find "$@" -not \( -name .svn -prune -o -name .git -prune \
-o -name .hg -prune -o -name .editor-backups -prune \
systemctl list-unit-files | rg "$@"
}
+# check whether we generally want to do sk on the file
+sk-p() {
+ [[ ! -L $f ]] && istext "$1" && [[ $(head -n1 "$1" 2>/dev/null) == '#!/bin/bash'* ]]
+}
sk() {
# see https://savannah.gnu.org/maintenance/fsf/bash-style-guide/ for justifications
local quotes others ret
quotes=2048,2068,2086,2206,2254
- others=2029,2032,2033,2054,2164,
- shellcheck -W 999 -x -e $quotes,$others "$@" || ret=$?
+ others=2029,2032,2033,2054,2164
+ shellcheck -x -W 999 -e $quotes,$others "$@" || ret=$?
if (( ret >= 1 )); then
echo "A template comment to disable is now in clipboard. eg: # shellcheck disable=SC2206 # reason"
cbs "# shellcheck disable=SC"
return $ret
fi
}
+
# sk with quotes. For checking scripts that we expect to take untrusted
# input in order to verify we quoted vars.
skq() {
skmodified() {
local f
for f in $(i s | awk '$1 == "modified:" {print $2}'); do
- if [[ ! -L $f ]] && istext "$f" && [[ $(head -n1 "$f" 2>/dev/null) == '#!/bin/bash'* ]]; then
+ if sk-p "$f"; then
sk $f ||:
fi
done
}
-# sk on all the files in current git repo (except those excluded)
+
+# sk on all the files in current git repo
skgit() {
- local f toplevel orig_dir tmp skip e
- local -a ls_files excludes
+ local f toplevel orig_dir tmp
+ local -a ls_files sk_files
toplevel=$(git rev-parse --show-toplevel)
if [[ $PWD != "$toplevel" ]]; then
orig_dir=$PWD
cd $toplevel
fi
- excludes=(
- 'disabled/*'
- # included from another file and checked there
- beet-data
- brc
- brc2
- )
- tmp=$(git ls-files)
+ # tracked & untracked files
+ tmp=$(git ls-files && git ls-files --others --exclude-standard)
mapfile -t ls_files <<<"$tmp"
for f in "${ls_files[@]}"; do
- skip=false
- for e in "${excludes[@]}"; do
- if [[ $f == $e ]]; then
- skip=true
- break
- fi
- done
- if $skip; then continue; fi
-
- if istext "$f" && [[ $(head -n1 "$f" 2>/dev/null) == '#!/bin/bash'* ]]; then
- sk $f ||:
+ if sk-p "$f"; then
+ sk_files+=("$f")
fi
done
+ sk "${sk_files[@]}"
if [[ $orig_dir ]]; then
cd $orig_dir
fi
}
catnew() {
- local dir file
+ local dir file _
dir="$1"
+ # shellcheck disable=SC2030
inotifywait -m "$dir" -e create -e moved_to | while read -r _ _ file; do
hr
cat "$dir/$file"