Metadata-Version: 2.1
Name: disruptive-cli
Version: 0.5.0
Summary: Disruptive Technologies CLI.
Home-page: https://github.com/jhgjeraker/disruptive-cli
Author: Johannes H. Gjeraker
Author-email: johannes.holm.gjeraker@disruptive-technologies.com
Project-URL: Developers Page, https://developer.disruptive-technologies.com/docs/
Keywords: disruptive,technologies,dt,api,cli
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Operating System :: OS Independent
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: disruptive>=1.6.0
Requires-Dist: pyyaml>=6.0.1
Requires-Dist: types-pyyaml>=6.0.0
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-mock>=3.12.0; extra == "dev"
Requires-Dist: mypy>=1.6.0; extra == "dev"
Requires-Dist: flake8>=6.1.0; extra == "dev"
Requires-Dist: build>=1.0.0; extra == "dev"
Requires-Dist: setuptools>=68.2.0; extra == "dev"
Requires-Dist: wheel>=0.41.0; extra == "dev"

# disruptive-cli
Unofficial Command-Line Interface (CLI) for the Disruptive Technologies (DT) API.

- [DT REST API](https://developer.disruptive-technologies.com/api)
- [DT Python API](https://developer.disruptive-technologies.com/api/libraries/python/)
- [DT Developer Documentation](https://developer.disruptive-technologies.com/docs/)

## Installation
The package is hosted on PyPI and is available through pip.
```bash
pip install --upgrade disruptive-cli
```

Supports Python 3.8, 3.9, 3.10, and 3.11.

## Authentication
Using [Service Account](https://developer.disruptive-technologies.com/docs/service-accounts/introduction-to-service-accounts) credentials, set the following environment variables.
```bash
export DT_SERVICE_ACCOUNT_KEY_ID="<SERVICE_ACCOUNT_KEY_ID>"
export DT_SERVICE_ACCOUNT_SECRET="<SERVICE_ACCOUNT_SECRET>"
export DT_SERVICE_ACCOUNT_EMAIL="<SERVICE_ACCOUNT_EMAIL>"
```

## Usage
Call the `dt` command using a `dt NOUN VERB` syntax.

- List all available projects.
```bash
dt project list
```

- Get a single device.
```bash
dt device get <DEVICE_ID>
```

See `dt -h` for additional commands.

### Completion
Bash completion is currently supported. Copy the completion script in `disruptive-cli/completion` to your place of choice in path, then source it from either `.bashrc`, `.bash_profile`, or `.profile` depending on your environment.
```
source '/usr/local/bin/dt-completion.bash'
```

## Formatting
A tabular human readable output is prioritized.

### Headers
Column headers are removed for single columns or if the `--no-header` flag is provided. 

### Filters
A select set of columns are shown per resource. Use the `--full` flag to output all available information.

On the other hand, the `--include` can be used to include only specified columns in output.

### Other Filetypes
The following formats are supported.
- `--json`
- `--csv`
- `--tsv`

## Chaining Commands
Pipes are supported using the `-` symbol to make chaining commands simpler.

The following example lists all projects, then pipes the `project-id` column to the `serviceaccount` command to list all available Service Accounts per project. The output is formatted as `.json` and piped into [jq](https://stedolan.github.io/jq/) for further processing.

```bash
dt project list --include project-id | dt serviceaccount list - --json | jq
```

## Development
Virtualenv is used for dependency isolation, wrapped by the following commands.

- Build the distribution:
```bash
make build
```

- Remove build-files:
```bash
make clean
```
