# Fig ![crates.io](https://img.shields.io/crates/v/figcli.svg) A command line tool that provides utility functions for developing at Figure. ## Installation See https://rustup.rs if you don't currently have `cargo` installed. ### crates.io ```bash $ cargo install figcli ``` ### Source ```bash $ git clone git@github.com:scirner22/figure-cli.git $ cd figure-cli/ $ cargo install --path . ``` ## Usage See all available commands ```bash $ figcli help # or alternatively `figcli --help` or just `figcli` ``` Check all required dependencies ```bash $ figcli doctor ``` Install a `figcli` config file that contains examples to help with setup. The root `figcli` config directory is `$HOME/.config/fig` on linux and `$HOME/Library/Application Support/fig` on mac. The `figcli` config for the directory you are currently (ex. `~/code/app-identity`) is contained in `/fig/app-identity/` This default configuration is perfect for repos with a single application deployment. The `default.toml` can be copied to `subproject1.toml` to configure an application by name. When you want to reference something other than default in a `figcli` command, you must use the optional global parameter of `--config` or `-c` (`-c subproject1`). Using multiples of this scheme with different names allows you to have any number of referenceable configurations. Note: Once running this you can edit the configuration file and fill in the correct values. ```bash $ figcli config init ``` List available configurations for the current directory ```bash $ cd src/ $ figcli config list provenance.toml default.toml ``` Edit the `provenance.toml` configuration file ```bash $ figcli -c provenance config edit # will use $EDITOR ``` Drop into a psql shell in the test environment (default configuration file) ```bash $ figcli psql test --shell ``` Drop into a psql shell in the test environment for the non default configuration ```bash $ figcli -c provenance psql test --shell ``` Start a local pgbouncer and print the postgresql connection string that can be used to connect with a third party Postgres query application. Pgbouncer is used so that the username and password do not have to be used. This provides a simple way to have a third party Postgres application configured without having to fetch and input the ever expiring Google Cloud SQL credentials in Vault. The `--port` flag is used so a static predefined port can be used instead of finding a randomly available one. ```bash $ figcli psql test --port 65432 ``` ## Towards 1.0 - [ ] psql command - seamless vault and devops.figure.com for credential management - [ ] init command - generate the majority of the toml config file based on parsing the project - [ ] exec command? - [ ] log command? - [ ] port-forward command?