MoonConfigKit is a MoonBit-native INI/properties configuration merge, validation, diagnostics, and reporting toolkit.
moon add crh12354/moonconfigkit///|
import {
"crh12354/moonconfigkit" @config,
}let base = @config.parse_ini(
"base.ini",
"[server]\nhost=localhost\nport=8080",
).document
let prod = @config.parse_ini(
"prod.ini",
"[server]\nhost=prod.example.test",
).document
let view = @config.merge_layers([
@config.layer("base", 0, base),
@config.layer("prod", 10, prod),
])
let diagnostics = @config.validate(view, [
@config.required("server.host"),
@config.int_range("server.port", Some(1), Some(65535)),
])
println(@config.render_markdown_report(view, diagnostics))pub struct AuditSummary {
policy_name : String
key_count : Int
error_count : Int
warning_count : Int
info_count : Int
score : Int
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)pub struct ConfigDocument {
name : String
entries : Array[ConfigEntry]
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)fn ConfigDocument::apply_edits(self : ConfigDocument, edits : Array[DocumentEdit]) -> ConfigDocumentfn ConfigDocument::rename_path(self : ConfigDocument, old_path : String, new_path : String) -> ConfigDocumentfn ConfigDocument::with_value(self : ConfigDocument, path : String, value : String) -> ConfigDocumentpub struct ConfigSchema {
name : String
version : String
sections : Array[SchemaSection]
} derive(Eq, Debug)fn ConfigSchema::unknown_key_diagnostics(self : ConfigSchema, view : ConfigView) -> Array[Diagnostic]pub struct ConfigView {
values : Array[ResolvedValue]
diagnostics : Array[Diagnostic]
} derive(Eq, Debug)pub struct Profile {
name : String
view : ConfigView
schema : ConfigSchema?
policy : AuditPolicy?
} derive(Eq, Debug)pub struct SchemaSection {
name : String
description : String
fields : Array[SchemaField]
} derive(Eq, Debug)fn entry_path(section : String, key : String) -> Stringfn escape_properties_key(key : String) -> Stringfn field(path : String, kind : String, required? : Bool, default_value? : String?, description? : String, rules? : Array[Rule]) -> SchemaFieldfn is_sensitive_path(path : String) -> Boolfn parse_options(allow_colon_separator? : Bool, allow_empty_value? : Bool, preserve_comments? : Bool, strict_sections? : Bool) -> ParseOptionsfn parse_properties_with_options(name : String, text : String, options : ParseOptions) -> ParseResultfn profile(name : String, view : ConfigView, schema? : ConfigSchema?, policy? : AuditPolicy?) -> Profilefn profile_gap_report(schema : ConfigSchema, profiles : Array[(String, ConfigView)]) -> Array[Diagnostic]fn redact_value(path : String, value : String) -> Stringfn service_profiles(dev : ConfigDocument, test_doc : ConfigDocument, prod : ConfigDocument) -> Array[Profile]fn unescape_properties_value(value : String) -> Stringfn unresolved_placeholder_diagnostics(view : ConfigView, supplied : Array[PlaceholderValue]) -> Array[Diagnostic]Install
Download zipMoonConfigKit is a MoonBit-native INI/properties configuration merge, validation, diagnostics, and reporting toolkit.