host info updates
[distro-setup] / brc
diff --git a/brc b/brc
index 5105c59611ac9f623471c6812bc27f9cc53eed75..7731b9cdd7c0652302300b7571bb663c4b134726 100644 (file)
--- a/brc
+++ b/brc
@@ -248,30 +248,12 @@ if [[ $- == *i* ]]; then
       TERM=xterm-256color
     fi
 
-    if [[ $TERM == alacritty && ! -e /usr/share/terminfo/a/alacritty ]]; then
-      # todo: we should try installing the alacritty terminfo if it is not found
-      # https://github.com/alacritty/alacritty/issues/2838
-      TERM=xterm-256color
-    fi
-
-    # copying from the alacritty example above,
-    if [[ $TERM == xterm-kitty ]]; then
-      if [[ ! -e /usr/share/terminfo/x/xterm-kitty ]]; then
-        TERM=xterm-256color
-      else
-        if [[ -e /a/opt/kitty/shell-integration/bash/kitty.bash ]]; then
-          KITTY_SHELL_INTEGRATION=t
-          source /a/opt/kitty/shell-integration/bash/kitty.bash
-        fi
-      fi
-    fi
-
     # todo: not sure this works in sakura
     #stty werase undef
     #bind "\C-w": kill-region
     # sakura == xterm-256color
     # konsole == xterm
-    if [[ $TERM != xterm-kitty && $TERM == xterm* ]]; then
+    if [[ $TERM == xterm* ]]; then
       # control + arrow keys. for other terminals, see http://unix.stackexchange.com/questions/10806/how-to-change-previous-next-word-shortcut-in-bash
       bind '"\e[1;5C": shell-forward-word' 2>/dev/null
       bind '"\e[1;5D": shell-backward-word' 2>/dev/null
@@ -291,15 +273,6 @@ if [[ $- == *i* ]]; then
 
 fi
 
-case $TERM in
-  # fixup broken backspace in chroots
-  xterm-kitty|alacritty)
-    chroot() {
-      TERM=xterm-256color command chroot "$@"
-    }
-    ;;
-esac
-
 export BC_LINE_LENGTH=0
 
 # ansible option
@@ -879,14 +852,14 @@ _khfix-common() {
   fi
   ll ~/.ssh/known_hosts
 }
-khfix-r() { # known hosts fix + root
+khfix-r() { # known hosts fix without syncing to root user
   _khfix-common "$@" || return 1
   ssh $1 :
-  rootsshsync
 }
 khfix() {
   _khfix-common "$@" || return 1
   ssh $1 :
+  rootsshsync
 }
 
 # copy path into clipboard
@@ -1417,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 \
@@ -2463,19 +2437,24 @@ 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
+  shellcheck -x -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
 }
+
 # sk with quotes. For checking scripts that we expect to take untrusted
 # input in order to verify we quoted vars.
 skq() {
@@ -2484,15 +2463,41 @@ skq() {
   shellcheck -W 999 -x -e $others "$@" || return $?
 }
 
-skgit() {
+# sk on all modified files in current git repo
+skmodified() {
   local f
   for f in $(i s | awk '$1 == "modified:" {print $2}'); do
-    if 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
+skgit() {
+  local f toplevel orig_dir tmp
+  local -a ls_files sk_files
+  toplevel=$(git rev-parse --show-toplevel)
+  if [[ $PWD != "$toplevel" ]]; then
+    orig_dir=$PWD
+    cd $toplevel
+  fi
+  # tracked & untracked files
+  tmp=$(git ls-files && git ls-files --others --exclude-standard)
+  mapfile -t ls_files <<<"$tmp"
+  for f in "${ls_files[@]}"; do
+    if sk-p "$f"; then
+      sk_files+=("$f")
+    fi
+  done
+  sk "${sk_files[@]}"
+  if [[ $orig_dir ]]; then
+    cd $orig_dir
+  fi
+}
+
+
 # sl: ssh, but firsh rsync our bashrc and related files to a special
 # directory on the remote host if needed.
 
@@ -2737,11 +2742,7 @@ ssk() {
 ccomp ssh sl slr sss ssk
 # plain ssh
 ssh() {
-  if [[ $TERM == alacritty || $TERM == xterm-kitty ]]; then
-    TERM=xterm-256color LC_USEBASHRC=t command ssh "$@"
-  else
-    LC_USEBASHRC=t command ssh "$@"
-  fi
+  LC_USEBASHRC=t command ssh "$@"
 }
 
 
@@ -3118,8 +3119,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"
@@ -3243,6 +3245,16 @@ if [[ $- == *i* ]]; then
   # so I've thrown a bunch of things at the wall to speed it up.
   prompt-command() {
     local return=$? # this MUST COME FIRST
+
+    # all usable colors:
+    # black
+    # green         nonzero exit (pri 1)
+    # purple        default
+    # purple bold
+    # red           pwd different owner & group & not writable (pri 2)
+    # red bold      pwd different owner & group & writable (pri 2)
+    # yellow
+
     local ps_char ps_color
     unset IFS
 
@@ -3250,22 +3262,21 @@ if [[ $- == *i* ]]; then
       history -a # save history
     fi
 
-    case $return in
-      0) ps_color="$term_purple"
-         ps_char='\$'
-         ;;
-      *) ps_color="$term_green"
-         ps_char="$return \\$"
-         ;;
-    esac
+    ps_color="$term_purple"
+    ps_char='\$'
     if [[ ! -O . ]]; then # not owner
       if [[ -w . ]]; then # writable
        ps_color="$term_bold$term_red"
       else
-       ps_color="$term_bold$term_green"
+       ps_color="$term_red"
       fi
     fi
 
+    if [[ $return != 0 ]]; then
+      ps_color="$term_green"
+      ps_char="$return \\$"
+    fi
+
     # faster than sourceing the file im guessing
     if [[ -e /dev/shm/iank-status && ! -e /tmp/quiet-status ]]; then
       eval "$(< /dev/shm/iank-status)"