# ACC CLI

Akinon CLI is an application designed to enable managing projects and applications on ACC through the command-line interface.

## <mark style="color:red;">Installation</mark>

Download project code on Python 3.6 or higher version, and create `virtual environment`. The\
system will be ready to use when the below commands are launched in the project array.

```shell
$ pip install -r requirements.txt
$ python setup.py install
```

## <mark style="color:red;">Usage</mark>

In ACC, each user is the member of an `Account`. For each user, an `Account` is created automatically when they first sign up. Authorized users on `Account` can add new users from CLI or from the interface. It is currently not possible to create membership on CLI application.

After typing a command in the CLI, information about the necessary parameters and what that command does can be obtained with the `-h` parameter.

Example:

```
akinoncli users -h
```

Before you start using the CLI, you need to launch a command to set the URL to which the CLI client will send requests. You can complete this process by launching below command. It does not produce any outcome.

```
akinoncli base-url set https://be-console.akinoncloud.com
```

## <mark style="color:red;">Commands</mark>

Akinon CLI contains commands designed for developers.

### Identity Verification

The user first has to verify their identity to carry out projects, applications and other actions on Akinon CLI. If a user has already logged in with an identity, they need to log out of the previous session to log in with a different identity.

***

* `akinoncli login`

Users log-in by entering their e-mail address and password.

***

* `akinoncli logout`

The account logs out for the logged-in identity and related information is deleted.

### Public Keys

The user must add a public key to enable access to code storage of applications in the projects. Code storage cannot be accessed otherwise.

***

* `akinoncli publickey create {key}`

User adds public key.

| Parameter | Description                       | Mandatory |
| --------- | --------------------------------- | --------- |
| key       | text in the .ssh/id\_rsa.pub file | Yes       |

**Example**

`akinoncli publickey create "ssh-rsa AAAAB..."`

***

* `akinoncli publickey list`

Lists existing Public Keys.

***

* `akinoncli publickey delete {ID}`

Removes public key.

| Parameter | Description   | Mandatory |
| --------- | ------------- | --------- |
| ID        | Public Key ID | Yes       |

### Applications

In ACC, users can upload and publish their own applications or use applications published by other users in their projects.

To be able to publish an application, it should be managed with the Git version control system. Once the application is created in ACC, the user can send the code storage to the Git address provided if the user has added a Public Key.

For an application to be compiled and issued by ACC, the home directory should contain a file titled `akinon.json`.

***

* `akinoncli application create {name} {slug} {is_private}`

It creates a new application.

| Parameter   | Description                                                | Mandatory |
| ----------- | ---------------------------------------------------------- | --------- |
| name        | Application Name                                           | Yes       |
| slug        | Application Slug (it should be unique)                     | Yes       |
| is\_private | Whether the application can be shared or not. (true/false) | Yes       |

Once the application is successfully created, the`list` command should be launched to find out the Git address.

***

* `akinoncli application list`

It lists the applications.

***

When the applications are listed, the code storage address of the application in `Clone URL` ACC returns if the application is ready.

Go to the application directory to install, then send the application by launching the Git commands below.

```
$ git remote add akinon {CLONE_URL}
$ git push akinon {branch_name}
```

Before an application can be issued under a project, it needs to be compiled in ACC. In order to enable compiling, the user needs to create the stable version.This can be done by entering `tag` commands on Git. Then the newly created version must be sent to be code storage in ACC.

**Example**

```
$ git tag 1.0
$ git push akinon --tags
```

Once the version label is sent, compiling can be conducted on CLI.

***

* `akinoncli application build {app_id} {tag}`

The compiling process is initiated for the specified version label of the application.

| Parameter | Description                  | Mandatory |
| --------- | ---------------------------- | --------- |
| app\_id   | Application ID               | Yes       |
| tag       | Version label to be compiled | Yes       |

**Example**

```
$ akinoncli application build 1 1.0
```

***

* `akinoncli application versions {app_id}`

Lists the compiled versions of the application.

| Parameter | Description    | Mandatory |
| --------- | -------------- | --------- |
| app\_id   | Application ID | Yes       |

If the listed version is `completed`, it means the related application version is ready to be issued. An application cannot be issued on its own. It needs to be `ProjectApp`added within a project as . The `ProjectApp`s can be issued with the compiled stable version of the application.

***

### Projects

Projects in ACC refer to the ecosystem, where various applications gather to operate in an integrated manner. When a project is created, the `Omnitron` application developed by Akinon is automatically added to the project and launched. The `Omnitron` application lies at the heart of a project.

***

* `akinoncli project list`\
  It lists projects.

***

* `akinoncli project create {name} {slug}`

It creates a projects.

| Parameter | Description                         | Mandatory |
| --------- | ----------------------------------- | --------- |
| name      | Project Name                        | Yes       |
| slug      | Project Slug (It should be unique.) | Yes       |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.akinon.com/technical-guides/acc/acc-cli.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
