figcli 0.10.0

A command line tool that provides utility functions for developing at Figure.
# 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 `<OS specific config root>/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?