fix: restore osvauco-opax-boot.sh from archived, create preflight.sh + health-check alias targets
This commit is contained in:
parent
d44d6a11a7
commit
d9119035fe
4
scripts/osvauco-health-check.sh
Normal file
4
scripts/osvauco-health-check.sh
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
#!/usr/bin/env bash
|
||||
# osvauco-health-check.sh — alias 'hc'
|
||||
# Viderekobler til scripts/health-check.sh
|
||||
exec "$(dirname "$0")/health-check.sh" "$@"
|
||||
152
scripts/osvauco-opax-boot.sh
Normal file
152
scripts/osvauco-opax-boot.sh
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# osvauco-opax-boot.sh — OSVauco OPAX session-starter
|
||||
# Bruk: source ~/OSVauco/scripts/osvauco-opax-boot.sh
|
||||
# NB: Må sources (ikke bash) for PROMPT_COMMAND + opax_logg_slutt.
|
||||
# =============================================================================
|
||||
|
||||
OSVAUCO_DIR="$HOME/OSVauco"
|
||||
ROADMAP="$OSVAUCO_DIR/docs/VAUCO_OS_ROADMAP.md"
|
||||
TODO="$OSVAUCO_DIR/docs/TODO.md"
|
||||
SESSION_LOG="$OSVAUCO_DIR/docs/OSVAUCO_OPAX_SESSION_LOG.md"
|
||||
|
||||
GREEN="$(tput setaf 2 || true)"
|
||||
RED="$(tput setaf 1 || true)"
|
||||
YELLOW="$(tput setaf 3 || true)"
|
||||
CYAN="$(tput setaf 6 || true)"
|
||||
BOLD="$(tput bold || true)"
|
||||
DIM="\033[2m"
|
||||
NC="$(tput sgr0 || true)"
|
||||
|
||||
SESSION_ID="$(date '+%Y%m%d-%H%M%S')"
|
||||
|
||||
# =============================================================================
|
||||
# AUTO-AUTH RENEWAL
|
||||
# =============================================================================
|
||||
ADC_SCOPE_FILE="$HOME/.config/gcloud/.osvauco-adc-renewed"
|
||||
|
||||
printf "${BOLD}${CYAN} [ AUTH ]${NC}\n"
|
||||
if ! gcloud auth print-access-token >/dev/null 2>&1; then
|
||||
printf " ${YELLOW}⚠ gcloud auth utløpt — logger inn...${NC}\n"
|
||||
gcloud auth login --no-launch-browser
|
||||
else
|
||||
printf " ${DIM}✦ gcloud auth OK${NC}\n"
|
||||
fi
|
||||
|
||||
# ADC sjekk
|
||||
NEED_ADC_LOGIN=0
|
||||
if ! gcloud auth application-default print-access-token >/dev/null 2>&1; then
|
||||
NEED_ADC_LOGIN=1
|
||||
elif [[ -f "$ADC_SCOPE_FILE" ]]; then
|
||||
if [[ $(($(date +%s) - $(stat -c %Y "$ADC_SCOPE_FILE"))) -gt 28800 ]]; then
|
||||
NEED_ADC_LOGIN=1
|
||||
fi
|
||||
else
|
||||
NEED_ADC_LOGIN=1
|
||||
fi
|
||||
|
||||
if [[ $NEED_ADC_LOGIN -eq 1 ]]; then
|
||||
printf " ${YELLOW}⚠ ADC utløpt eller gammel — fornyer...${NC}\n"
|
||||
gcloud auth application-default login --no-launch-browser \
|
||||
--scopes="https://www.googleapis.com/auth/cloud-platform"
|
||||
touch "$ADC_SCOPE_FILE"
|
||||
else
|
||||
printf " ${DIM}✦ ADC OK${NC}\n"
|
||||
fi
|
||||
printf " ${GREEN}✦ Auth klar${NC}\n\n"
|
||||
|
||||
clear
|
||||
|
||||
# =============================================================================
|
||||
# BOOT UI
|
||||
# =============================================================================
|
||||
printf "${CYAN}OSVauco · OPAX ❱ %s · %s${NC}\n" "$SESSION_ID" "propane-will-491900-m5"
|
||||
printf "${DIM}────────────────────────────────────────────────────────────${NC}\n"
|
||||
|
||||
printf "${BOLD}SERVICES${NC}\n"
|
||||
check_service() {
|
||||
printf " %-12s " "$1"
|
||||
if eval "$2" >/dev/null 2>&1; then printf "${GREEN}✦ OK${NC}\n"; else printf "${RED}✗ FAIL${NC}\n"; fi
|
||||
}
|
||||
check_service "Cloud Run" "curl -s -f -H \"Authorization: Bearer $(gcloud auth print-identity-token)\" https://opax.vauco.no/health"
|
||||
check_service "GitHub" "gh auth status"
|
||||
check_service "Git Remote" "git -C $OSVAUCO_DIR ls-remote origin refs/heads/main"
|
||||
|
||||
printf "${DIM}────────────────────────────────────────────────────────────${NC}\n"
|
||||
|
||||
printf "${BOLD}SYSTEM${NC}\n"
|
||||
LOAD=$(cat /proc/loadavg | awk '{print $1}')
|
||||
MEM=$(free -h | grep Mem | awk '{printf "%s/%s", $3, $2}')
|
||||
DISK=$(df -h / | tail -1 | awk '{print $5}')
|
||||
printf " %-12s Load: %s · RAM: %s · /: %s\n" "Resources" "$LOAD" "$MEM" "$DISK"
|
||||
printf " %-12s %s\n" "Uptime" "$(uptime -p | sed 's/up //')"
|
||||
|
||||
printf "${DIM}────────────────────────────────────────────────────────────${NC}\n"
|
||||
|
||||
printf "${BOLD}NEXT${NC}\n"
|
||||
NEXT_ROADMAP=$(awk '/^## NEXT/{f=1;next} f && /^## /{f=0} f && /^- \[ \]/{print;exit}' "$ROADMAP" 2>/dev/null || true)
|
||||
printf " ${GREEN}▶ %s${NC}\n" "${NEXT_ROADMAP:-Ingen oppgave i roadmap}"
|
||||
|
||||
printf "${DIM}────────────────────────────────────────────────────────────${NC}\n"
|
||||
printf "${BOLD}QUICK COMMANDS${NC}\n"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "ca" "cost-audit" "cl" "cost-lens"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "cg" "cost-guard" "hc" "health-check"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "pf" "preflight" "st" "smoke-test"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "rl" "roadmap" "sl" "session-log"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "ms" "mirror-sync" "g" "gemini"
|
||||
printf " %-4s %-12s %-4s %-12s\n" "sol" "session-exit" "" ""
|
||||
printf "\n── ready ── SESSION %s ──\n\n" "$SESSION_ID"
|
||||
|
||||
# =============================================================================
|
||||
# NVM
|
||||
# =============================================================================
|
||||
export NVM_DIR="$HOME/.nvm"
|
||||
[[ -s "$NVM_DIR/nvm.sh" ]] && source "$NVM_DIR/nvm.sh"
|
||||
|
||||
# =============================================================================
|
||||
# AVSLUTT-FUNKSJON
|
||||
# =============================================================================
|
||||
sol() {
|
||||
printf "\n ${BOLD}${CYAN}Sesjonslogg — avslutt${NC}\n"
|
||||
printf " Hva ble gjort? (LØST / ULØST)\n > "
|
||||
read -r DONE_DESC
|
||||
[[ -z "$DONE_DESC" ]] && DONE_DESC="(ingen notat)"
|
||||
printf " Uløste problemer? (Enter for ingen)\n > "
|
||||
read -r UNSOLVED
|
||||
[[ -z "$UNSOLVED" ]] && UNSOLVED="ingen"
|
||||
cat >> "$SESSION_LOG" << EOF
|
||||
|
||||
### Sesjonsavslutning
|
||||
- Gjort : $DONE_DESC
|
||||
- Uløst : $UNSOLVED
|
||||
- Slutt : $(date '+%Y-%m-%d %H:%M %Z')
|
||||
EOF
|
||||
printf " ${GREEN}[OK]${NC} Logg oppdatert\n"
|
||||
cd "$OSVAUCO_DIR"
|
||||
git add docs/OSVAUCO_OPAX_SESSION_LOG.md 2>/dev/null || true
|
||||
if ! git diff --cached --quiet; then
|
||||
git commit -m "chore(session): logg sesjon $SESSION_ID — $DONE_DESC"
|
||||
git push origin main
|
||||
printf " ${GREEN}[OK]${NC} Pushet → GitHub\n\n"
|
||||
fi
|
||||
}
|
||||
export -f sol 2>/dev/null || true
|
||||
alias sol='sol'
|
||||
|
||||
# =============================================================================
|
||||
# GEMINI-START
|
||||
# =============================================================================
|
||||
read -r -p " Starte Gemini-CLI nå? [y/N]: " ANSWER
|
||||
case "$ANSWER" in
|
||||
y|Y)
|
||||
if ! command -v gemini &>/dev/null; then
|
||||
printf " ${RED}[XX]${NC} gemini ikke funnet.\n"
|
||||
else
|
||||
cd "$OSVAUCO_DIR"
|
||||
gemini
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
echo " OK — kjør 'gemini' når du er klar. 🚀"
|
||||
;;
|
||||
esac
|
||||
65
scripts/preflight.sh
Normal file
65
scripts/preflight.sh
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
#!/usr/bin/env bash
|
||||
# preflight.sh — alias 'pf'
|
||||
# Sjekker auth, project, .env og git status
|
||||
set -euo pipefail
|
||||
|
||||
GREEN="$(tput setaf 2)"; RED="$(tput setaf 1)"; YELLOW="$(tput setaf 3)"; NC="$(tput sgr0)"; BOLD="$(tput bold)"
|
||||
|
||||
ok() { printf " ${GREEN}✦ OK${NC} %s\n" "$1"; }
|
||||
fail() { printf " ${RED}✗ FAIL${NC} %s\n" "$1"; }
|
||||
warn() { printf " ${YELLOW}⚠ WARN${NC} %s\n" "$1"; }
|
||||
|
||||
printf "${BOLD}OSVauco Preflight${NC}\n"
|
||||
printf "────────────────────────────────\n"
|
||||
|
||||
# 1. gcloud auth
|
||||
if gcloud auth print-access-token >/dev/null 2>&1; then
|
||||
ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format='value(account)' 2>/dev/null | head -1)
|
||||
ok "gcloud auth ($ACCOUNT)"
|
||||
else
|
||||
fail "gcloud auth — ikke innlogget"
|
||||
echo ""
|
||||
echo " Kjør: gcloud auth login --no-launch-browser"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 2. ADC
|
||||
if gcloud auth application-default print-access-token >/dev/null 2>&1; then
|
||||
ok "ADC (application-default)"
|
||||
else
|
||||
warn "ADC ikke satt — kjører: gcloud auth application-default login --no-launch-browser"
|
||||
gcloud auth application-default login --no-launch-browser \
|
||||
--scopes="https://www.googleapis.com/auth/cloud-platform"
|
||||
fi
|
||||
|
||||
# 3. Prosjekt
|
||||
PROJECT=$(gcloud config get-value project 2>/dev/null)
|
||||
if [[ "$PROJECT" == "propane-will-491900-m5" ]]; then
|
||||
ok "GCP project ($PROJECT)"
|
||||
else
|
||||
warn "Feil prosjekt: '$PROJECT' — setter til propane-will-491900-m5"
|
||||
gcloud config set project propane-will-491900-m5
|
||||
fi
|
||||
|
||||
# 4. .env
|
||||
if [[ -f "$HOME/OSVauco/.env" ]]; then
|
||||
ok ".env eksisterer"
|
||||
else
|
||||
fail ".env mangler — IKKE opprett fra .env.example"
|
||||
echo " Hent fra Secret Manager:"
|
||||
echo " gcloud secrets versions access latest --secret=osvauco-env --project=propane-will-491900-m5 > .env"
|
||||
fi
|
||||
|
||||
# 5. Git status
|
||||
cd "$HOME/OSVauco"
|
||||
GIT_BRANCH=$(git branch --show-current 2>/dev/null)
|
||||
GIT_DIRTY=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
|
||||
if [[ "$GIT_BRANCH" == "main" ]]; then
|
||||
ok "git branch (main)"
|
||||
else
|
||||
warn "git branch er '$GIT_BRANCH' — forventet main"
|
||||
fi
|
||||
[[ "$GIT_DIRTY" -gt 0 ]] && warn "$GIT_DIRTY ustaged endringer" || ok "git working tree (rent)"
|
||||
|
||||
printf "────────────────────────────────\n"
|
||||
echo ""
|
||||
Loading…
Reference in New Issue
Block a user