Cubenet CLI - Command Line Interface

📋 Описание

cubenet-cli — это полнофункциональный инструмент для управления Cubenet Backend из командной строки. Он позволяет запускать сервисы в фоне, останавливать их, собирать, тестировать и просматривать логи — всё без необходимости открывать несколько терминалов.

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

  • 🎯 Фоновый запуск всех сервисов одной командой
  • 📊 Real-time статус всех сервисов
  • 📝 Просмотр логов с фильтрацией и подсветкой
  • ⚙️ Управление процессами (start/stop/restart)
  • 🔨 Сборка и тестирование из CLI
  • 📂 Автоматическое логирование каждого сервиса
  • 🔍 Проверка здоровья сервисов

🚀 Quick Start

# 1. Запустить все в фоне
cargo run -p cubenet-cli -- start

# 2. Проверить статус
cargo run -p cubenet-cli -- status

# 3. Открыть в браузере
# http://localhost:8000/swagger-ui.html

💻 Основные команды

start - Запустить сервисы в фоне

# Все сервисы
cargo run -p cubenet-cli -- start

# Конкретный сервис
cargo run -p cubenet-cli -- start --service api_gateway

stop - Остановить сервисы

# Все сервисы
cargo run -p cubenet-cli -- stop

# Конкретный сервис
cargo run -p cubenet-cli -- stop --service api

status - Статус сервисов (Real-time)

cargo run -p cubenet-cli -- status

Показывает какие сервисы RUNNING/STOPPED и пути к логам.

logs - Просмотр логов

# Все логи
cargo run -p cubenet-cli -- logs

# Конкретный сервис
cargo run -p cubenet-cli -- logs --service api_gateway

# Последние 100 строк
cargo run -p cubenet-cli -- logs --service api_gateway --lines 100

restart - Перезагрузить сервисы

# Все сервисы
cargo run -p cubenet-cli -- restart

# Конкретный
cargo run -p cubenet-cli -- restart --service api_gateway

build - Собрать

# Все
cargo run -p cubenet-cli -- build

# Конкретный
cargo run -p cubenet-cli -- build --service api_gateway

# Release
cargo run -p cubenet-cli -- build --release

test - Тесты

# Все тесты
cargo run -p cubenet-cli -- test

# Конкретный пакет
cargo run -p cubenet-cli -- test --package audit_logger

config - Конфигурация

cargo run -p cubenet-cli -- config

Показывает все доступные сервисы, их статус и доступные команды.

🎯 Типичный workflow

# 1. Запустить всё в фоне
cargo run -p cubenet-cli -- start

# 2. Проверить что всё работает
cargo run -p cubenet-cli -- status

# 3. Редактируем код...

# 4. Перестраиваем один сервис
cargo run -p cubenet-cli -- build --service api_gateway

# 5. Перезагружаем его
cargo run -p cubenet-cli -- restart --service api_gateway

# 6. Проверяем логи если что-то не так
cargo run -p cubenet-cli -- logs --service api_gateway

# 7. Запускаем тесты перед коммитом
cargo run -p cubenet-cli -- test

# 8. Когда закончили - останавливаем всё
cargo run -p cubenet-cli -- stop

🎨 Output Examples

start command

🚀 Starting all services in background...

  → user_service (port 13001)... ✅
  → api (port 8001)... ✅
  → api_gateway (port 8000)... ✅

📍 Service Status:
  ● user_service - RUNNING (port 13001)
     📝 Logs: /hdd/dev/cubenet_backend/.logs/user_service.log
  ● api - RUNNING (port 8001)
     📝 Logs: /hdd/dev/cubenet_backend/.logs/api.log
  ● api_gateway - RUNNING (port 8000)
     📝 Logs: /hdd/dev/cubenet_backend/.logs/api_gateway.log

💡 Quick commands:
  • cubenet status              - Show all services status
  • cubenet logs -s api_gateway - View API Gateway logs
  • cubenet stop                - Stop all services

🌐 Access points:
  • http://localhost:8000/health
  • http://localhost:8000/swagger-ui.html

status command

══════════════════════════════════════════════════════════════════════
📊 Cubenet Services Status
══════════════════════════════════════════════════════════════════════

  ● RUNNING   api_gateway      (:8000) - REST Gateway + Swagger
     📝 /hdd/dev/cubenet_backend/.logs/api_gateway.log
  ● RUNNING   api              (:8001) - Internal API Layer
     📝 /hdd/dev/cubenet_backend/.logs/api.log
  ● RUNNING   user_service     (:13001) - User gRPC Service
     📝 /hdd/dev/cubenet_backend/.logs/user_service.log

══════════════════════════════════════════════════════════════════════

💡 Commands:
  • cubenet start                   - Start all services
  • cubenet stop                    - Stop all services
  • cubenet restart -s api_gateway - Restart specific service
  • cubenet logs -s api_gateway    - View service logs
  • cubenet build                   - Build all services

config command

══════════════════════════════════════════════════════════════════════
⚙️  Cubenet CLI Configuration
══════════════════════════════════════════════════════════════════════

🌐 Environment:
  Base URL   : http://localhost:8000
  Swagger UI : http://localhost:8000/swagger-ui.html
  Project    : /hdd/dev/cubenet_backend
  Version    : 0.1.0

📦 Services:
  🟢 RUNNING - user_service (port 13001)
  🟢 RUNNING - api (port 8001)
  🟢 RUNNING - api_gateway (port 8000)

💻 Available Commands:
  • start [OPTIONS] - Start services in background
  • stop [OPTIONS] - Stop running services
  • build [OPTIONS] - Build services (--release, --clean)
  • test [OPTIONS] - Run tests (--integration)
  • status - Show real-time service status
  • logs [OPTIONS] - View service logs (--follow, --lines N)
  • restart [OPTIONS] - Restart services
  • clean - Clean build artifacts
  • docs [--open] - Generate and view documentation
  • new <name> --port N - Create new microservice
  • config - Show this configuration

🚀 Quick Start:
  1. → cubenet start
  2. → cubenet status
  3. → Open http://localhost:8000/swagger-ui.html

📂 Log Files:
  Location : /hdd/dev/cubenet_backend/.logs

📂 Log Files

Логи сохраняются в .logs/:

.logs/
├── api_gateway.log    # REST Gateway логи
├── api.log            # API слой логи
└── user_service.log   # User Service логи

Когда вы запускаете cubenet start, каждый сервис автоматически логирует весь вывод (stdout + stderr) в соответствующий файл.

🔧 Alias для удобства

Добавьте в ~/.bashrc или ~/.zshrc:

alias cs='cargo run -p cubenet-cli -- start'
alias cstop='cargo run -p cubenet-cli -- stop'
alias cst='cargo run -p cubenet-cli -- status'
alias cl='cargo run -p cubenet-cli -- logs'
alias cr='cargo run -p cubenet-cli -- restart'
alias cb='cargo run -p cubenet-cli -- build'
alias ct='cargo run -p cubenet-cli -- test'

Тогда можно использовать просто:

cs                        # start all
cst                       # status
cl -s api_gateway         # logs api_gateway
cr -s api_gateway         # restart api_gateway
cstop                     # stop all

🌐 Access Services

После cubenet start сервисы доступны:

📖 Help

# Справка
cargo run -p cubenet-cli -- --help

# Справка по команде
cargo run -p cubenet-cli -- start --help

# Версия
cargo run -p cubenet-cli -- --version

Version: 0.2.0 (Background Process Management)
Status: Production Ready