lunaio

module
v2.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2026 License: MIT

README

lunaio — Multi-Language Protobuf/gRPC Build System

License Go Version Version Stars Issues CI

Быстрые инкрементальные сборки protobuf/gRPC для Python, Go, Rust и C++


Возможности

  • Скорость — кэш, инкрементальные и параллельные сборки
  • 🌍 Мультиязычность — Python / Go / Rust / C++
  • 🧩 Расширяемость — плагины, шаблоны, workspaces
  • 🔐 Security-first — permissions audit, матрица прав доступа
  • 📈 Наблюдаемость — stats, metrics, dependency graph, LSP

Установка

Linux / macOS / Windows

go install github.com/massonsky/lunaio/v2/cmd/lunaio@latest

Из исходников

git clone https://github.com/massonsky/lunaio.git
cd lunaio
make install        # устанавливает в $GOPATH/bin

Проверь установку:

lunaio --version
lunaio doctor       # диагностика зависимостей (protoc, плагины)

Быстрый старт

lunaio init myproject   # создать проект
cd myproject
lunaio build            # собрать все .proto

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

Файл lunaio.yaml в корне проекта (создаётся через lunaio init):

version: 1.0

global:
  proto_path:
    - ./proto
  output_path: ./generated
  parallel: 0        # 0 = auto (число CPU)
  incremental: true

languages:
  go:
    enabled: true
    output: ./generated/go
    go_package_prefix: github.com/yourorg/project
    plugins: [grpc]
    options:
      go_opt: paths=source_relative

  python:
    enabled: true
    output: ./generated/python
    plugins: [grpc]

  rust:
    enabled: false
    output: ./generated/rust
    plugins: [tonic]

  cpp:
    enabled: false
    output: ./generated/cpp
    plugins: [grpc]

build:
  workers: 0
  incremental: true
  cache:
    enabled: true
    directory: .lunaio-cache

logging:
  level: info         # debug | info | warn | error
  format: colored     # text | json | colored

Готовые примеры конфигов: configs/


CLI

Команда Описание
lunaio init [name] Инициализировать новый проект
lunaio build Собрать все .proto файлы
lunaio watch Следить за изменениями и пересобирать
lunaio rebuild Принудительная полная пересборка (без кэша)
lunaio validate Проверить корректность .proto
lunaio lint Линт .proto файлов
lunaio format Форматировать .proto файлы
lunaio diff Показать изменения с последней сборки
lunaio check Проверить конфигурацию проекта
lunaio graph Визуализировать граф зависимостей
lunaio stats Статистика проекта
lunaio metrics Метрики сборки
lunaio deps Управление зависимостями
lunaio tools Управление инструментами (protoc, плагины)
lunaio plugin Управление плагинами
lunaio template Управление шаблонами
lunaio models Кодогенерация моделей (ORM-aware)
lunaio permissions Аудит и генерация матрицы прав
lunaio workspace Управление monorepo workspace
lunaio lsp Запустить LSP-сервер
lunaio doctor Диагностика окружения
lunaio version Версия и информация о сборке
lunaio upgrade Обновить lunaio

Глобальные флаги: --config <file>, --verbose / -v


Плагины

Плагины расширяют набор генераторов кода. Встроенные подключаются автоматически, внешние — через lunaio plugin install:

lunaio plugin list
lunaio plugin install <name>

Конфигурация плагина в lunaio.yaml:

plugins:
  - name: my-plugin
    path: ./plugins/my-plugin
    options:
      key: value

Модели (lunaio.models)

Аннотации в .proto для ORM-aware кодогенерации:

import "lunaio/models/annotations.proto";

message User {
  option (lunaio.model) = {
    table: "users"
    orm: [GORM, SQLALCHEMY]
  };
  int64 id    = 1 [(lunaio.field) = {primary_key: true}];
  string name = 2 [(lunaio.field) = {index: true}];
}

Генерирует модели для Go (GORM), Python (SQLAlchemy), Rust (Diesel), C++.


Permissions / RBAC

