src/rally_runtime/env.gleam

//// APP_ENV parsing and environment-dependent behavior.
//// Controls secure cookie policy and browser-side debug logging.
//// Set APP_ENV=prod in production; everything else defaults to dev.

import envoy
import gleam/result
import gleam/string

pub type AppEnv {
  Dev
  Prod
}

pub fn app_env() -> AppEnv {
  envoy.get("APP_ENV")
  |> result.unwrap("dev")
  |> app_env_from_string
}

pub fn app_env_from_string(value: String) -> AppEnv {
  case string.lowercase(value) {
    "prod" | "production" -> Prod
    _ -> Dev
  }
}

pub fn app_env_name() -> String {
  case app_env() {
    Dev -> "dev"
    Prod -> "prod"
  }
}

pub fn is_dev() -> Bool {
  app_env() == Dev
}

pub fn secure_cookies() -> Bool {
  secure_cookies_for(app_env())
}

pub fn secure_cookies_for(app_env: AppEnv) -> Bool {
  app_env == Prod
}

pub fn browser_env_script() -> String {
  "<script>window.__APP_ENV__='" <> app_env_name() <> "'</script>"
}