#!/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" # Last inn .env hvis den finnes if [[ -f "$ENV_FILE" ]]; then set -o allexport source "$ENV_FILE" set +o allexport fi # Bare kjør hvis PROJECT_ID er satt if [[ -z "${PROJECT_ID:-}" ]]; then return 0 fi # --- Kostnadsvisning --- YELLOW='\033[1;33m' GREEN='\033[0;32m' RED='\033[0;31m' CYAN='\033[0;36m' DIM='\033[2m' BOLD='\033[1m' NC='\033[0m' # Kalkuler akkumulert kost siden prosjektstart START_EPOCH=1747144800 # 2026-05-13T14:00:00Z NOW_EPOCH=$(date +%s) ELAPSED_SEC=$(( NOW_EPOCH - START_EPOCH )) ELAPSED_DAYS_INT=$(( ELAPSED_SEC / 86400 )) ELAPSED_HRS=$(( (ELAPSED_SEC % 86400) / 3600 )) ELAPSED_MIN=$(( (ELAPSED_SEC % 3600) / 60 )) # Kost-estimat (bash bruker integer, skalert x100000) # USD_PER_DAY = 0.03 -> 3000 (x100000) USD_SCALED=$(( ELAPSED_SEC * 3000 / 86400 )) # i enheter av 0.00001 USD NOK_SCALED=$(( USD_SCALED * 1062 / 100 )) # * 10.62 -> i enheter av 0.00001 NOK # Formater til lesbar tekst USD_INT=$(( USD_SCALED / 100000 )) USD_DEC=$(( USD_SCALED % 100000 )) NOK_INT=$(( NOK_SCALED / 100000 )) NOK_DEC=$(( NOK_SCALED % 100000 )) printf "\n" printf "${CYAN}${BOLD} ╔══════════════════════════════════════╗${NC}\n" printf "${CYAN}${BOLD} ║ OSVauco · GCP Kostnadsmåler ║${NC}\n" printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n" printf " ║ ${DIM}Fra: 2026-05-13 | Prosjekt: ${PROJECT_ID:0:16}${NC}${CYAN}${BOLD} ║${NC}\n" printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n" printf " ║ ${YELLOW}${BOLD}NOK: kr %d.%05d${NC}%*s${CYAN}${BOLD} ║${NC}\n" \ "$NOK_INT" "$NOK_DEC" "$(( 12 - ${#NOK_INT} - 6 ))" "" printf " ║ ${GREEN}USD: \$%d.%05d${NC}%*s${CYAN}${BOLD} ║${NC}\n" \ "$USD_INT" "$USD_DEC" "$(( 13 - ${#USD_INT} - 6 ))" "" printf " ║ ${DIM}Tid: %dd %02dh %02dm${NC}%*s${CYAN}${BOLD} ║${NC}\n" \ "$ELAPSED_DAYS_INT" "$ELAPSED_HRS" "$ELAPSED_MIN" "$(( 10 ))" "" printf "${CYAN}${BOLD} ╠══════════════════════════════════════╣${NC}\n" # Hurtigsjekk: VMs og SQL (stille, bare vis hvis noe finnes) 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 — kjører!${NC}%*s${CYAN}${BOLD} ║${NC}\n" \ "$VM_COUNT" "$SQL_COUNT" "0" "" else printf " ║ ${GREEN}✓ Ingen VM/SQL idle-kost${NC}%*s${CYAN}${BOLD} ║${NC}\n" "10" "" fi printf "${CYAN}${BOLD} ╚══════════════════════════════════════╝${NC}\n" printf " ${DIM}Full audit: bash scripts/cost-audit.sh${NC}\n\n"