Metadata-Version: 2.1
Name: cic-cli
Version: 0.3.4
Summary: Generic cli tooling for the CIC token network
Home-page: https://git.grassecon.net/cicnet/cic-cli
License: GPL-3.0-or-later
Keywords: dlt,blockchain,cryptocurrency
Author: Louis Holbrook
Author-email: dev@holbrook.no
Requires-Python: >=3.8,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Internet
Provides-Extra: eth
Requires-Dist: cbor2 (>=5.4.1,<5.5.0)
Requires-Dist: chainlib (>=0.1.0,<0.2.0)
Requires-Dist: chainlib-eth (>=0.1.1,<0.2.0); extra == "eth"
Requires-Dist: cic-contracts (>=0.1.0,<0.2.0); extra == "eth"
Requires-Dist: cic-eth-registry (>=0.6.9,<0.7.0); extra == "eth"
Requires-Dist: cic-types (>=0.2.2,<0.3.0)
Requires-Dist: confini (>=0.6.0,<0.7.0)
Requires-Dist: eth-address-index (>=0.5.0,<0.6.0); extra == "eth"
Requires-Dist: eth-token-index (>=0.3.0,<0.4.0); extra == "eth"
Requires-Dist: funga-eth (>=0.6.0,<0.7.0)
Requires-Dist: okota (>=0.4.0,<0.5.0); extra == "eth"
Project-URL: Repository, https://git.grassecon.net/cicnet/cic-cli
Description-Content-Type: text/markdown

# CIC Token Deployment Tool
[![Status](https://ci.grassecon.net/api/badges/cicnet/cic-cli/status.svg)](https://ci.grassecon.net/grassrootseconomics/cic)
[![Version](https://img.shields.io/pypi/v/cic-cli?color=green)](https://pypi.org/project/cic/)

CIC-CLI provides tooling to generate and publish metadata in relation to
token deployments.

```shell
pip install cic-cli[eth]
```
## Usage
### Using the wizard  
First make sure that you edit the configs below to add your paths for `[auth]keyfile_path` and `[wallet]keyfile`
The configs are located in `~/.config/cic/cli/config/`
```
# Local
cic wizard ./somewhere -c ~/.config/cic/cli/config/docker

# Test Net
cic wizard ./somewhere -c ~/.config/cic/cli/config/testnet
```
### Modular
Some of the concepts described below assume familiarity with base
concepts of the CIC architecture. Please refer to the appropriate
documentation for more information.

To initialize a new token deployment for the EVM:

```shell
cic init --target eth --name <token_name> --symbol <token_symbol> --precision <token_value_precision> <settings_folder>
```

To automatically fill in settings detected in the network for the EVM:

```shell
cic ext --registry <contract_registry_address> -d <settings_folder> -i <chain_spec> -p <rpc_endpoint> eth
```


## Structure of the components

![image](./doc/sphinx/components.svg)

CIC-CLI is designed to interface any network type backend. The current
state of the package contains interface to EVM only. Thus, the examples
below are limited to the context of the EVM.

## Development
### Requirements
 - Install [poetry](https://python-poetry.org/docs/#installation) 

### Setup

```
 poetry install -E eth
```

### Running the CLI

```bash
 poetry run cic -h
```

```bash
 poetry run cic wizard ./somewhere -c ./config/docker
```
### Importing a wallet from metamask
- Export the accounts private key [Instructions](https://metamask.zendesk.com/hc/en-us/articles/360015289632-How-to-Export-an-Account-Private-Key)
- Save the private key to a file
- Run `eth-keyfile -k <file> > ~/.config/cic/keystore/keyfile.json`

###  Port Forwarding
<details>
<summary>Install Kubectl</summary>

```bash
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
sudo curl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
```
</details>

- Download testnet cluster config from https://cloud.digitalocean.com/kubernetes/clusters
- Move the config to `$HOME/.kube/`
- Run `kubectl -n grassroots --kubeconfig=$HOME/.kube/<config_file_name>.yaml get pods`  
- Copy the name of the meta pod (e.g `cic-meta-server-67dc7c6468-8rhdq`)
- Port foward the meta pod to the local machine using `kubectl port-forward pods/<name_of_meta_pod> 6700:8000 -n grassroots --kubeconfig=$HOME/.kube/<config_file_name>.yaml`
- Clone this repository to your local machine
- Run `poetry install -E eth` in the repo root
- Open `./cic/config/testnet/config.ini` and change
  - [auth]keyfile_path 
  - [wallet]key_file
- Open a new terminal and run `poetry run cic wizard -c ./cic/config/testnet ./somewhere` 
### Tests

```
poetry run pytest
```

