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
+ # 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() {
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
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
}
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"
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
# 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
# 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
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)"/..
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