Last active
September 13, 2024 01:10
-
-
Save annibal/43d73112b83063c07cad50cda6351bc6 to your computer and use it in GitHub Desktop.
repostatus - Shell code for Colmeia's Multi-Repo status quick management
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ... | |
# export ZSH="$HOME/.oh-my-zsh" | |
# ZSH_THEME="robbyrussell" | |
# ... | |
# source $ZSH/oh-my-zsh.sh | |
# ... | |
source ~/scripts/repostatus.sh; | |
colmrepostatus() { | |
#clear | |
repostatus ./server ./client ./core ./core-server ./colm* | |
} | |
#... | |
# if [[ -n $ZSH_INIT_COMMAND ]]; then | |
# eval "$ZSH_INIT_COMMAND" | |
# fi | |
#... |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
repostatus() { | |
FG_C="\033[38;5;4m"; | |
# ForeGround _ Cyan, Magenta, Yellow, blacK, Red | |
FG_K="\033[38;5;0m" | |
FG_R="\033[38;5;1m" | |
FG_G="\033[38;5;2m" | |
FG_Y="\033[38;5;3m" | |
FG_B="\033[38;5;4m" | |
FG_M="\033[38;5;5m" | |
FG_C="\033[38;5;6m" | |
FG_W="\033[38;5;7m" | |
# ForeGround _ Bright Cyan, Bright Magenta, Bright Yellow, Bright blacK, Bright Red | |
FG_BK="\033[38;5;8m" | |
FG_BR="\033[38;5;9m" | |
FG_BG="\033[38;5;10m" | |
FG_BY="\033[38;5;11m" | |
FG_BB="\033[38;5;12m" | |
FG_BM="\033[38;5;13m" | |
FG_BC="\033[38;5;14m" | |
FG_BW="\033[38;5;15m" | |
# Reset all Colors | |
RSTCOL="\033[0m"; | |
# ForeGround _ Extended Gray 1, 2, 3 | |
FG_EG1="\033[38;5;239m"; | |
FG_EG2="\033[38;5;243m"; | |
FG_EG3="\033[38;5;247m"; | |
FG_EG4="\033[38;5;251m"; | |
FG_EG5="\033[38;5;255m"; | |
# ┫ | |
BX_H="${RSTCOL}${FG_EG1}┃${RSTCOL}\n${FG_EG1}┣━┯┫${RSTCOL}" | |
ARROW_ITEM="${RSTCOL}${FG_EG1}┃ ├───➜${RSTCOL} " | |
ARROW_ITEMLAST="${RSTCOL}${FG_EG1}┃ └───➜${RSTCOL} " | |
BX_HL="${RSTCOL}${FG_EG1}┃${RSTCOL}\n${FG_EG1}┗━┯┫${RSTCOL}" | |
ARROW_LASTITEM="${RSTCOL}${FG_EG1} ├───➜${RSTCOL} " | |
ARROW_LASTITEMLAST="${RSTCOL}${FG_EG1} └───➜${RSTCOL} " | |
if [ "$1" ]; then | |
folders=(); | |
for var in "$@"; do | |
folders+=( $var ); | |
done | |
len=${#folders[@]}; | |
i=0; | |
# echo "len=$len"; | |
# echo "i=$i"; | |
for folder in "$@"; do | |
if [ -d "$folder/.git" ]; then | |
ARROW_HEAD="${BX_H}"; | |
ARROW_LAST="${ARROW_ITEMLAST}"; | |
ARROW_IT="${ARROW_ITEM}"; | |
VCOL="${RSTCOL}${FG_EG1}┃ │ " | |
i=$(($i + 1)); | |
if [ $i -eq $len ]; then | |
ARROW_HEAD="${BX_HL}"; | |
ARROW_LAST="${ARROW_LASTITEMLAST}"; | |
ARROW_IT="${ARROW_LASTITEM}"; | |
VCOL="${RSTCOL}${FG_EG1} │ " | |
fi | |
echo -n "${ARROW_HEAD} ${FG_G}${folder}${RSTCOL}${FG_EG1} ┠"; | |
FILL=$(($COLUMNS - ${#folder} - 11)); | |
printf '%.s─' $(seq 1 $FILL); | |
echo "${RSTCOL}"; | |
cd $folder; | |
if [ -L node_modules ]; then | |
echo "${ARROW_IT}${FG_BY}node_modules ${FG_EG1}:${RSTCOL} sym link" | |
else | |
if [ -d node_modules ]; then | |
nodemods=$(ls node_modules | wc -l); | |
echo -n "${ARROW_IT}${FG_BC}node_modules ${FG_EG1}:${RSTCOL} $nodemods deps"; | |
else | |
echo -n "${ARROW_IT}${FG_BR}node_modules ${FG_EG1}:${RSTCOL} ${FG_BR}✕${RSTCOL} ${FG_EG2}not found${RSTCOL}" | |
fi | |
echo -n " ${FG_EG1}¦${RSTCOL} " | |
if [ -e package-lock.json ]; | |
then echo -n "${FG_BG}✓ ${FG_EG5}npm${RSTCOL}" | |
else echo -n "${FG_BR}✕ ${FG_EG2}npm${RSTCOL}" | |
fi | |
echo -n " ${FG_EG1}¦${RSTCOL} " | |
if [ -e yarn.lock ]; | |
then echo -n "${FG_BG}✓ ${FG_EG5}yarn${RSTCOL}" | |
else echo -n "${FG_BR}✕ ${FG_EG2}yarn${RSTCOL}" | |
fi | |
echo -n " ${FG_EG1}¦${RSTCOL} " | |
if [ -e pnpm-lock.yaml ]; | |
then echo -n "${FG_BG}✓ ${FG_EG5}pnpm${RSTCOL}" | |
else echo -n "${FG_BR}✕ ${FG_EG2}pnpm${RSTCOL}" | |
fi | |
echo -n "\n" | |
fi | |
if [ -L node_modules/@colmeia ]; then | |
echo "${ARROW_IT}${FG_BY}@colmeia ${FG_EG1}:${RSTCOL} sym link" | |
else | |
if [ -d node_modules/@colmeia ]; then | |
incolmeia=$(ls node_modules/@colmeia); | |
echo -n "${ARROW_IT}${FG_BC}@colmeia ${FG_EG1}: ${RSTCOL}" | |
ls -C --format=commas node_modules/@colmeia | |
# echo "${FG_EG1}: (${RSTCOL} " | |
# echo " ${FG_EG1})${RSTCOL}" | |
else | |
echo "${ARROW_IT}${FG_BR}@colmeia ${FG_EG1}:${RSTCOL} ${FG_BR}✕${RSTCOL} ${FG_EG2}not found${RSTCOL}" | |
fi | |
fi | |
branch=$(git branch --show-current); | |
if [ "$branch" = "homolog" ] || [ "$branch" = "devel" ]; | |
then echo "${ARROW_IT}${FG_EG5}git branch ${FG_EG1}:${RSTCOL} ${FG_EG5}$branch${RSTCOL}" | |
else echo "${ARROW_IT}${FG_BC}git branch ${FG_EG1}:${RSTCOL} $branch" | |
fi | |
ARROW_IT=$ARROW_LAST; | |
gstats=$(git --no-pager diff --shortstat) | |
if [ ! "$gstats" ]; then | |
gstats=" ✓ ${FG_EG2}working tree clean${RSTCOL}"; | |
echo "${ARROW_IT}${FG_BC}git status ${FG_EG1}:${FG_BG}$gstats${RSTCOL}"; | |
else | |
echo "${ARROW_IT}${FG_BY}git status ${FG_EG1}:${RSTCOL}$gstats"; | |
fi | |
cd - >/dev/null; | |
fi | |
done | |
else | |
echo "usage: repostatus ./server ./client ./co* ..."; | |
fi | |
echo ""; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment