---
id: index
title: Neucli
---

# Neulabs CLI

The neulabs CLI is used to aggregate all those activities and commands useful to various developers, reducing development costs and creating shared standards.
The goal of `neucli` is to facilitate the generation and use of standard components such as documentation structure, GitHub actions for releases, and more.

**Neucli** is based on [Taskfile](https://taskfile.dev/), a task runner that allows the creation of modular CLIs through YAML configurations. Each command has its own structure, some of them are Python modules, while others are simple Bash scripts. This approach makes it easy to add additional modules in various programming languages, and you can also create your own custom commands locally and add them to the CLI.

## Installation

### Requirements
- Python >= 3.8 \[[install](https://www.python.org/downloads/)\]
- Nodjs >= 16.14 \[[install](https://github.com/nvm-sh/nvm)\]
- Homebrew (only on MacOS)

### Steps

1. Donwload **[taskfiles/cli/cli.yml](https://github.com/neulabscom/neulabs-cli/raw/main/taskfiles/cli/cli.yml)** from [neulabs-cli](https://github.com/neulabscom/neulabs-cli) repository
2. Install **task** command
   - [ *Linux* ] `npm install -g @go-task/cli`
   - [ *MacOS* ] `brew install go-task`
3. Install **neucli**:
    ```
    task --taskfile cli.yml installer
    task --taskfile cli.yml deps:all
    ```
4. Delete **cli.yml** and restart terminal
5. Run `neucli help`

## Getting started

### Help command

```
neucli help
```

### Summary command

```
neucli summary -- command
```

### Pass args to command

```
neucli command -- -opt-1 value --opt-2 -x --zyx
```

### Own cli commands

- In the file `~/.neulabs-cli/Taskfile.local.yml` you can add your own commands as desired.
- Then you can use your command with `neucli local:command-name`

## Dev mode

**Setup**
    git clone https://github.com/neulabscom/neulabs-cli.git && cd neulabs-cli
    git submodule update --init --recursive

    ./bin/neucli dev:setup:installer

    source .activate
    neucli cli:deps:all

**Test neucli commands**

    source .activate
    neucli --debug dev:utils:lint

**Test installer with debug mode**

    neucli --debug cli:installer
