trisync 0.1.2

A friendly CLI Tool for automating synchronization of multiple TRIRIGA environment by using the OM API
Documentation
# Tri-Sync CLI


[Crates.io](https://crates.io/crates/trisync) package

A friendly CLI Tool for automating synchronization of multiple TRIRIGA environment by using the OM API.

To install using `crate` (You will need [rustup](https://rustup.rs/))

`crate install trisync`

To build from source

`cargo build --release`

## Known issues


### Unauthenticated SSH Key


If you encounter the following error

```azurecli
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { code: -1, klass: 23, message: "Failed to authenticate SSH session: " }'
```

then it is probably because your SSH Key is not in right format. Delete your old SSH Key and regenerate a new one with

```bash
ssh-keygen -m pem
```

A _private key_ (`id_rsa` file) starting with the following characters: `-----BEGIN OPENSSH PRIVATE KEY-----` will fail the program. The private key file is expected to begin with:
`-----BEGIN RSA PRIVATE KEY-----`.

## How to use


There are several commands available. For help, simply type `trisync` or `trisync -h`

This tool only works if you have a Git directory setup with upstream. Refer to this [template](https://github.ibm.com/tri-sync/template) when initializing a new project.

### init


This command initialize the current directory to a Tri-sync project. It will walk you through a serie of questions and will create a `config.yaml` and a `tririga.yaml` file.

**Note:** you shoud not touch these files unless you know what you are doing.

Running this command when a configuration is already created will **replace** existing one.

There might be times when this command crashes which probably means the configuration files are corrupted. Make a backup of the config files and delete them, then rerun the command.

### push


This command pushes/upload all changes on the specified objects in the configuration from current TRIRIGA environment to the Github repository. You will be asked for a commit message before push.

### pull


This command pull/download all updates from the Github repository and automatically deploy the package to current TRIRIGA environment.

### deploy


This command deploys the package to TRIRIGA. You might want to use this command to force the deployment when the `push` or `pull` has failed.

### object


#### add


This command adds a TRIRIGA object to the configuration. All changes to the object will be kept track of.

#### delete


This command removes a TRIRIGA object from the configuration. You will be prompted with a multi-select dialog for selection.