Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-environment

Environment files for Pudu: load .env variables safely with layered files, discovery, expansion, typed reads, and secrets kept out of every message

0.1.0Apache-2.01

InstallClose

Configured.pudu

Pudu26 lines1.1 KB

GitHub ↗
1/** @Examples.Configured.Program — loaded variables over application configuration */2module Configured34import Std.App.Config as Config5import Std.Io as Io6import PuduLangEnvironment.Configuration as Configuration7import PuduLangEnvironment.Loader as Loader8import PuduLangEnvironment.Options as Options9import PuduLangEnvironment.Source as Source1011/// Declares settings, layers loaded variables over them, and reports where each value came from.12fn main() -> Int {13  let declared = Config.declaring(&[("server.port", "8080"), ("server.host", "localhost"), ("log-level", "info")])14  let options = Options.defaults().withSources(&[Source.Text("inline", "SERVER_PORT=9443\nLOG_LEVEL=debug\nUNRELATED=ignored\n")])15  match Loader.load(&options) {16    case Ok(variables) => {17      let config = declared.withVariables(&variables)18      for pair in Config.entries(&config) {19        let _shown = Io.writeLine(pair[0] + " = " + pair[1].value + " (" + Config.sourceName(&pair[1].source) + ")")20      }21      if Config.whole(&config, "server.port") == Ok(9443) && Config.textOr(&config, "server.host", "") == "localhost" { 0 } else { 1 }22    }23    case Err(_) => 124  }25}26