package main

import (
	"fmt"
	"os"
	"slices"
	"strings"
)

// variabelWajib berisi environment variable yang wajib terisi saat produksi.
var variabelWajib = []string{"APP_PORT", "APP_ENV", "APP_DATABASE_URL"}

func main() {
	// Fail-fast: hentikan program bila ada variabel wajib yang kosong.
	for _, nama := range variabelWajib {
		if os.Getenv(nama) == "" {
			fmt.Fprintf(os.Stderr, "variabel wajib kosong: %s\n", nama)
			os.Exit(1)
		}
	}

	fmt.Println("konfigurasi aktif:")
	fmt.Println("  APP_ENV          =", os.Getenv("APP_ENV"))
	fmt.Println("  APP_PORT         =", os.Getenv("APP_PORT"))
	fmt.Printf("  APP_DATABASE_URL = terisi (%d karakter)\n", len(os.Getenv("APP_DATABASE_URL")))

	// Kumpulkan seluruh variabel berprefix APP_ lalu urutkan supaya stabil.
	var ketemu []string
	for _, kv := range os.Environ() {
		nama, _, _ := strings.Cut(kv, "=")
		if strings.HasPrefix(nama, "APP_") {
			ketemu = append(ketemu, nama)
		}
	}
	slices.Sort(ketemu)
	fmt.Println("variabel APP_ terdeteksi:", strings.Join(ketemu, ", "))
}
