{"id":21382289,"url":"https://github.com/zaphar/ucg","last_synced_at":"2025-07-13T13:31:29.137Z","repository":{"id":29317398,"uuid":"96952356","full_name":"zaphar/ucg","owner":"zaphar","description":"A Universal Configuration Grammar","archived":false,"fork":false,"pushed_at":"2024-02-21T20:19:06.000Z","size":1373,"stargazers_count":36,"open_issues_count":9,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-06T00:09:03.907Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zaphar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"Contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-07-12T01:31:02.000Z","updated_at":"2024-05-06T05:51:21.000Z","dependencies_parsed_at":"2023-09-26T06:37:23.337Z","dependency_job_id":"ba570b8c-f47e-4dff-bf4b-b63be0428ae9","html_url":"https://github.com/zaphar/ucg","commit_stats":{"total_commits":659,"total_committers":4,"mean_commits":164.75,"dds":"0.018209408194233667","last_synced_commit":"383addf48e8b54e95a713970d0b1740449ea719c"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaphar%2Fucg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaphar%2Fucg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaphar%2Fucg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaphar%2Fucg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaphar","download_url":"https://codeload.github.com/zaphar/ucg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225885473,"owners_count":17539641,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T10:58:29.624Z","updated_at":"2024-11-22T10:58:30.173Z","avatar_url":"https://github.com/zaphar.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Configuration Grammar.\n\n[![Build Status](https://travis-ci.org/zaphar/ucg.svg?branch=master)](https://travis-ci.org/zaphar/ucg)\n\nThis is an experiment in configuration management. The approach is **not**\nto create a \"parsable\" config file format.  We have plenty of\nthose. Instead we try to specify a grammar for describing\nconfiguration values that can then target various configuration\nformats to output to.\n\nIn theory this could support anything from command line flags to json\nto yaml or toml or even xml.\n\nThe goal is to allow a global shared configuration repository that can\nbe version controlled, enforce _some_ typesafety, and output\nconfiguration for any application regardless of that applications\npreferred format.\n\n## The Usual Warnings\n\nThis is still very much an experiment and the language and api can be expected\nto change and mutate. You have been warned.\n\n## Usage\n\nYou can get ucg with cargo `cargo install ucg`.\n\nRunning ucg help will show the following output.\n\n```sh\nUniversal Configuration Grammar compiler.\n\nUSAGE:\n    ucg [FLAGS] [SUBCOMMAND]\n\nFLAGS:\n    -h, --help         Prints help information\n        --no-strict    Turn off strict checking.\n    -V, --version      Prints version information\n\nSUBCOMMANDS:\n    build         Build a list of ucg files.\n    converters    list the available converters\n    env           Describe the environment variables ucg uses.\n    eval          Evaluate an expression with an optional ucg file as context.\n    fmt           Format ucg files automatically.\n    help          Prints this message or the help of the given subcommand(s)\n    importers     list the available importers for includes\n    repl          Start the ucg repl for interactive evaluation.\n    test          Check a list of ucg files for errors and run test assertions.\n```\n\n## Compiling\n\n```sh\nBuild a list of ucg files.\n\nUSAGE:\n    ucg build [FLAGS] -r [INPUT]...\n\nFLAGS:\n    -h, --help       Prints help information\n    -r               Whether we should recurse in directories or not.\n    -V, --version    Prints version information\n\nARGS:\n    \u003cINPUT\u003e...    Input ucg files or directories to build. If not provided then build the contents of the current directory.\n```\n\n## Run the repl\n\n```sh\n$\u003e ucg repl\nucg\u003e 1 + 1;\n2\nucg\u003e {foo = 1 + 1};\n{\n        foo = 2,\n}\nucg\u003e \n```\n\n## Testing\n```sh\n Check a list of ucg files for errors and run test assertions.\n\nUSAGE:\n    ucg test [FLAGS] -r [INPUT]...\n\nFLAGS:\n    -h, --help       Prints help information\n    -r               Whether we should recurse or not.\n    -V, --version    Prints version information\n\nARGS:\n    \u003cINPUT\u003e...    Input ucg files or directories to run test assertions for. If not provided it will scan the current directory for files with _test.ucg\n```\n\n## Language Reference\n\n[https://ucg.marzhillstudios.com/reference](https://ucg.marzhillstudios.com/reference)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaphar%2Fucg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaphar%2Fucg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaphar%2Fucg/lists"}