X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=brc;fp=brc;h=d60af90a674155158c01557efad5eaf143c0c57c;hb=6d1ec26482f86b0f2d9560ce3d04ea8c63297c25;hp=3f4d9f9c8ebe535c2c10bc3479ba2b21e4502f06;hpb=1689909e66f73f779c4e13458d713a2ef517c9f5;p=distro-setup diff --git a/brc b/brc index 3f4d9f9..d60af90 100644 --- 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"