various fixes
[distro-setup] / brc2
diff --git a/brc2 b/brc2
index 577631eed08c9a7a19161fc046d5047af73ebb82..75ed2bcc5ead91e501b91d49a13c6bc9a6ae0899 100644 (file)
--- a/brc2
+++ b/brc2
@@ -273,11 +273,11 @@ dup() {
   local ran_d
   ran_d=false
   case $PS1 in
-    *DISTRO-BEGIN*)
+    *DISTRO-BEGIN!*|*DISTRO!*)
       /b/ds/distro-begin || return $?
       ran_d=true
       ;;&
-    *DISTRO-END*)
+    *DISTRO-END!*|*DISTRO!*)
       /b/ds/distro-end || return $?
       ran_d=true
       ;;&
@@ -377,11 +377,15 @@ fdroid_pkgs=(
 fdup() {
   local -A installed updated
   local p
-  fdroidcl update
+  # tried putting this in go buildscript cronjob,
+  # but it failed with undefined: os.UserCacheDir. I expect its due to
+  # an environment variable missing, but its easier just to stick it here.
+  m go get -u mvdan.cc/fdroidcl || return 1
+  m fdroidcl update
   if fdroidcl search -u | grep ^org.fdroid.fdroid; then
     fdroidcl install org.fdroid.fdroid
     sleep 5
-    fdroidcl update
+    fdroidcl update
   fi
   for p in $(fdroidcl search -i| grep -o "^\S\+"); do
     installed[$p]=true
@@ -391,14 +395,14 @@ fdup() {
   done
   for p in ${fdroid_pkgs[@]}; do
     if ! ${installed[$p]:-false}; then
-      fdroidcl install $p
+      fdroidcl install $p
       # sleeps are just me being paranoid since replicant has a history of crashing when certain apps are installed
       sleep 5
     fi
   done
   for p in ${!installed[@]}; do
     if ! ${updated[$p]:-true}; then
-      fdroidcl install $p
+      fdroidcl install $p
       sleep 5
     fi
   done
@@ -938,27 +942,30 @@ sl() {
       # Theres a couple ways to do this. im not sure whats best,
       # but relying on bash 4.4+ escape quoting seems most reliable.
       command ssh "${args[@]}" "$remote" \
-              BRC=t bash -c '"\"\$@\""' bash ${@@Q}
+              BRC=t bash -c '.\ .iank/.bashrc\;"\"\$@\""' bash ${@@Q}
+    elif [[ ! -t 0 ]]; then
+      # This case is when commands are being piped to ssh.
+      # Normally, no bashrc gets sourced.
+      # But, since we are doing all this, lets source it because we can.
+      cat <(echo . .iank/.bashrc) - | command ssh "${args[@]}" "$remote" BRC=t bash
     else
-      # -t gives us an interactive shell for normal ssh. -l makes us use the rcfile when piping commands.
-      command ssh -t "${args[@]}" "$remote" BRC=t INPUTRC=.iank/.inputrc bash --rcfile .iank/.bashrc -l
+      command ssh -t "${args[@]}" "$remote" BRC=t INPUTRC=.iank/.inputrc bash --rcfile .iank/.bashrc
     fi
   else
-    BRC=t command ssh "$remote" "$@"
+    if [[ -t 0 ]]; then
+      BRC=t command ssh "${args[@]}" "$remote" ${@@Q}
+    else
+      command ssh "${args[@]}" "$remote" BRC=t bash -l
+    fi
   fi
 }
 sss() { # ssh solo
-  ssh -oControlMaster=no -oControlPath=/ "$@"
+  sl -oControlMaster=no -oControlPath=/ "$@"
 }
 # kill off old shared socket then ssh
 ssk() {
-  local -a opts=()
-  while [[ $1 == -* ]]; do
-    opts+=("$1")
-    shift
-  done
-  m pkill -f "^ssh: /tmp/ssh_mux_${USER}_${1#*@}_22_"
-  m ssh "${opts[@]}" "$@"
+  m ssh -O exit "$@"
+  m sl "$@"
 }
 # plain limited ssh
 ssh() {