From 6d1ec26482f86b0f2d9560ce3d04ea8c63297c25 Mon Sep 17 00:00:00 2001 From: Ian Kelling Date: Sat, 27 Apr 2024 19:56:27 -0400 Subject: [PATCH] shellcheck stuff --- beet-data | 2 +- bitfolk-chroot-install | 1 + brc | 51 ++++++++++++++----- brc2 | 27 +++++----- distro-end | 1 + .../local/bin/check-lets-encrypt-ssl-settings | 2 +- filesystem/usr/local/bin/myupgrade-iank | 2 - mailtest-check | 2 +- 8 files changed, 57 insertions(+), 31 deletions(-) diff --git a/beet-data b/beet-data index 5fb0538..0aee2b4 100644 --- a/beet-data +++ b/beet-data @@ -127,7 +127,7 @@ beetapl() { # beet add playlist local name name="$1" shift - bpla[$name]="${@@Q}" + bpla[$name]="${*@Q}" } diff --git a/bitfolk-chroot-install b/bitfolk-chroot-install index b33a0d3..398c20c 100755 --- a/bitfolk-chroot-install +++ b/bitfolk-chroot-install @@ -46,6 +46,7 @@ locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 EOF # /a/bin/fai/fai/config/hooks/updatebase.UBUNTU +# shellcheck disable=SC2016 debconf --owner=locales sh -c ' . /usr/share/debconf/confmodule db_version 2.0 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" diff --git a/brc2 b/brc2 index 53d713a..eae5aa9 100644 --- a/brc2 +++ b/brc2 @@ -83,15 +83,6 @@ else export NOT_MAIL_HOST_P=t fi - -source /a/bin/log-quiet/logq-function - -# not used -# if [[ -s /a/opt/alacritty/extra/completions/alacritty.bash ]]; then -# source /a/opt/alacritty/extra/completions/alacritty.bash -# fi - - source /a/bin/ds/beet-data @@ -843,7 +834,7 @@ mpvrpc-loadfile() { # todo: enter should also unpause beetag() { local last_genre_i fstring tag id char new_item char_i genre tag remove doplay i j random path - local do_rare_genres read_wait help line lsout tmp ls_line skip_lookback + local do_rare_genres read_wait line lsout tmp ls_line skip_lookback local escape_char escaped_input expected_input skip_input_regex right_pad erasable_line seek_sec local pl_state_path pl_state_dir pl_state_file tmpstr local new_random pl_seed_path seed_num seed_file fmt first_play repeat1 @@ -2349,8 +2340,8 @@ rename-test() { # test whether missing files were renamed, generally for use with fsdiff # $1 = fsdiff output file, $2 = directory to compare to. pwd = fsdiff dir # echos non-renamed files - local x y found - unset sums + local x line found renamed + local -a sums for x in "$2"/*; do { sums+=( "$(md5sum < "$x")" ) ; } 2>/dev/null done @@ -2402,8 +2393,8 @@ gup() { /a/f/gnulib/build-aux/gnupload "$@"; } dejagnu() { /a/opt/dejagnu/dejagnu "$@"; } +# do git status on published repos. hstatus() { - # do git status on published repos. c /a/bin/githtml for x in *; do cd "$(readlink -f $x)"/.. @@ -2417,6 +2408,16 @@ hstatus() { done } +hsk() { + local x + c /a/bin/githtml + for x in *; do + cd "$(readlink -f $x)"/.. + skgit + cd /a/bin/githtml + done +} + ## work log # # note: database location is specified in ~/.timetrap.yml, currently /p/.timetrap.db diff --git a/distro-end b/distro-end index d7fa658..f81baa3 100755 --- a/distro-end +++ b/distro-end @@ -2026,6 +2026,7 @@ curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo ### end gh #### + # remove trisquel banner. it is cool but takes up too much space. sudo rm -f /etc/update-motd.d/01-banner diff --git a/filesystem/usr/local/bin/check-lets-encrypt-ssl-settings b/filesystem/usr/local/bin/check-lets-encrypt-ssl-settings index f0e05e4..c9eab42 100755 --- a/filesystem/usr/local/bin/check-lets-encrypt-ssl-settings +++ b/filesystem/usr/local/bin/check-lets-encrypt-ssl-settings @@ -39,7 +39,7 @@ source ~/.bashrc if [[ ! -e /dev/shm/iank-status ]]; then exit 0 fi -eval $(< /dev/shm/iank-status) +eval "$(< /dev/shm/iank-status)" if [[ $HOSTNAME != "$MAIL_HOST" || $HOST2 && $HOST2 != "$HOSTNAME" ]]; then exit 0 diff --git a/filesystem/usr/local/bin/myupgrade-iank b/filesystem/usr/local/bin/myupgrade-iank index 7c7a2bf..72cd70f 100755 --- a/filesystem/usr/local/bin/myupgrade-iank +++ b/filesystem/usr/local/bin/myupgrade-iank @@ -33,8 +33,6 @@ if [[ $EUID == 0 ]]; then exit 1 fi -hn=$(hostname -f) - /a/bin/buildscripts/go /a/bin/buildscripts/rust diff --git a/mailtest-check b/mailtest-check index 034dfc6..856d774 100755 --- a/mailtest-check +++ b/mailtest-check @@ -40,7 +40,7 @@ e() { $int || return 0; printf "mailtest-check: %s\n" "$*"; } getspamdpid() { if [[ ! $spamdpid || ! -d /proc/$spamdpid ]]; then # try twice in case we are restarting, it happens. - for i in 1 2; do + for (( i=0; i<2; i++ )); do spamdpid=$(systemctl show --property MainPID --value spamassassin | sed 's/^[10]$//' ||:) if [[ $spamdpid ]]; then break -- 2.30.2