summaryrefslogtreecommitdiffstats
path: root/.local/bin/gitrect-fix
diff options
context:
space:
mode:
authorTyler Davis <tyler@gluecode.net>2024-05-07 19:47:56 -0700
committerTyler Davis <tyler@gluecode.net>2024-05-07 19:47:56 -0700
commit6ed88629a2523b3e37c89c9639695abb59390746 (patch)
tree3075f22e7a281270f5e44892284ae03bb39e8c6e /.local/bin/gitrect-fix
parentf8bd43d79286e3a142c7728081a2705542f9eeb8 (diff)
downloaddotfiles-6ed88629a2523b3e37c89c9639695abb59390746.tar.gz
dotfiles-6ed88629a2523b3e37c89c9639695abb59390746.zip
bin: shell fixes for gitrect
Diffstat (limited to '.local/bin/gitrect-fix')
-rwxr-xr-x.local/bin/gitrect-fix208
1 files changed, 104 insertions, 104 deletions
diff --git a/.local/bin/gitrect-fix b/.local/bin/gitrect-fix
index 97feb08..49387de 100755
--- a/.local/bin/gitrect-fix
+++ b/.local/bin/gitrect-fix
@@ -13,9 +13,9 @@ DEFAULT_STATE="$HOME/.local/share/git/repolist"
WORKDIR="$HOME/.code"
verbose=0 # Variables to be evaluated as shell arithmetic should be initialized to a default or validated beforehand.
-if [ ! $(command -v git) ]; then
- echo "git command not found. git must be installed and available in \$PATH to continue"
- exit 1
+if [ ! "$(command -v git)" ]; then
+ echo "git command not found. git must be installed and available in \$PATH to continue"
+ exit 1
fi
usage="$(basename "$0") [-h] [-v -w WORKDIR -f FILE]
@@ -29,51 +29,51 @@ Set remotes and pull new changes where:
"
while :; do
- case $1 in
- -h | -\? | --help) # Call a "show_help" function to display a synopsis, then exit.
- echo "$usage"
- exit
- ;;
- -f) # Takes an option argument, ensuring it has been specified.
- if [ -n "$2" ]; then
- DEFAULT_STATE=$2
- shift
- fi
- ;;
- -f=?*)
- DEFAULT_STATE=${1#*=} # Delete everything up to "=" and assign the remainder.
- ;;
- -f=) # Handle the case of an empty --file=
- printf 'ERROR: "-f" requires a non-empty option argument.\n' >&2
- exit 1
- ;;
- -w) # Takes an option argument, ensuring it has been specified.
- if [ -n "$2" ]; then
- WORKDIR=$2
- shift
- fi
- ;;
- -w=?*)
- WORKDIR=${1#*=} # Delete everything up to "=" and assign the remainder.
- ;;
- -w=) # Handle the case of an empty --file=
- printf 'ERROR: "-w" requires a non-empty option argument.\n' >&2
- exit 1
- ;;
- -v)
- verbose=$((verbose + 1)) # Each -v argument adds 1 to verbosity.
- ;;
- --) # End of all options.
- shift
- break
- ;;
- -?*)
- printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
- ;;
- *) # Default case: If no more options then break out of the loop.
- break ;;
- esac
- shift
+ case $1 in
+ -h | -\? | --help) # Call a "show_help" function to display a synopsis, then exit.
+ echo "$usage"
+ exit
+ ;;
+ -f) # Takes an option argument, ensuring it has been specified.
+ if [ -n "$2" ]; then
+ DEFAULT_STATE="$2"
+ shift
+ fi
+ ;;
+ -f=?*)
+ DEFAULT_STATE=${1#*=} # Delete everything up to "=" and assign the remainder.
+ ;;
+ -f=) # Handle the case of an empty --file=
+ printf 'ERROR: "-f" requires a non-empty option argument.\n' >&2
+ exit 1
+ ;;
+ -w) # Takes an option argument, ensuring it has been specified.
+ if [ -n "$2" ]; then
+ WORKDIR="$2"
+ shift
+ fi
+ ;;
+ -w=?*)
+ WORKDIR=${1#*=} # Delete everything up to "=" and assign the remainder.
+ ;;
+ -w=) # Handle the case of an empty --file=
+ printf 'ERROR: "-w" requires a non-empty option argument.\n' >&2
+ exit 1
+ ;;
+ -v)
+ verbose=$((verbose + 1)) # Each -v argument adds 1 to verbosity.
+ ;;
+ --) # End of all options.
+ shift
+ break
+ ;;
+ -?*)
+ printf 'WARN: Unknown option (ignored): %s\n' "$1" >&2
+ ;;
+ *) # Default case: If no more options then break out of the loop.
+ break ;;
+ esac
+ shift
done
# If there are input files (for example) that follow the options, they
@@ -83,68 +83,68 @@ done
FS_SEPARATOR="/"
if [ "$(uname -s)" = "Darwin" ]; then
- NPROC=$(eval "sysctl -n hw.ncpu")
+ true # Noop
elif [ "$(uname -s)" = "Linux" ]; then
- NPROC=$(eval "nproc")
+ true # Noop
else
- # Windows uses backslash
- FS_SEPARATOR="\\"
- if [ $verbose -gt 0 ]; then
- echo "cannot detect CPU total"
- fi
+ # Windows uses backslash
+ FS_SEPARATOR="\\"
+ if [ $verbose -gt 0 ]; then
+ echo "cannot detect CPU total"
+ fi
fi
while read -r line; do
- dir=$(echo $line | cut -d, -f 1)
- remlist=$(echo $line | cut -d, -f 2-)
- clone=0 #False
- if [ $verbose -gt 0 ]; then
- echo "Operating on ${WORKDIR}${FS_SEPARATOR}${dir}"
- fi
- if [ ! -d "${WORKDIR}${FS_SEPARATOR}${dir}" ]; then
- #clone repo
- clone=$((clone + 1)) # Set true
- mkdir -p "${WORKDIR}${FS_SEPARATOR}${dir}"
- fi
- cd "${WORKDIR}${FS_SEPARATOR}${dir}" || exit
- if [ $clone -gt 0 ]; then
- git init
- fi
- if [ $verbose -gt 1 ]; then
- echo "Remote list: ${remlist}"
- fi
- echo "${remlist}" | awk -F ',' '{for (i = 1; i <= NF; i++) {printf "%s \n", $i}; printf "\n"}' | while read -r r || [ -n "$r" ]; do
- remoteName=$(echo $r | awk -F'=' '{print $1}') # Just get the remote name
- # Allow for blank / newlines during processing
- if [ "${remoteName}" = "" ]; then continue; fi
- if [ -d .git/refs/remotes/$remoteName ]; then
- if [ $verbose -gt 0 ]; then
- echo "Setting remote ${r}"
- fi
- echo $r | awk -F'=' '{ print $1, $2; }' | xargs -n 2 git remote set-url
- else
+ dir=$(echo "$line" | cut -d, -f 1)
+ remlist=$(echo "$line" | cut -d, -f 2-)
+ clone=0 #False
+ if [ $verbose -gt 0 ]; then
+ echo "Operating on ${WORKDIR}${FS_SEPARATOR}${dir}"
+ fi
+ if [ ! -d "${WORKDIR}${FS_SEPARATOR}${dir}" ]; then
+ #clone repo
+ clone=$((clone + 1)) # Set true
+ mkdir -p "${WORKDIR}${FS_SEPARATOR}${dir}"
+ fi
+ cd "${WORKDIR}${FS_SEPARATOR}${dir}" || exit
+ if [ $clone -gt 0 ]; then
+ git init
+ fi
+ if [ $verbose -gt 1 ]; then
+ echo "Remote list: ${remlist}"
+ fi
+ echo "${remlist}" | awk -F ',' '{for (i = 1; i <= NF; i++) {printf "%s \n", $i}; printf "\n"}' | while read -r r || [ -n "$r" ]; do
+ remoteName=$(echo "$r" | awk -F'=' '{print $1}') # Just get the remote name
+ # Allow for blank / newlines during processing
+ if [ "${remoteName}" = "" ]; then continue; fi
+ if [ -d .git/refs/remotes/"$remoteName" ]; then
+ if [ $verbose -gt 0 ]; then
+ echo "Setting remote ${r}"
+ fi
+ echo "$r" | awk -F'=' '{ print $1, $2; }' | xargs -n 2 git remote set-url
+ else
- if [ $verbose -gt 0 ]; then
- echo "Adding remote ${r}"
- fi
- echo $r | awk -F'=' '{ print $1, $2; }' | xargs -n 2 git remote add
- fi
- done
- if [ $clone -gt 0 ]; then
- git fetch --all
- rev=$(git ls-remote origin | grep HEAD | cut -f 1)
- if [ $verbose -gt 0 ]; then
- echo "Rev: ${rev}"
- fi
- br=$(git ls-remote origin | grep "${rev}" | grep -v HEAD | cut -f 2 | cut -d / -f 3 | head -n 1)
- if [ $verbose -gt 0 ]; then
- echo "Branch: ${br}"
- fi
- git switch $br
- fi
-done <$DEFAULT_STATE
+ if [ $verbose -gt 0 ]; then
+ echo "Adding remote ${r}"
+ fi
+ echo "$r" | awk -F'=' '{ print $1, $2; }' | xargs -n 2 git remote add
+ fi
+ done
+ if [ $clone -gt 0 ]; then
+ git fetch --all
+ rev=$(git ls-remote origin | grep HEAD | cut -f 1)
+ if [ $verbose -gt 0 ]; then
+ echo "Rev: ${rev}"
+ fi
+ br=$(git ls-remote origin | grep "${rev}" | grep -v HEAD | cut -f 2 | cut -d / -f 3 | head -n 1)
+ if [ "$verbose" -gt 0 ]; then
+ echo "Branch: ${br}"
+ fi
+ git switch "$br"
+ fi
+done <"$DEFAULT_STATE"
# Update all remotes if we have the fetchgit command
-if [ $(command -v fetchgit) ]; then
- find $WORKDIR -name ".git" -exec fetchgit {} \;
+if [ "$(command -v fetchgit)" ]; then
+ find "$WORKDIR" -name ".git" -exec fetchgit {} \;
fi