Skip to content

zaphar/ucg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5ae4b91 · Feb 21, 2024
Nov 16, 2017
Oct 3, 2019
Dec 10, 2019
Mar 29, 2019
Apr 12, 2020
Aug 23, 2021
Jan 16, 2023
Jan 4, 2020
Feb 1, 2019
Jan 4, 2020
Dec 21, 2023
Aug 19, 2023
May 30, 2019
Jul 12, 2017
May 25, 2020
May 31, 2019
Mar 26, 2019
Jan 17, 2023
Feb 21, 2024
Feb 21, 2024

Repository files navigation

Universal Configuration Grammar.

Build Status

This is an experiment in configuration management. The approach is not to create a "parsable" config file format. We have plenty of those. Instead we try to specify a grammar for describing configuration values that can then target various configuration formats to output to.

In theory this could support anything from command line flags to json to yaml or toml or even xml.

The goal is to allow a global shared configuration repository that can be version controlled, enforce some typesafety, and output configuration for any application regardless of that applications preferred format.

The Usual Warnings

This is still very much an experiment and the language and api can be expected to change and mutate. You have been warned.

Usage

You can get ucg with cargo cargo install ucg.

Running ucg help will show the following output.

Universal Configuration Grammar compiler.

USAGE:
    ucg [FLAGS] [SUBCOMMAND]

FLAGS:
    -h, --help         Prints help information
        --no-strict    Turn off strict checking.
    -V, --version      Prints version information

SUBCOMMANDS:
    build         Build a list of ucg files.
    converters    list the available converters
    env           Describe the environment variables ucg uses.
    eval          Evaluate an expression with an optional ucg file as context.
    fmt           Format ucg files automatically.
    help          Prints this message or the help of the given subcommand(s)
    importers     list the available importers for includes
    repl          Start the ucg repl for interactive evaluation.
    test          Check a list of ucg files for errors and run test assertions.

Compiling

Build a list of ucg files.

USAGE:
    ucg build [FLAGS] -r [INPUT]...

FLAGS:
    -h, --help       Prints help information
    -r               Whether we should recurse in directories or not.
    -V, --version    Prints version information

ARGS:
    <INPUT>...    Input ucg files or directories to build. If not provided then build the contents of the current directory.

Run the repl

$> ucg repl
ucg> 1 + 1;
2
ucg> {foo = 1 + 1};
{
        foo = 2,
}
ucg> 

Testing

 Check a list of ucg files for errors and run test assertions.

USAGE:
    ucg test [FLAGS] -r [INPUT]...

FLAGS:
    -h, --help       Prints help information
    -r               Whether we should recurse or not.
    -V, --version    Prints version information

ARGS:
    <INPUT>...    Input ucg files or directories to run test assertions for. If not provided it will scan the current directory for files with _test.ucg

Language Reference

https://ucg.marzhillstudios.com/reference