diff options
author | Ben Sima <ben@bsima.me> | 2021-12-21 21:12:41 -0500 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2021-12-21 21:12:41 -0500 |
commit | 9a10f244693f4d0c17f4e758e64dbdc014299c9f (patch) | |
tree | e293cfae8637e54774c4a430b32b12dfcb3a1e2b | |
parent | cf3fa3bdfab272151a734fe1b8725226b72f8521 (diff) |
Enable shellcheck lint and fix its warnings
-rw-r--r-- | Biz/Bild/ShellHook.sh | 171 | ||||
-rwxr-xr-x | Biz/Ide/ftags.sh | 4 | ||||
-rwxr-xr-x | Biz/Ide/hoog.sh | 2 | ||||
-rw-r--r-- | Biz/Lint.hs | 15 |
4 files changed, 98 insertions, 94 deletions
diff --git a/Biz/Bild/ShellHook.sh b/Biz/Bild/ShellHook.sh index 96c2e56..1cdb8ca 100644 --- a/Biz/Bild/ShellHook.sh +++ b/Biz/Bild/ShellHook.sh @@ -1,88 +1,89 @@ -function help() { - echo "" - echo "bizdev" | figlet | lolcat - echo "" - echo " bild compile code" - echo " repl start a repl" - echo " ci run all builds and tests" - echo " deps manage dependencies with niv" - echo " help show this message" - echo " lint auto-lint all changed files" - echo " pie product improvement engine" - echo " push send a namespace to the cloud" - echo " ship lint, bild, and push one (or all) namespace(s)" -} - +#!/usr/bin/env bash +## + function help() { + echo "" + echo "bizdev" | figlet | lolcat + echo "" + echo " bild compile code" + echo " repl start a repl" + echo " ci run all builds and tests" + echo " deps manage dependencies with niv" + echo " help show this message" + echo " lint auto-lint all changed files" + echo " pie product improvement engine" + echo " push send a namespace to the cloud" + echo " ship lint, bild, and push one (or all) namespace(s)" + } +# # color codes for use with printf -export RED='\033[0;31m' -export GRN='\033[0;32m' -export YEL='\033[0;33m' -export NC='\033[0m' # No Color - -alias runghc="runghc --ghc-arg=-i$BIZ_ROOT" - -alias guile="guile -L $BIZ_ROOT" - -alias tree="tree -I _ -F" - + export RED='\033[0;31m' + export GRN='\033[0;32m' + export YEL='\033[0;33m' + export NC='\033[0m' # No Color +# + alias runghc="runghc --ghc-arg=-i\$BIZ_ROOT" + alias guile="guile -L \$BIZ_ROOT" + alias tree="tree -I _ -F" # link git hooks -rm -f $BIZ_ROOT/.git/hooks/{post-checkout,post-merge,pre-commit,pre-push} -ln -s $BIZ_ROOT/Biz/Ide/post-checkout $BIZ_ROOT/.git/hooks/post-checkout -ln -s $BIZ_ROOT/Biz/Ide/post-merge $BIZ_ROOT/.git/hooks/post-merge -ln -s $BIZ_ROOT/Biz/Ide/pre-commit $BIZ_ROOT/.git/hooks/pre-commit -ln -s $BIZ_ROOT/Biz/Ide/pre-push $BIZ_ROOT/.git/hooks/pre-push - -function deps() { - niv --sources-file $BIZ_ROOT/Biz/Bild/Sources.json $@ -} - -function pie() { - runghc Biz.Pie $@ -} - -function run-sentry() { - urls=( - http://que.run - https://dragons.dev - https://simatime.com - https://tv.simatime.com - https://bsima.me - # https://herocomics.app - ) - for url in ${urls[@]} - do - code=$(curl -L --max-time 10 --silent --show-error --insecure \ - --output /dev/null \ - --write-out "%{http_code}" "$url") - case "$code" in - 2[0-9][0-9]) printf "${GRN}$code $url${NC}\n";; - 3[0-9][0-9]) printf "${YEL}$code $url${NC}\n";; - 4[0-9][0-9]) printf "${YEL}$code $url${NC}\n";; - 5[0-9][0-9]) printf "${RED}$code $url${NC}\n";; - *) printf "${RED}$code $url${NC}\n";; - esac - done -} - -function sentry() { - while true - do - clear - printf "%s sentry\n\n" "$(date +%Y.%m.%d..%H.%M)" - run-sentry - sleep 120 - done -} - + rm -f "$BIZ_ROOT/.git/hooks/{post-checkout,post-merge,pre-commit,pre-push}" + ln -s "$BIZ_ROOT/Biz/Ide/post-checkout" "$BIZ_ROOT/.git/hooks/post-checkout" + ln -s "$BIZ_ROOT/Biz/Ide/post-merge" "$BIZ_ROOT/.git/hooks/post-merge" + ln -s "$BIZ_ROOT/Biz/Ide/pre-commit" "$BIZ_ROOT/.git/hooks/pre-commit" + ln -s "$BIZ_ROOT/Biz/Ide/pre-push" "$BIZ_ROOT/.git/hooks/pre-push" +# + function deps() { + niv --sources-file "$BIZ_ROOT/Biz/Bild/Sources.json" "$@" + } +# + function pie() { + runghc Biz.Pie "$@" + } +# + function run-sentry() { + urls=( + http://que.run + https://dragons.dev + https://simatime.com + https://tv.simatime.com + https://bsima.me + # https://herocomics.app + ) + for url in "${urls[@]}" + do + code=$(curl -L --max-time 10 --silent --show-error --insecure \ + --output /dev/null \ + --write-out "%{http_code}" "$url") + case "$code" in + 2[0-9][0-9]) color=${GRN};; + 3[0-9][0-9]) color=${YEL};; + 4[0-9][0-9]) color=${YEL};; + 5[0-9][0-9]) color=${RED};; + *) color=${RED};; + esac + printf "%b%s %s%b\n" "$color" "$code" "$url" "$NC" + done + } +# + function sentry() { + while true + do + clear + printf "%s sentry\n\n" "$(date +%Y.%m.%d..%H.%M)" + run-sentry + sleep 120 + done + } +# # Poor man's ci -function run-ci() { - lint **/* && bild --test **/* -} - -function ci() { - time run-ci -} - -export PS1='\n$(r=$? && [ $r -eq 0 ] && printf "biz" || printf "%3.*s" $r $r)> ' - -help + function run-ci() { + lint ./**/* && bild --test ./**/* + } +# + function ci() { + time run-ci + } +# shellcheck disable=SC2154 + export PS1='\n$(r=$? && [ $r -eq 0 ] && printf "biz" || printf "%3.*s" $r $r)> ' +# + help +## diff --git a/Biz/Ide/ftags.sh b/Biz/Ide/ftags.sh index 4b8396b..77646da 100755 --- a/Biz/Ide/ftags.sh +++ b/Biz/Ide/ftags.sh @@ -5,7 +5,7 @@ set -euo pipefail tags=$BIZ_ROOT/tags tag_search=$( - awk 'BEGIN { FS="\t" } !/^!/ {print toupper($4)"\t"$1"\t"$2"\t"$3}' $tags \ + awk 'BEGIN { FS="\t" } !/^!/ {print toupper($4)"\t"$1"\t"$2"\t"$3}' "$tags" \ | cut -c1-80 \ | fzf \ --nth=1,2 \ @@ -13,7 +13,7 @@ --preview "rg --ignore-case --pretty --context 2 --word-regexp {+2}" ) ${EDITOR:-vim} \ - $(cut -f3 <<< "$tag_search") \ + "$(cut -f3 <<< "$tag_search")" \ -c "set nocst" \ -c "silent tag $(cut -f2 <<< "$tag_search")" ## diff --git a/Biz/Ide/hoog.sh b/Biz/Ide/hoog.sh index 5379e54..3945f90 100755 --- a/Biz/Ide/hoog.sh +++ b/Biz/Ide/hoog.sh @@ -4,7 +4,7 @@ # set -euo pipefail HOOG="hoogle search --count=200" - export FZF_DEFAULT_COMMAND="$HOOG $@" + export FZF_DEFAULT_COMMAND="$HOOG $*" fzf \ --preview-window=down \ --preview "hoogle search --link --info {+2}" \ diff --git a/Biz/Lint.hs b/Biz/Lint.hs index 38c7403..8d5a757 100644 --- a/Biz/Lint.hs +++ b/Biz/Lint.hs @@ -87,13 +87,13 @@ printResult r@(NoOp path_) = >> pure r changedFiles :: IO [FilePath] -changedFiles = mergeBase +> changed +changedFiles = + git ["merge-base", "HEAD", "origin/master"] + /> filter (/= '\n') + +> (\mb -> git ["diff", "--name-only", "--diff-filter=d", mb]) + /> String.lines where git args = Process.readProcess "git" args "" - mergeBase = git ["merge-base", "HEAD", "origin/master"] /> filter (/= '\n') - changed mb = - String.lines - </ git ["diff", "--name-only", "--diff-filter=d", mb] data Linter = Linter { exe :: Text, @@ -126,6 +126,9 @@ pylint = fixArgs = Nothing } +shellcheck :: Linter +shellcheck = Linter {exe = "shellcheck", args = [], fixArgs = Nothing} + data Status = Good | Bad String deriving (Show) @@ -152,7 +155,7 @@ runOne shouldFix root cwd path_ = results +> traverse_ printResult >> results lint shouldFix hlint path_ ] Just (Namespace _ Py) -> [lint shouldFix pylint path_] - Just (Namespace _ Sh) -> [pure <| NoOp path_] -- [lint "shellcheck" [] path_] + Just (Namespace _ Sh) -> [lint shouldFix shellcheck path_] Just (Namespace _ Nix) -> [pure <| NoOp path_] Just (Namespace _ Scm) -> [pure <| NoOp path_] Just _ -> [pure <. Warn <| "no linter for " <> Text.pack path_] |