partiql-cli 0.1.0

PartiQL CLI
Documentation
# PartiQL Rust CLI
PoC for a CLI & REPL. It should be considered experimental, subject to change, etc.

In its current state, it largely exists to test parser interface & types from the perspective of an external application.
Probably the the mietter::Diagnostic stuff should be refactored and moved to the main parser crate.

## CLI Commands

- **`help`** : print the CLI's help message and supported commands
- **`repl`** : launches the [REPL]##REPL
- **`ast -T<format> "<query>"`**: outputs a rendered version of the parsed AST  ([see Visualization]##Visualizations):
  - **`<format>`**:
    - **`json`** : pretty-print to stdout in a json dump
    - **`dot`** : pretty-print to stdout in [Graphviz][Graphviz] [dot][GvDot] format
    - **`svg`** : print to stdout a [Graphviz][Graphviz] rendered svg xml document
    - **`png`** : print to stdout a [Graphviz][Graphviz] rendered png bitmap
    - **`display`** : display a [Graphviz][Graphviz] rendered png bitmap directly in supported terminals
  - **`query`** : the PartiQL query text

## REPL

The REPL currently assumes most of the input line is a PartiQL query, which it will attempt to parse.
- For an invalid query, errors are pretty printed to the output.
- For a valid query,
  - with no prefix, `Parse OK!` is printed to the output
  - if prefixed by `\ast`, a rendered AST tree image is printed to the output ([see Visualization]##Visualizations)

Features:
- Syntax highlighting of query input
- User-friendly error reporting
- Readling/editing
- `CTRL-D`/`CTRL-C` to quit.

# Visualizations

In order to use any of the [Graphviz][Graphviz]-based visualizations, you will need the graphviz libraries
installed on your machine (e.g. `brew install graphviz` or similar).

# TODO

See [REPL-tagged issues](https://github.com/partiql/partiql-lang-rust/issues?q=is%3Aissue+is%3Aopen+%5BREPL%5D)

- Use central location for syntax files rather than embedded in this crate
- Better interaction model
  - commands
  - more robust editing
  - etc.


[Graphviz]: https://graphviz.org/
[GvDot]: https://graphviz.org/doc/info/lang.html