formidable/README.md

109 lines
2.3 KiB
Markdown

# 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