# 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 ""`**: outputs a rendered version of the parsed AST ([see Visualization](##Visualizations)): - **``**: - **`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