#!/usr/bin/env bash # ============================================================================= # shell-init.sh — OSVauco terminal startup hook # Legg til i ~/.bashrc: # source ~/OSVauco/scripts/shell-init.sh # ============================================================================= OSVAUCO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")/.." && pwd)" ENV_FILE="${OSVAUCO_DIR}/.env" GREEN="$(tput setaf 2 2>/dev/null || true)" RED="$(tput setaf 1 2>/dev/null || true)" YELLOW="$(tput setaf 3 2>/dev/null || true)" CYAN="$(tput setaf 6 2>/dev/null || true)" BOLD="$(tput bold 2>/dev/null || true)" DIM="\033[2m" NC="$(tput sgr0 2>/dev/null || true)" clear cat << 'BANNER' ============================================================ / _ \ / __| \ / / _ \ | | | |/ __/ _ \ | (_) | \__ \ \ /'\V //_/ | |_| | (_| (_) | \___/ |___/ \_/ /_/ |___/ \___\___/ OPAX Operator Platform // propane-will-491900-m5 BOOT 2026-05-13 -- us-central1 ============================================================ BANNER # ── Auth-sjekk ──────────────────────────────────────────────────────────── printf " | AUTH |\n" GCLOUD_OK=0 ADC_OK=0 ENV_OK=0 if gcloud auth print-access-token >/dev/null 2>&1; then GCLOUD_OK=1 fi if gcloud auth application-default print-access-token >/dev/null 2>&1; then ADC_OK=1 fi if [[ -f "$ENV_FILE" ]]; then ENV_OK=1 set -o allexport # shellcheck disable=SC1090 source "$ENV_FILE" set +o allexport fi if [[ $GCLOUD_OK -eq 1 ]]; then ACCOUNT=$(gcloud auth list --filter=status:ACTIVE --format="value(account)" 2>/dev/null || echo "ukjent") printf " | ${GREEN}[OK]${NC} gcloud \xe2\x86\x92 %s\n" "$ACCOUNT" else printf " | ${RED}[XX]${NC} gcloud IKKE autentisert\n" printf " | Kj\xc3\xb8r: gcloud auth login --no-launch-browser\n" fi if [[ $ADC_OK -eq 1 ]]; then printf " | ${GREEN}[OK]${NC} ADC (Application Default Credentials)\n" else printf " | ${YELLOW}[!!]${NC} ADC mangler Run: gcloud auth application-default login\n" fi if [[ $ENV_OK -eq 1 ]]; then printf " | ${GREEN}[OK]${NC} .env lastet (PROJECT_ID=%s)\n" "${PROJECT_ID:-?}" else printf " | ${RED}[XX]${NC} .env MISSING Run: cp .env.example .env\n" fi printf " |\n" # Sett gcloud-prosjekt stille if [[ $GCLOUD_OK -eq 1 && -n "${PROJECT_ID:-}" ]]; then gcloud config set project "${PROJECT_ID}" >/dev/null 2>&1 || true gcloud config set compute/region "${REGION:-us-central1}" >/dev/null 2>&1 || true fi # ── Kostnadsmåler ───────────────────────────────────────────────────────── START_EPOCH=1778680800 # 2026-05-13T14:00:00Z (verifisert: date -d "2026-05-13 14:00:00 UTC" +%s) NOW_EPOCH=$(date +%s) ELAPSED_SEC=$(( NOW_EPOCH - START_EPOCH )) if [[ $ELAPSED_SEC -lt 0 ]]; then ELAPSED_SEC=0; fi ELAPSED_DAYS=$(( ELAPSED_SEC / 86400 )) ELAPSED_HRS=$(( (ELAPSED_SEC % 86400) / 3600 )) ELAPSED_MIN=$(( (ELAPSED_SEC % 3600) / 60 )) # ~$0.03/dag -> skalert x100000 for integer-matte USD_SCALED=$(( ELAPSED_SEC * 3000 / 86400 )) NOK_SCALED=$(( USD_SCALED * 1062 / 100 )) USD_INT=$(( USD_SCALED / 100000 )) USD_DEC=$(printf "%05d" $(( USD_SCALED % 100000 ))) NOK_INT=$(( NOK_SCALED / 100000 )) NOK_DEC=$(printf "%05d" $(( NOK_SCALED % 100000 ))) printf " | COST |\n" printf " | ${YELLOW}${BOLD}NOK: kr %d.%s${NC}\n" "$NOK_INT" "$NOK_DEC" printf " | ${GREEN}USD: \$%d.%s${NC}\n" "$USD_INT" "$USD_DEC" printf " | ${DIM}Tid: %dd %02dh %02dm (fra 2026-05-13)${NC}\n" "$ELAPSED_DAYS" "$ELAPSED_HRS" "$ELAPSED_MIN" printf " |\n" # Rask idle-ressurs-sjekk if [[ $GCLOUD_OK -eq 1 && -n "${PROJECT_ID:-}" ]]; then VM_COUNT=$(gcloud compute instances list --project="${PROJECT_ID}" \ --format='value(name)' --filter='status=RUNNING' 2>/dev/null | wc -l | tr -d ' ') SQL_COUNT=$(gcloud sql instances list --project="${PROJECT_ID}" \ --format='value(name)' --filter='state=RUNNABLE' 2>/dev/null | wc -l | tr -d ' ') if [[ "$VM_COUNT" -gt 0 || "$SQL_COUNT" -gt 0 ]]; then printf " | ${RED}${BOLD}[!!] VM: %s SQL: %s — IDLE-KOST DETEKTERT!${NC}\n" "$VM_COUNT" "$SQL_COUNT" else printf " | ${GREEN}[OK]${NC} Ingen VM/SQL idle-kost\n" fi fi printf " ----------------------------------------------------\n" printf " ${DIM}Full audit : bash scripts/cost-audit.sh${NC}\n" printf " ${DIM}Gemini TUI : gemini${NC}\n" printf "\n"