shellcheck stuff
[distro-setup] / brc
diff --git a/brc b/brc
index 3f4d9f9c8ebe535c2c10bc3479ba2b21e4502f06..d60af90a674155158c01557efad5eaf143c0c57c 100644 (file)
--- a/brc
+++ b/brc
@@ -1390,6 +1390,7 @@ fa() {
   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 \
@@ -2436,19 +2437,30 @@ sgu() {
   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
+  # Dont complain about sourced files if we aren't asking for them.
+  if [[ $1 != -x ]]; then
+    others+=,1091
+  fi
+  shellcheck -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
 }
+skx() {
+  sk -x "$@"
+}
 # sk with quotes. For checking scripts that we expect to take untrusted
 # input in order to verify we quoted vars.
 skq() {
@@ -2461,15 +2473,16 @@ 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)
 skgit() {
-  local f toplevel orig_dir tmp skip e
+  local f toplevel orig_dir tmp skip pattern
   local -a ls_files excludes
   toplevel=$(git rev-parse --show-toplevel)
   if [[ $PWD != "$toplevel" ]]; then
@@ -2478,25 +2491,36 @@ skgit() {
   fi
   excludes=(
     'disabled/*'
-    # included from another file and checked there
+    # sourced from brc2
     beet-data
-    brc
-    brc2
+    # sourced from .bash_profile
+    .bashrc
+  )
+  no_check_sourced=(
+    .bash_profile
   )
-  tmp=$(git ls-files)
+  tmp=$(git ls-files | shuf)
   mapfile -t ls_files <<<"$tmp"
   for f in "${ls_files[@]}"; do
     skip=false
-    for e in "${excludes[@]}"; do
-      if [[ $f == $e ]]; then
+    for pattern in "${excludes[@]}"; do
+      if [[ $f == $pattern ]]; 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 ||:
+    check_source=-a
+    for pattern in "${no_check_sourced[@]}"; do
+      if [[ $f == "$pattern" ]]; then
+        check_source=
+        break
+      fi
+    done
+    if sk-p "$f"; then
+      printf "================= %s\n" "$f"
+      sk $check_source --color=always $f || [[ $? == 1 ]]
     fi
   done
   if [[ $orig_dir ]]; then
@@ -3126,8 +3150,9 @@ n() {
 }
 
 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"