# Formidable Web-based - but terminal compatible ! - little form editor using [JSONSchema](https://json-schema.org/) models. **Terminal compatible ?** The generated web UI does not use Javascript and can be used with terminal browsers like [w3m](https://en.wikipedia.org/wiki/W3m) or [lynx](https://en.wikipedia.org/wiki/Lynx_(web_browser)). > ⚠ Formidable is currently in a very alpha stage ! Expect breaking changes... ## Install ### Manually Download the pre-compiled binaries from the [releases page](https://github.com/Bornholm/formidable/releases) and copy them to the desired location. ### Bash script ``` curl -sfL https://raw.githubusercontent.com/Bornholm/formidable/master/misc/script/install.sh | bash ``` It will download `frmd` to your current directory. #### Install script environment variables |Name|Description|Default| |----|-----------|-------| |`FORMIDABLE_VERSION`|Formidable version to download|`latest`| |`FORMIDABLE_DESTDIR`|Formidable destination directory|`.`| ### URLs Formidable uses URLs to define how to handle schemas/defaults/values. For example, to edit with Firefox a schema (in YAML) from an HTTPS server, while readig default values from `stdin` (in JSON) and using effective values from the local file system (in HCL), outputing updates to `stdout`: ```bash echo '{}' | FORMIDABLE_BROWSER="firefox" frmd \ edit --schema 'https://example.com/my-schema.yml' \ --defaults 'stdin://local?format=json' \ --values 'file:///my/file/absolute/path.hcl' \ --output 'stdout://local?format=json' ``` ### Available loaders #### `stdin://` > TODO: Write doc + example #### `http://` and `https://` > TODO: Write doc + example #### `file://` > TODO: Write doc + example ### Available formats #### JSON - **URL Query:** `?format=json` - **File extension:** `.json` - **As input:** yes - **As output:** yes #### YAML - **URL Query:** `?format=yaml` - **File extension:** `.yaml` or `.yml` - **As input:** yes - **As output:** yes #### HCL - **URL Query:** `?format=hcl` - **File extension:** `.hcl` - **As input:** yes - **As output:** no ### Available outputs #### `stdout://` (default) > TODO: Write doc + example #### `null://` > TODO: Write doc + example #### `file://` > TODO: Write doc + example #### `exec://` > TODO: Write doc + example ## Changelog [See `CHANGELOG.md`](./CHANGELOG.md) ## Licence AGPL-3.0