Gmconfig - A JSON-SCHEMA-based configuration management support library
Introduction
This library offers the basic support functions for the Gajumaru configuration management subsystem. It is based on JSON-Schema, and includes, among other things:
- A reasonably complete JSON-Schema validator
- Validating user configurations against the schema
- In-service update of the user config
- Caching of the user config (and schema) as persistent terms
- Fast config lookups using key paths
- Lookups can handle both schema defaults and user-provided defaults
JSON-Schema validator
The main thing the validator currently doesn't support is proper
management of complex sets of schemas and subSchemas. There are
some preparations made for supporting "$id" and uris, but this
is still incomplete. "definitions" and "$ref" properties are recognized.
As almost anything is theoretically possible with JSON-Schema, there are surely other things that are unsupported.
All standard data types
"null""boolean""integer""number""boolean""string""array""object"
Dynamic properties
"if""not""oneOf""anyOf""allOf"
Static Properties
Array
"maxItems""minItems""uniqueItems""prefixItems""contains"("minContains","maxContains")
Object
"properties"("minProperties","maxProperties")"patternProperties""additionalProperties""required"
String
"pattern""minLength""maxLength"
Number, Integer
"minimum""maximum""exclusiveMinimum""exclusiveMinimum""multipleOf"(only if object is an integer)
"$updateSemantics"
"replace"(fully replaces any old data)"merge"(for objects, keeps and/or updates existing values)"suggest"(adds value if not already present)
Languages
Erlang
100%