corn-config / corn

🌽 A simple and pain-free configuration language. Reference libcorn implementation and CLI.
https://cornlang.dev
MIT License
40 stars 5 forks source link
configuration grammar language peg pest rust rust-library

🌽 Corn

A simple and pain-free configuration language.

Corn has been designed using inspiration from JSON and Nix to produce a language that's easy and intuitive to write, good for config files, and has a feature-set small enough you can learn it in minutes. It was born out of the following frustrations:


## Documentation [📖User guide](https://cornlang.dev/user-guide) | [📝 Full specification](https://cornlang.dev/spec)

let {
    $entry = "dist/index.js"
    $author = { name = "John Smith" email = "mail@example.com" }
} in {
    name = "example-package"
    version = "1.0.0"
    main = $entry
    bin.filebrowser = $entry
    private = false

    author = $author
    author.url = "https://example.com"

    contributors = [ $author ]

    scripts.build = "tsc"
    scripts.run = "node dist"

    dependencies = {
        dotenv = "^8.2.0"
        // put the rest of your deps here...
    }

    devDependencies.typescript = "^4.5"

    config.port = 8080
    config.hostname = null
}

Corn is available as libraries for Rust, Go, Lua, and JavaScript (via WASM). A CLI and web API are also available.

Editor plugins are available for JetBrains IDEs, VS Code and Neovim.