
Configured.pudu
Pudu26 lines1.1 KB
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 Source101112fn 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