Аудит прав доступа к сервисам и генерация политик:

lunaio permissions audit    # анализ прав в .proto
lunaio permissions matrix   # сгенерировать матрицу доступа
lunaio permissions generate # сгенерировать политики (OPA / Casbin)

Workspace (Monorepo)

lunaio workspace init       # инициализировать workspace
lunaio workspace list       # список проектов
lunaio workspace build      # собрать все проекты
lunaio workspace affected   # только затронутые изменениями

Граф зависимостей

lunaio graph                # ASCII-граф
lunaio graph --format dot   # экспорт в Graphviz DOT
lunaio graph --format mermaid

Разработка

make build      # собрать бинарь в ./bin/lunaio
make test       # запустить тесты
make lint       # линт
make check      # fmt + vet + lint + test
make build-all  # кросс-компиляция (linux/darwin/windows)

Или через скрипты:

./build.sh check    # Linux/macOS
.\build.ps1 check   # Windows

CI/CD

Проект использует GitHub Actions:

  • CI (.github/workflows/ci.yml) — lint + test (ubuntu/windows/macos) + build → автоматически создаёт git-тег при мерже в main
  • Release (.github/workflows/lunaio-release.yml) — собирает бинари для 5 платформ, публикует GitHub Release с checksums
  • Smoke Test (.github/workflows/lunaio-build.yml) — проверяет опубликованный релизный бинарь на всех ОС

Контрибьютинг

  1. Форк → ветка → PR в develop
  2. Придерживайся стиля кода (make check должен проходить)
  3. Покрывай новую функциональность тестами

CONTRIBUTING.md · Issues · Discussions


Лицензия

MIT © massonsky

Directories

Path Synopsis
cmd
lunaio command
internal
cli
compiler
Package compiler defines the common interface for language-specific compilers.
Package compiler defines the common interface for language-specific compilers.
compiler/python
Package python implements the Python protobuf compiler.
Package python implements the Python protobuf compiler.
config
Package config provides configuration management for lunaio.
Package config provides configuration management for lunaio.
dependency
Package dependency provides dependency management for proto files.
Package dependency provides dependency management for proto files.
embedded
Package embedded provides proto files bundled into the lunaio binary.
Package embedded provides proto files bundled into the lunaio binary.
graph
Package graph provides dependency graph analysis and visualization for proto files.
Package graph provides dependency graph analysis and visualization for proto files.
lsp
Package lsp implements the Language Server Protocol for lunaio.
Package lsp implements the Language Server Protocol for lunaio.
models
Package models provides proto model annotation parsing, code generation, and ORM integration for lunaio.models.
Package models provides proto model annotation parsing, code generation, and ORM integration for lunaio.models.
permissions
Package permissions provides RBAC/ABAC permission management for protobuf services.
Package permissions provides RBAC/ABAC permission management for protobuf services.
plugin
Package plugin provides a flexible plugin system for extending lunaio functionality.
Package plugin provides a flexible plugin system for extending lunaio functionality.
plugin/examples
Package examples provides example plugins for lunaio This demonstrates how to create a simple validator plugin
Package examples provides example plugins for lunaio This demonstrates how to create a simple validator plugin
tools
Package tools provides language tools installation for lunaio.
Package tools provides language tools installation for lunaio.
upgrade
Package upgrade provides functionality for upgrading lunaio and migrating configurations.
Package upgrade provides functionality for upgrading lunaio and migrating configurations.
validation
Package validation provides proto field validation rule parsing and code generation.
Package validation provides proto field validation rule parsing and code generation.
version
Package version provides version information for lunaio.
Package version provides version information for lunaio.
workspace
Package workspace provides multi-project monorepo management for lunaio.
Package workspace provides multi-project monorepo management for lunaio.
pkg
errors
Package errors provides enhanced error handling with codes, stack traces, and context.
Package errors provides enhanced error handling with codes, stack traces, and context.
logger
Package logger provides a flexible, structured logging system for lunaio.
Package logger provides a flexible, structured logging system for lunaio.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL