fix: osvauco-opax-boot.sh — roadmap NESTE, gh i AUTH, enkel OPAX-ping, session-logg med gjort/uløst
This commit is contained in:
parent
eb1b027067
commit
36195a2135
|
|
@ -1,167 +1,202 @@
|
|||
#!/usr/bin/env bash
|
||||
# OSVauco OPAX boot — med session-logg, GitHub-sjekk og fargekodet statuslinje
|
||||
# =============================================================================
|
||||
# osvauco-opax-boot.sh — OSVauco OPAX session-starter
|
||||
# Manuell bruk: bash ~/OSVauco/scripts/osvauco-opax-boot.sh
|
||||
# IKKE i ~/.bashrc — det er boot.sh sin jobb
|
||||
# =============================================================================
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
PROJECT_ID="propane-will-491900-m5"
|
||||
REGION="us-central1"
|
||||
ACCOUNT="chris.christiansen@vauco.no"
|
||||
REPO="OSVauco"
|
||||
BRANCH="main"
|
||||
# Phase 2 LIVE: pinger produksjonsdomene, ikke intern Cloud Run-URL
|
||||
PING_URL="https://opax.vauco.no/ping"
|
||||
|
||||
LOG_FILE="$HOME/OSVauco/docs/OSVAUCO_OPAX_SESSION_LOG.md"
|
||||
DOCS_DIR="$HOME/OSVauco/docs"
|
||||
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)"
|
||||
BLUE="$(tput setaf 4 || true)"
|
||||
CYAN="$(tput setaf 6 || true)"
|
||||
BOLD="$(tput bold || true)"
|
||||
RESET="$(tput sgr0 || true)"
|
||||
DIM="\033[2m"
|
||||
NC="$(tput sgr0 || true)"
|
||||
|
||||
OK="${GREEN}[OK]${NC}"
|
||||
WARN="${YELLOW}[!!]${NC}"
|
||||
FAIL="${RED}[XX]${NC}"
|
||||
|
||||
SESSION_ID="$(date '+%Y%m%d-%H%M%S')"
|
||||
|
||||
step() {
|
||||
local label="$1"
|
||||
printf " ${BLUE}›${RESET} %-45s" "$label"
|
||||
}
|
||||
clear
|
||||
|
||||
done_ok() {
|
||||
echo " ${GREEN}[OK]${RESET}"
|
||||
}
|
||||
cat << 'BANNER'
|
||||
|
||||
done_info() {
|
||||
echo " ${BLUE}[INFO]${RESET}"
|
||||
}
|
||||
============================================================
|
||||
O S V A U C O · O P A X S E S S I O N
|
||||
============================================================
|
||||
BANNER
|
||||
printf " Session : ${CYAN}${BOLD}%s${NC}\n" "$SESSION_ID"
|
||||
printf " Project : %s\n" "${PROJECT_ID:-propane-will-491900-m5}"
|
||||
printf " $(date '+%Y-%m-%d %H:%M %Z')\n"
|
||||
printf " ----------------------------------------------------\n\n"
|
||||
|
||||
done_fail() {
|
||||
echo " ${RED}[FAIL]${RESET}"
|
||||
}
|
||||
|
||||
# Fjern Cloud Shell-velkomst ved å rydde skjermen før banneret
|
||||
clear || true
|
||||
# =============================================================================
|
||||
# SECTION 1: AUTH
|
||||
# =============================================================================
|
||||
printf "${BOLD}${CYAN} [ AUTH ]${NC}\n"
|
||||
|
||||
echo "============================================================"
|
||||
echo " ${BOLD}O S V A U C O · O P A X${RESET}"
|
||||
echo "============================================================"
|
||||
echo
|
||||
|
||||
echo "Boot-script for OPAX-MCP (Cloud Run)"
|
||||
echo
|
||||
|
||||
echo " Project : $PROJECT_ID"
|
||||
echo " Region : $REGION"
|
||||
echo " Account : $ACCOUNT"
|
||||
echo " Repo : $REPO ($BRANCH)"
|
||||
echo " Session : $SESSION_ID"
|
||||
echo " HUB_URL : $PING_URL"
|
||||
echo
|
||||
|
||||
# Vis siste NESTE OPPGAVE fra session-logg
|
||||
if [ -f "$LOG_FILE" ]; then
|
||||
LAST_LINE=$(tail -n 1 "$LOG_FILE" || true)
|
||||
# Prøv å finne siste NESTE OPPGAVE-blokk
|
||||
NESTE=$(awk '/^## NESTE OPPGAVE/{found=1; next} found && /^## /{found=0} found{print}' "$LOG_FILE" | tail -5 || true)
|
||||
# .env
|
||||
if [[ -f "$OSVAUCO_DIR/.env" ]]; then
|
||||
set -o allexport; source "$OSVAUCO_DIR/.env"; set +o allexport
|
||||
printf " $OK .env ${DIM}PROJECT_ID=${PROJECT_ID}${NC}\n"
|
||||
else
|
||||
LAST_LINE="(ingen tidligere sesjoner logget ennå)"
|
||||
NESTE=""
|
||||
printf " $FAIL .env MISSING ${YELLOW}cp .env.example .env${NC}\n"
|
||||
fi
|
||||
|
||||
echo " Forrige : $LAST_LINE"
|
||||
if [ -n "$NESTE" ]; then
|
||||
echo
|
||||
echo " ${GREEN}${BOLD}▶ NESTE OPPGAVE:${RESET}"
|
||||
echo "$NESTE" | while IFS= read -r line; do
|
||||
echo " ${GREEN}$line${RESET}"
|
||||
done
|
||||
# gcloud
|
||||
if gcloud auth print-access-token >/dev/null 2>&1; then
|
||||
ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null)
|
||||
printf " $OK gcloud ${DIM}%s${NC}\n" "$ACCOUNT"
|
||||
else
|
||||
echo " ${YELLOW}⚠️ Ingen NESTE OPPGAVE funnet — sjekk docs/VAUCO_OS_ROADMAP.md${RESET}"
|
||||
fi
|
||||
echo
|
||||
|
||||
# Vis enkel changelog-oversikt for docs/
|
||||
step "Siste endringer i docs/ (git log)"
|
||||
if command -v git >/dev/null 2>&1 && [ -d "$DOCS_DIR" ]; then
|
||||
git -C "$HOME/OSVauco" log -5 --pretty='format:%C(yellow)%h%Creset %Cgreen%cd%Creset %C(bold)%s%Creset' --date=short -- docs 2>/dev/null || true
|
||||
echo
|
||||
done_info
|
||||
else
|
||||
echo " (git eller docs/-mappe ikke tilgjengelig)"
|
||||
done_info
|
||||
printf " $FAIL gcloud ${YELLOW}gcloud auth login --no-launch-browser${NC}\n"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
OPAX_OK=0
|
||||
GH_OK=0
|
||||
|
||||
# 1) Healthcheck mot OPAX-MCP produksjonsdomene
|
||||
step "Tester OPAX-MCP på: $PING_URL"
|
||||
if curl -fsS "$PING_URL" >/dev/null 2>&1; then
|
||||
OPAX_OK=1
|
||||
done_ok
|
||||
echo " ${GREEN}✅ OPAX-MCP: OK — https://opax.vauco.no${RESET}"
|
||||
# ADC
|
||||
if gcloud auth application-default print-access-token >/dev/null 2>&1; then
|
||||
printf " $OK ADC ${DIM}Application Default Credentials OK${NC}\n"
|
||||
else
|
||||
done_fail
|
||||
echo " ${RED}❌ OPAX-MCP: FEIL – sjekk Cloud Run / DNS${RESET}"
|
||||
printf " $WARN ADC ${YELLOW}gcloud auth application-default login${NC}\n"
|
||||
fi
|
||||
|
||||
echo
|
||||
# GitHub CLI
|
||||
if command -v gh >/dev/null 2>&1 && gh auth status >/dev/null 2>&1; then
|
||||
GH_USER=$(gh api user --jq .login 2>/dev/null || echo "ukjent")
|
||||
printf " $OK GitHub CLI ${DIM}gh → %s${NC}\n" "$GH_USER"
|
||||
else
|
||||
printf " $WARN GitHub CLI ${YELLOW}gh auth login (valgfritt)${NC}\n"
|
||||
fi
|
||||
|
||||
# 2) GitHub CLI-status
|
||||
step "Sjekker GitHub-innlogging (gh auth status)"
|
||||
if command -v gh >/dev/null 2>&1; then
|
||||
if gh auth status >/dev/null 2>&1; then
|
||||
GH_OK=1
|
||||
done_ok
|
||||
printf "\n"
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# SECTION 2: OPAX HEALTH
|
||||
# =============================================================================
|
||||
printf "${BOLD}${CYAN} [ OPAX HEALTH ]${NC}\n"
|
||||
PING_URL="https://opax.vauco.no/ping"
|
||||
if curl -fsS --max-time 5 "$PING_URL" >/dev/null 2>&1; then
|
||||
printf " $OK opax.vauco.no ${DIM}%s${NC}\n" "$PING_URL"
|
||||
else
|
||||
printf " $FAIL opax.vauco.no ${RED}NEDE — sjekk Cloud Run / DNS${NC}\n"
|
||||
fi
|
||||
printf "\n"
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# SECTION 3: NESTE OPPGAVE (fra ROADMAP + TODO)
|
||||
# =============================================================================
|
||||
printf "${BOLD}${CYAN} [ NESTE OPPGAVE ]${NC}\n"
|
||||
|
||||
# Hent første ugjorte oppgave under ## NEXT fra ROADMAP
|
||||
if [[ -f "$ROADMAP" ]]; then
|
||||
NEXT_ROADMAP=$(awk '/^## NEXT/{f=1;next} f && /^## /{f=0} f && /^- \[ \]/{print;exit}' "$ROADMAP")
|
||||
if [[ -n "$NEXT_ROADMAP" ]]; then
|
||||
printf " ${GREEN}${BOLD}▶ ROADMAP NEXT:${NC}\n"
|
||||
printf " ${GREEN}%s${NC}\n" "$NEXT_ROADMAP"
|
||||
else
|
||||
done_info
|
||||
echo " ${YELLOW}ℹ️ gh ikke logget inn — kjør 'gh auth login' senere hvis du trenger GitHub-CLI.${RESET}"
|
||||
printf " ${DIM}(ingen åpne punkt under ## NEXT i ROADMAP)${NC}\n"
|
||||
fi
|
||||
else
|
||||
done_info
|
||||
echo " ${YELLOW}ℹ️ 'gh' ikke installert i denne shellen.${RESET}"
|
||||
printf " ${WARN} ROADMAP ikke funnet: %s\n" "$ROADMAP"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
||||
mkdir -p "$(dirname "$LOG_FILE")"
|
||||
|
||||
# 3) Session-logg
|
||||
step "Logger sesjon til OSVAUCO_OPAX_SESSION_LOG.md"
|
||||
SESSION_DESC="${OSV_OPAX_SESSION_DESC:-"(ingen beskrivelse)"}"
|
||||
|
||||
echo "$SESSION_ID | $PROJECT_ID | $REGION | $ACCOUNT | OPAX=$OPAX_OK | GH=$GH_OK | $SESSION_DESC" >> "$LOG_FILE" && done_ok || done_fail
|
||||
|
||||
echo " Logg : ${GREEN}oppdatert${RESET} → $LOG_FILE"
|
||||
|
||||
echo
|
||||
|
||||
# 4) Oppsummering
|
||||
if [ "$OPAX_OK" -eq 1 ] && [ "$GH_OK" -eq 1 ]; then
|
||||
echo " ${GREEN}▶ OSVAUCO/OPAX READY — opax.vauco.no + GitHub verifisert.${RESET}"
|
||||
elif [ "$OPAX_OK" -eq 1 ]; then
|
||||
echo " ${GREEN}▶ OSVAUCO/OPAX READY — opax.vauco.no OK. GitHub CLI ikke aktiv.${RESET}"
|
||||
else
|
||||
echo " ${RED}▶ OSVAUCO/OPAX PARTIAL — sjekk status over før du jobber videre.${RESET}"
|
||||
# Hent åpne punkter fra TODO.md (maks 3)
|
||||
if [[ -f "$TODO" ]]; then
|
||||
TODO_ITEMS=$(grep -m3 '^- \[ \]' "$TODO" 2>/dev/null || true)
|
||||
if [[ -n "$TODO_ITEMS" ]]; then
|
||||
printf " ${YELLOW}${BOLD}▶ TODO:${NC}\n"
|
||||
while IFS= read -r line; do
|
||||
printf " ${YELLOW}%s${NC}\n" "$line"
|
||||
done <<< "$TODO_ITEMS"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo
|
||||
printf "\n"
|
||||
|
||||
# 5) Valgfri Gemini-oppstart
|
||||
step "Starte Gemini-CLI i ~/OSVauco?"
|
||||
read -r -p " [y/N]: " ANSWER
|
||||
|
||||
# =============================================================================
|
||||
# SECTION 4: SESSION-LOGG
|
||||
# Ber deg beskrive hva du skal gjøre — logger ved start og spør ved slutt
|
||||
# =============================================================================
|
||||
mkdir -p "$(dirname "$SESSION_LOG")"
|
||||
|
||||
printf "${BOLD}${CYAN} [ SESSION ]${NC}\n"
|
||||
printf " Hva skal du jobbe med i dag?\n"
|
||||
printf " ${DIM}(skriv kort beskrivelse, trykk Enter)${NC}\n > "
|
||||
read -r SESSION_DESC
|
||||
[[ -z "$SESSION_DESC" ]] && SESSION_DESC="(ingen beskrivelse)"
|
||||
|
||||
# Skriv session-header til logg
|
||||
cat >> "$SESSION_LOG" << EOF
|
||||
|
||||
---
|
||||
## Session: $SESSION_ID
|
||||
- Tid : $(date '+%Y-%m-%d %H:%M %Z')
|
||||
- Bruker : ${ACCOUNT:-ukjent}
|
||||
- OPAX : $(curl -fsS --max-time 3 "https://opax.vauco.no/ping" >/dev/null 2>&1 && echo OK || echo NEDE)
|
||||
- Mål : $SESSION_DESC
|
||||
EOF
|
||||
|
||||
printf " $OK Logg startet ${DIM}→ docs/OSVAUCO_OPAX_SESSION_LOG.md${NC}\n\n"
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# QUICK REFERENCE
|
||||
# =============================================================================
|
||||
printf "${DIM} ---------------------------------------------------${NC}\n"
|
||||
printf " ${CYAN}${BOLD}HURTIGKOMMANDOER${NC}\n"
|
||||
printf " ${DIM}gemini${NC} → Gemini TUI (OPAX-MCP)\n"
|
||||
printf " ${DIM}cost-audit${NC} → bash scripts/cost-audit.sh\n"
|
||||
printf " ${DIM}roadmap${NC} → cat docs/VAUCO_OS_ROADMAP.md\n"
|
||||
printf " ${DIM}session-log${NC} → cat docs/OSVAUCO_OPAX_SESSION_LOG.md\n"
|
||||
printf "${DIM} ---------------------------------------------------${NC}\n\n"
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# AVSLUTT-HOOK (kjøres når du er ferdig — skriv: opax-logg-slutt)
|
||||
# =============================================================================
|
||||
opax-logg-slutt() {
|
||||
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
|
||||
- Gjort : $DONE_DESC
|
||||
- Uløst : $UNSOLVED
|
||||
- Slutt : $(date '+%Y-%m-%d %H:%M %Z')
|
||||
EOF
|
||||
printf " ${GREEN}[OK]${NC} Logg oppdatert → docs/OSVAUCO_OPAX_SESSION_LOG.md\n\n"
|
||||
}
|
||||
export -f opax-logg-slutt 2>/dev/null || true
|
||||
printf " ${DIM}Når du er ferdig → skriv: ${NC}${BOLD}opax-logg-slutt${NC}\n\n"
|
||||
|
||||
|
||||
# =============================================================================
|
||||
# VALGFRI GEMINI-START
|
||||
# =============================================================================
|
||||
read -r -p " Starte Gemini-CLI nå? [y/N]: " ANSWER
|
||||
case "$ANSWER" in
|
||||
y|Y)
|
||||
done_ok
|
||||
echo "[OSVauco/OPAX] Starter Gemini-CLI..."
|
||||
cd "$HOME/OSVauco"
|
||||
echo
|
||||
echo " [OSVauco] Starter Gemini-CLI fra ~/OSVauco..."
|
||||
cd "$OSVAUCO_DIR"
|
||||
gemini
|
||||
;;
|
||||
*)
|
||||
done_info
|
||||
echo "[OSVauco/OPAX] OK, holder deg i shell. Kjør 'gemini' når du vil inn i TUI."
|
||||
echo
|
||||
echo " [OSVauco] OK — kjør 'gemini' når du vil. God session! 🚀"
|
||||
;;
|
||||
esac
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user