doc: RFC: husht command line and top-level behavior #1

Open
glen wants to merge 3 commits from rfq_cli into main
Showing only changes of commit ed9525bb9b - Show all commits

View File

@ -23,3 +23,38 @@ into the Rust code.
Documentation of specific syntax features of husht will be added as they are
implemented.
## Usage
`husht [options] [sources]`
Transforms some files from husht to Rust. The source specification `sources`
is a list of files, directories or glob patterns, defaulting to `.`. A
directory `dir` is interpreted the same way as the glob pattern `dir/**` --
in other words, all files recursively within that directory. Glob patterns
are matched and all matching files are added to the list of files to process.
If there is a destination directory (see below), all files in the destination
directory are ignored. Files that do not have extension `.toml` or `.hsh` are
ignored. The former are copied unchanged; the latter are transformed per the
husht language specification into Rust `.rs` files.
Options:
- -h, --help -- Print a usage summary and exit
- -o, --destination [dir/file] -- Specifies the destination of the
transformed file(s). If the destination is a single file, the sources must
be as well, and the one file is transformed into the other. A destination
specification without an extension is assumed to be a directory. The
default destination is `rust`.
If the destination is a directory, then the transform of each source file
is written into that directory, preserving its relative path to its "root".
The root of a file added by virtue of a glob is the top level directory
of that glob pattern. The root of a file specified explicitly is the
current directory.
For example, if the `src` directory contains `main.hsh`, `sub/crate.hsh`, and
`Cargo.toml` (and there are no other .hsh or .toml files in the directory
tree), then `husht src` would write `rust/main.rs`, `rust/sub/crate.rs`, and
`rust/Cargo.toml`. On the other hand just `husht`, defaulting to `husht .`,
would write `rust/src/main.rs`, `rust/src/sub/crate.rs`, and
`rust/src/Cargo.toml`.