# Обзор интерфейса командной строки

`ml-cli` — это интерфейс командной строки для локального кода MoreLogin `httpServer`. Он преобразует аргументы CLI в HTTP-запросы и пересылает их локальным API, предоставляемым клиентом MoreLogin.

## Обзор

**Для кого это?**
Инженеры DevOps, инженеры по автоматизации контроля качества и разработчики, которые предпочитают работать в терминале или которым необходимо интегрировать MoreLogin в конвейеры CI/CD (например, GitHub Actions, Jenkins или сценарии оболочки).

**Что он может сделать?**

- Вызовите локальные API MoreLogin непосредственно из терминала без написания кода HTTP-запроса.
- Управляйте средой браузера, прокси-серверами, облачными телефонами и расписаниями из одного унифицированного интерфейса.
- Используйте стабильные флаги CLI вместо создания полезных данных JSON вручную.


**С чего начать?**

1. Прочтите **предварительные условия** ниже.
2. Загрузите и установите CLI для вашей платформы.
3. Откройте [Быстрый старт](/ru/cli/quick-start), чтобы выполнить первую команду.


## Предварительные условия

Прежде чем использовать `ml-cli`, убедитесь, что соблюдены следующие требования:

- **Настольный клиент MoreLogin** установлен и работает на том же компьютере.
- У вас есть активная учетная запись MoreLogin с **учетными данными API** (идентификатор API + ключ API).


## Загрузка и установка

Загрузите последнюю версию двоичного файла `ml-cli` для вашей платформы:

| Платформа | Архитектура | Ссылка |
|  --- | --- | --- |
| Окна | х64 | [скачать](https://get.morelogin.com/client/prod/win/x64/2.6.1/ml-cli.exe) |
| macOS | x64 (Интел) | [скачать](https://get.morelogin.com/client/prod/mac/x64/2.6.1/ml-cli) |
| macOS | Arm64 (Apple Silicon) | [скачать](https://get.morelogin.com/client/prod/mac/arm64/2.6.1/ml-cli) |
| Линукс | х64 | [скачать](https://get.morelogin.com/client/prod/linux/x64/2.6.1/ml-cli) |


### Окна

1. Создайте каталог для CLI, например `C:\Program Files\MoreLogin\`:

```powershell
New-Item -ItemType Directory -Force -Path "C:\Program Files\MoreLogin"
```
2. Переместите загруженный `ml-cli.exe` в этот каталог.
3. Добавьте каталог в свою систему `PATH`:

```powershell
# Add to the current user's PATH permanently
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$currentPath;C:\Program Files\MoreLogin", "User")
```
4. **Перезагрузите терминал** (или откройте новый), чтобы изменения вступили в силу.
5. Проверять:

```powershell
ml-cli --version
```


### macOS

1. Сделайте двоичный исполняемый файл:

```bash
chmod +x ml-cli
```
2. Переместите его в каталог вашего `PATH`:

```bash
sudo mv ml-cli /usr/local/bin/
```
> Если `/usr/local/bin` не существует, сначала создайте его: `sudo mkdir -p /usr/local/bin`.
3. В macOS загруженный двоичный файл может быть заблокирован Gatekeeper. Удалите атрибут карантина:

```bash
xattr -d com.apple.quarantine /usr/local/bin/ml-cli
```
4. Проверьте:

```bash
ml-cli --version
```


### Линукс

1. Сделайте двоичный исполняемый файл:

```bash
chmod +x ml-cli
```
2. Переместите его в каталог вашего `PATH`:

```bash
sudo mv ml-cli /usr/local/bin/
```
3. Проверьте:

```bash
ml-cli --version
```


После установки см. [Быстрый старт](/ru/cli/quick-start), чтобы подключиться к клиенту MoreLogin и выполнить первую команду.

## Основные возможности

Текущий интерфейс командной строки охватывает следующие группы ресурсов:

- статус услуги и вход в систему
- управление средой браузера через `env`
- облачное управление телефоном через `cloudphone`
- управление группой через `group`
- управление тегами через `tag`
- управление прокси через `proxy`
- управление расписанием облачного телефона через `schedule`


## Запросить модель

CLI поддерживает два стиля ввода:

- явные флаги, такие как `--env-id` или `--group-name`.
- необработанный JSON через `--json-data`


Их можно комбинировать. Правила слияния следующие:

- `--json-data` предоставляет тело базового запроса.
- явные флаги CLI переопределяют соответствующие ключи из `--json-data`


Это полезно для конечных точек с множеством полей или вложенных полезных данных, где выделенные флаги были бы слишком тяжелыми.

## Коды выхода

| Код | Значение |
|  --- | --- |
| `0` | HTTP-запрос выполнен и получен ответ. Проверьте тело JSON на предмет успеха или неудачи в бизнесе. |
| `1` | Проверка локального CLI не удалась, или команда не поддерживается на текущей платформе. |
| `2` | Не удалось разрешить порт, не удалось выполнить синтаксический анализ JSON или не удалось отправить запрос. |


## Разрешение портов и устранение неполадок

CLI необходимо найти локальный порт `httpServer` для отправки запросов. Он проверяет в таком порядке:

1. Флаг `--port` — явно передавать порт при каждом вызове
2. Переменная среды `ML_PORT` — устанавливается один раз за сеанс.
3. Автоматическое обнаружение IPC — интерфейс командной строки считывает порт из локального канала IPC (настройка не требуется)


Пути IPC по умолчанию:

| Платформа | Путь |
|  --- | --- |
| macOS/Линукс | `/tmp/MoreLogin-cli` |
| Окна | `\\.\pipe\MoreLogin-cli` |


Если вы видите ошибку **"Не удалось обнаружить порт MoreLogin"**, проверьте:

- Настольный клиент MoreLogin запущен?
- Если вы используете `--port`, правильный ли номер порта?
- В Linux/macOS существует ли `/tmp/MoreLogin-cli`?


## Карта документации

- [Быстрый старт](/ru/cli/quick-start)
- [Команды](/ru/cli/commands)