feat(boot): farget PS1-prompt med OSVauco-statusindikator
This commit is contained in:
parent
47585e248c
commit
98dec052ad
|
|
@ -56,14 +56,42 @@ alias roadmap='cat ~/OSVauco/docs/VAUCO_OS_ROADMAP.md'
|
|||
alias session-log='cat ~/OSVauco/docs/OSVAUCO_OPAX_SESSION_LOG.md'
|
||||
|
||||
# =============================================================================
|
||||
# PROMPT_COMMAND — logger hver terminal-kommando med tidsstempel til session-log
|
||||
# PROMPT_COMMAND — logger + PS1-statusindikator
|
||||
# =============================================================================
|
||||
export OSVAUCO_SESSION_LOG="$SESSION_LOG"
|
||||
export OSVAUCO_SESSION_ID="$SESSION_ID"
|
||||
export OSVAUCO_DIR="$OSVAUCO_DIR"
|
||||
|
||||
_opax_last_cmd=''
|
||||
trap '_opax_last_cmd=$(history 1 | sed "s/^[ ]*[0-9]*[ ]*//")' DEBUG
|
||||
|
||||
# Beregn OSVauco-status for PS1 (kjører raskt, ingen nettverkskall)
|
||||
_opax_ps1_status() {
|
||||
local state=0 # 0=OK, 1=warn, 2=fail
|
||||
|
||||
# Auth: gcloud
|
||||
if ! gcloud auth print-access-token >/dev/null 2>&1; then state=2; fi
|
||||
|
||||
# Repo sync
|
||||
local local_sha remote_sha
|
||||
local_sha=$(git -C "$OSVAUCO_DIR" rev-parse --short HEAD 2>/dev/null || echo "")
|
||||
remote_sha=$(git -C "$OSVAUCO_DIR" ls-remote origin refs/heads/main 2>/dev/null | cut -c1-7 || echo "")
|
||||
if [[ -n "$remote_sha" && "$local_sha" != "$remote_sha" ]]; then
|
||||
[[ $state -lt 1 ]] && state=1
|
||||
fi
|
||||
|
||||
# GDrive mirror
|
||||
if [[ -f "$OSVAUCO_DIR/.gdrive-mirror-state" ]]; then
|
||||
local last_sha
|
||||
last_sha=$(grep '^LAST_SHA=' "$OSVAUCO_DIR/.gdrive-mirror-state" | cut -d= -f2-)
|
||||
if [[ "$last_sha" != "$local_sha" ]]; then
|
||||
[[ $state -lt 1 ]] && state=1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo $state
|
||||
}
|
||||
|
||||
_opax_log_cmd() {
|
||||
local exit_code=$?
|
||||
local cmd="$_opax_last_cmd"
|
||||
|
|
@ -78,11 +106,53 @@ _opax_log_cmd() {
|
|||
_opax_last_cmd=''
|
||||
}
|
||||
|
||||
# PS1: ❱ OSVauco ❱ i grønn/gul/rød + git-branch + sti + $
|
||||
# Format:
|
||||
# \n ❱ OSVauco ❱ git:(main) ~/OSVauco
|
||||
# $ _
|
||||
_opax_set_ps1() {
|
||||
local state
|
||||
state=$(_opax_ps1_status)
|
||||
|
||||
# ANSI escape-koder for PS1 (må være i \[ \] for korrekt linjelengde)
|
||||
local C_GREEN='\[\033[01;32m\]'
|
||||
local C_LGREEN='\[\033[38;5;82m\]' # lys grønn (glow-effekt)
|
||||
local C_YELLOW='\[\033[01;33m\]'
|
||||
local C_RED='\[\033[01;31m\]'
|
||||
local C_CYAN='\[\033[01;36m\]'
|
||||
local C_DIM='\[\033[2;37m\]'
|
||||
local C_BOLD='\[\033[1m\]'
|
||||
local C_NC='\[\033[0m\]'
|
||||
|
||||
local badge_color
|
||||
case $state in
|
||||
0) badge_color="$C_LGREEN" ;; # alt OK — lys grønn
|
||||
1) badge_color="$C_YELLOW" ;; # advarsel — gul
|
||||
2) badge_color="$C_RED" ;; # feil — rød
|
||||
esac
|
||||
|
||||
# Git-branch (stille hvis ikke i repo)
|
||||
local git_info=''
|
||||
local branch
|
||||
branch=$(git -C "$OSVAUCO_DIR" branch --show-current 2>/dev/null || echo "")
|
||||
[[ -n "$branch" ]] && git_info=" ${C_DIM}git:(${C_CYAN}${branch}${C_DIM})${C_NC}"
|
||||
|
||||
PS1="\n${badge_color}❱ OSVauco ❱${C_NC}${git_info} ${C_DIM}\w${C_NC}\n${badge_color}\$${C_NC} "
|
||||
}
|
||||
|
||||
if [[ "${PROMPT_COMMAND}" != *"_opax_log_cmd"* ]]; then
|
||||
PROMPT_COMMAND="_opax_log_cmd${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
|
||||
PROMPT_COMMAND="_opax_log_cmd; _opax_set_ps1${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
|
||||
else
|
||||
# Legg til PS1-oppdatering hvis den mangler
|
||||
if [[ "${PROMPT_COMMAND}" != *"_opax_set_ps1"* ]]; then
|
||||
PROMPT_COMMAND="${PROMPT_COMMAND}; _opax_set_ps1"
|
||||
fi
|
||||
fi
|
||||
export PROMPT_COMMAND
|
||||
|
||||
# Sett PS1 umiddelbart ved boot
|
||||
_opax_set_ps1
|
||||
|
||||
# =============================================================================
|
||||
# Load nvm
|
||||
# =============================================================================
|
||||
|
|
@ -158,7 +228,6 @@ printf "\n"
|
|||
|
||||
# =============================================================================
|
||||
# SECTION 2: OPAX HEALTH
|
||||
# Bruker /health (autentisert) — appen har ikke /ping
|
||||
# =============================================================================
|
||||
printf "${BOLD}${CYAN} [ OPAX HEALTH ]${NC}\n"
|
||||
HEALTH_URL="https://opax.vauco.no/health"
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user