Справочник CLI

Интерфейс командной строки среды выполнения Wippy.

Глобальные флаги

Доступны для всех команд:

Флаг Сокр. Описание
--config Файл конфигурации, повторяемый; более поздние файлы переопределяют более ранние (по умолчанию: .wippy.yaml)
--verbose -v Включить отладочное логирование
--very-verbose Отладка с трассировкой стека
--console -c Цветное консольное логирование
--silent -s Отключить консольное логирование
--event-streams -e Потоковая передача логов в шину событий
--profiler -p Включить pprof на localhost:6060
--memory-limit -m Лимит памяти (например, 1G, 512M)

Приоритет лимита памяти: флаг --memory-limit > переменная окружения GOMEMLIMIT > 1GB по умолчанию.

--config можно передавать несколько раз для композиции файлов конфигурации. Файлы объединяются слева направо: более поздние файлы переопределяют совпадающие значения и сохраняют всё остальное. Каждый явно указанный файл должен существовать; без --config стандартный .wippy.yaml необязателен. Первый файл задаёт директорию, относительно которой разрешаются относительные пути. Конфигурация применяется по порядку: композиция файлов, затем выбор --profile, затем переопределения --set. См. Конфигурация.

wippy init

Создать новый lock-файл.

wippy init
wippy init --src-dir ./src --modules-dir .wippy
Флаг Сокр. По умолчанию Описание
--src-dir -d ./src Директория исходного кода
--modules-dir .wippy Директория модулей
--lock-file -l wippy.lock Путь к lock-файлу

wippy run

Запустить среду выполнения или выполнить команду.

wippy run                                   # Запустить среду выполнения
wippy run list                              # Список доступных команд
wippy run migrate                           # Запустить именованную пользовательскую команду
wippy run snapshot.wapp                     # Запустить из pack-файла
wippy run acme/http                         # Запустить модуль из хаба
wippy run acme/http@1.2.3                   # Запустить конкретную версию
wippy run --exec app:worker                 # Запустить среду и выполнить один процесс
Флаг Сокр. Описание
--override -o Переопределить значения записи (namespace:entry:field=value); field может быть kind для изменения вида записи
--set Переопределить значение конфигурации (section.path=value, повторяемый, имеет приоритет над файлом конфигурации)
--exec -x Выполнить процесс и завершить (namespace:entry)
--host ID терминального хоста для --exec (определяется автоматически, если существует только один terminal.host)
--registry URL реестра для модулей хаба
--profile Применить профиль среды выполнения из .wippy.yaml или метаданных упакованной среды (повторяемый, применяется по порядку)

Запуск модуля из хаба (wippy run org/module) разрешает его один раз, записывает в wippy.lock и складывает проверенные пакеты локально. Последующие запуски той же ссылки стартуют из lock-файла — сеть не нужна. Селектор версии, который больше не совпадает с lock-файлом, отклоняется с подсказкой выполнить wippy update.

Для локального приложения wippy run чинит устаревший lock-файл до старта любого сервиса среды выполнения. Он загружает объявления зависимостей из исходников, и если lock-файл уже им удовлетворяет — пересобирает граф только по локальным и уже установленным данным (проверенный офлайн-доступ, без сети). Если результат офлайн-разрешения совпадает с lock-файлом, загрузка продолжается без изменений. Если он успешен, но отличается, он становится кандидатным графом; к хабу за разрешением обращаются только тогда, когда офлайн-проход не удался или lock-файл больше не удовлетворяет объявлениям из исходников. Пакеты, которых кандидатному графу не хватает, скачиваются и проверяются, и только после этого wippy.lock перезаписывается. Lock-файл, выбирающий корень развёртывания, авторитетен и никогда не разрешается заново.

--exec блокируется до тех пор, пока запущенный процесс не выдаст результат, после чего код завершения процесса становится кодом завершения CLI. Ctrl-C во время --exec отменяет выполняемый процесс, и среда выполнения всё равно завершается штатно; второй сигнал вызывает принудительный выход.

--set записывает любое значение конфигурации среды выполнения из командной строки, объединяя с .wippy.yaml по каждому листу:

wippy run --set cluster.enabled=true \
          --set cluster.membership.join_addrs=node-2:7946,node-3:7946 \
          --set cluster.raft.bootstrap_expect=3

Значения преобразуются по форме: true/false в bool, целые и дробные числа в числа, остальное остаётся строкой (длительности вроде 5s разбираются там, где опция этого ожидает).

wippy test

Запустить точку входа тестов: запись процесса, объявляющую вариант использования test. Среда выполнения загружается, выполняет эту запись и завершается. wippy run не запускает тестовые точки входа автоматически; тестирование всегда идёт через wippy test.

wippy test                     # Запустить тесты из локального проекта
wippy test snapshot.wapp       # Запустить тесты из pack-файла
wippy test acme/module@1.2.3   # Запустить тесты из модуля хаба
Флаг Сокр. Описание
--override -o Переопределить значения записи (namespace:entry:field=value)
--host ID терминального хоста (определяется автоматически, если существует только один terminal.host)
--registry URL реестра для модулей хаба
--set Переопределить значение конфигурации (section.path=value, повторяемый)
--profile Применить профиль среды выполнения (повторяемый, применяется по порядку)

wippy lint

Проверить Lua-код на ошибки типов и предупреждения.

wippy lint
wippy lint --level warning
wippy lint --json
wippy lint --rules

Проверяет все Lua-записи: function.lua, library.lua, process.lua, workflow.lua (включая их .bc-варианты).

Флаг Сокр. По умолчанию Описание
--lock-file -l wippy.lock Путь к lock-файлу
--level warning Минимальная серьёзность: error, warning, hint
--ns Фильтр по шаблонам пространства имён (например, app, lib.*)
--code Фильтр по кодам ошибок (например, E0001,E0004)
--rules false Включить правила стиля/качества
--summary false Группировать вывод по коду ошибки
--limit 0 Максимум показанных диагностик (0 = без ограничений)
--json false Вывод в JSON
--no-color false Отключить цветной вывод
--cache-reset false Очистить кэш Lua перед линтингом
--profile Применить профиль рабочего пространства из объединённой конфигурации среды выполнения (повторяемый)
--set Переопределить значение объединённой конфигурации среды выполнения (section.path=value, повторяемый)

wippy add

Добавить зависимость модуля.

wippy add acme/http
wippy add acme/http@1.2.3
wippy add acme/http@latest
Флаг Сокр. По умолчанию Описание
--lock-file -l wippy.lock Путь к lock-файлу
--registry URL реестра

wippy install

Установить зависимости из lock-файла.

wippy install                            # Установить все
wippy install acme/http                  # Установить конкретный модуль
wippy install --refresh acme/http        # Перекачать конкретный модуль
Флаг Сокр. По умолчанию Описание
--lock-file -l wippy.lock Путь к lock-файлу
--refresh false Перекачать каждый модуль, минуя кэш
--force false Псевдоним для --refresh
--repair false Псевдоним для --refresh
--registry URL реестра
--profile Применить профиль рабочего пространства из объединённой конфигурации среды выполнения (повторяемый)
--set Переопределить значение объединённой конфигурации среды выполнения (section.path=value, повторяемый)

wippy update

Обновить зависимости и пересоздать lock-файл.

wippy update                      # Обновить все
wippy update acme/http            # Обновить конкретный модуль
wippy update acme/http demo/sql   # Обновить несколько
Флаг Сокр. По умолчанию Описание
--lock-file -l wippy.lock Путь к lock-файлу
--src-dir -d ./src Директория исходного кода
--modules-dir .wippy Директория модулей
--registry URL реестра
--profile Применить профиль рабочего пространства из объединённой конфигурации среды выполнения (повторяемый)
--set Переопределить значение объединённой конфигурации среды выполнения (section.path=value, повторяемый)

wippy artifacts

Работа с артефактами файловой системы на этапе сборки.

wippy artifacts materialize

Проверить и материализовать одну файловую систему-артефакт из существующего пакета.

wippy artifacts materialize snapshot.wapp app:package_fs
wippy artifacts materialize snapshot.wapp app:package_fs --root build
Флаг По умолчанию Описание
--root .wippy Корень материализации

Ресурс адресуется полным namespace:name, должен объявлять meta.artifact.format, и этот формат должен быть зарегистрирован в CLI. Команда не разрешает зависимости модулей, не изменяет wippy.lock, не вызывает менеджеры пакетов и не участвует в композиции среды выполнения. См. Артефакты сборки.

wippy pack

Создать snapshot-пакет (файл .wapp).

wippy pack snapshot.wapp
wippy pack release.wapp --description "Release 1.0"
wippy pack app.wapp --embed app:assets --bytecode **
Флаг Сокр. Описание
--lock-file -l Путь к lock-файлу
--description -d Описание пакета
--tags -t Теги пакета (через запятую)
--meta Пользовательские метаданные (key=value)
--embed Встроить записи fs.directory (паттерны)
--embed-all Встроить все записи fs.directory (нельзя сочетать с --embed)
--list Список записей fs.directory (пробный запуск)
--exclude-ns Исключить пространства имён (паттерны)
--exclude Исключить записи (паттерны)
--bytecode Компилировать Lua в байткод (** для всех)
--profile Применить профиль среды выполнения из .wippy.yaml перед упаковкой (повторяемый, применяется по порядку)

Без --embed и --embed-all паттерны встраивания берутся из секции embed: манифеста модуля wippy.yaml. Упаковка приложения также переносит встроенные ресурсы из пакетов его зависимостей, а итоговый пакет предоставляет команды только основного модуля.

Выходной файл записывается атомарно: пакет собирается во временный файл в целевой директории, синхронизируется, проверяется и только затем переименовывается поверх целевого, наследуя права существующего файла, если он есть. Неудачная упаковка оставляет прежний файл нетронутым. Указание выходного файла, который одновременно является одним из входов пакета — тот же путь либо жёсткая или символическая ссылка, ведущая на тот же файл, — отклоняется, а не приводит к усечению входа посреди чтения.

--meta не может записывать зарезервированные метаданные. Ключ registry, а также всё под префиксами wippy. и system., принадлежит формату пакета и отклоняется.

Ресурсы, объявляющие meta.artifact.format, проверяются во время упаковки, поэтому некорректный артефакт падает здесь, а не у потребителя. См. Артефакты сборки.

wippy publish

Опубликовать модуль в хаб.

wippy publish
wippy publish --version 1.0.0
wippy publish --dry-run

Читает из wippy.yaml в текущей директории.

Флаг Описание
--version Версия для публикации
--dry-run Проверить без публикации
--label Опубликовать как изменяемую метку вместо версии
--release-notes Заметки к релизу
--protected Пометить версию как защищённую
--embed Встроить записи fs.directory по id или имени
--config Путь к директории с wippy.yaml (по умолчанию: .)
--registry URL реестра
--create Создать модуль в реестре, если он ещё не существует
--module-visibility Видимость для новых модулей (только с --create): public или private (по умолчанию: private)
--module-type Тип модуля: library, application, agent или plugin (переопределяет type: в wippy.yaml)
--module-display-name Отображаемое имя для новых модулей (только с --create)

Тип модуля обычно объявляется как type: в wippy.yaml (см. Публикация); --module-type переопределяет его для одной публикации. Если не задано ни то, ни другое, новые модули по умолчанию получают тип application с предупреждением об устаревании.

Поиск модулей в хабе.

wippy search http
wippy search "sql driver" --limit 20
wippy search auth --json
Флаг По умолчанию Описание
--json false Вывод в формате JSON
--limit 20 Максимальное количество результатов
--registry URL реестра

wippy auth

Управление аутентификацией в реестре.

wippy auth login

wippy auth login
wippy auth login --token YOUR_TOKEN
Флаг Описание
--token API-токен
--registry URL реестра
--local Сохранить учётные данные локально

wippy auth logout

wippy auth logout
Флаг Описание
--registry URL реестра
--local Удалить локальные учётные данные

wippy auth status

wippy auth status
wippy auth status --json
Флаг Описание
--json Вывод в JSON

wippy readme

Получить README модуля из хаба.

wippy readme wippy/terminal
wippy readme wippy/terminal@1.2.3
wippy readme --json wippy/terminal@latest
Флаг Описание
--json Вывод в формате JSON
--registry URL реестра (по умолчанию: из учётных данных)

wippy registry

Запрос и просмотр записей реестра. Обе подкоманды принимают --profile и --set, задающие объединённую конфигурацию среды выполнения, под которой загружаются записи.

wippy registry list

wippy registry list
wippy registry list --kind "function.lua.*"
wippy registry list --ns "app.*" --json
wippy registry list --meta "type=api" --meta "enabled=true"
Флаг Сокр. Описание
--kind -k Фильтр по типу (glob-шаблон)
--ns -n Фильтр по пространству имён (glob-шаблон)
--name Фильтр по имени (glob-шаблон)
--meta Фильтр по метаданным (можно повторять)
--json Вывод в формате JSON
--yaml Вывод в формате YAML
--registry-meta Включить метаданные, принадлежащие реестру (owner, root), в вывод JSON или YAML; требует --json или --yaml
--lock-file -l Путь к lock-файлу

Операторы метаданных для --meta:

Оператор Значение
field=value Точное совпадение
field~regex Совпадение по regex
field*substr Содержит подстроку
field^prefix Начинается с префикса
field$suffix Заканчивается на суффикс

wippy registry show

wippy registry show app:http:handler
wippy registry show app:config --yaml
Флаг Сокр. Описание
--field -f Показать конкретное поле
--json Вывод в формате JSON
--yaml Вывод в формате YAML
--raw Сырой вывод
--lock-file -l Путь к lock-файлу

wippy version

Вывести информацию о версии.

wippy version
wippy version --short

Пользовательские команды

Любая запись process.lua или process.wasm может быть зарегистрирована как именованная команда с помощью метаданных command:

entries:
  - name: migrate_runner
    kind: process.lua
    meta:
      command:
        name: migrate
        short: Run database migrations
    source: file://runner.lua
    method: main
    modules:
      - io
      - registry
      - funcs

Запуск:

wippy run migrate

Список всех доступных команд:

wippy run list

wippy run list принимает --profile и --set, поэтому список отражает ту же объединённую конфигурацию среды исполнения, которую использовал бы wippy run.

Поля метаданных команды

Поле Обязательное Описание
name Да Имя команды для использования с wippy run <name>
short Нет Краткое описание, отображаемое в wippy run list
main Нет Пометить эту запись как точку входа по умолчанию. Когда pack-файл или модуль хаба запускается без имени команды, выполняется единственная запись с main в этом use case; одиночная точка входа выбирается и без main, а несколько точек входа без main — ошибка
use_case Нет Категория точки входа, по умолчанию run. Запись, объявляющая use_case: test, — это то, что выполняет wippy test
security Нет Контекст безопасности, под которым команда выполняется при запуске из CLI

Подходит любой тип записи процесса (process.lua, process.wasm). Имена команд не проверяются на уникальность; когда несколько загруженных записей объявляют одно и то же имя, запускается первое совпадение в порядке реестра. Аргументы после имени команды передаются процессу в виде строкового payload.

Безопасность команды

Запись команды объявляет актора и область политик, под которыми выполняется её запуск из CLI:

entries:
  - name: migrate_runner
    kind: process.lua
    meta:
      command:
        name: migrate
        short: Run database migrations
        security:
          actor:
            id: system.migrations
            meta:
              role: operator
          policies:
            - app.security:migrations_policy
          groups:
            - app.security:operators
    source: file://runner.lua
    method: main
Поле Описание
actor.id Идентичность актора для запускаемого процесса
actor.meta Атрибуты актора, вычисляемые политиками
policies ID отдельных политик в реестре (namespace:name), добавляемых в область
groups ID групп политик в реестре, чьи политики добавляются в область

Блок находится внутри meta.command, потому что применяется только к пути запуска из CLI — оператор запустил команду на собственном развёртывании, и это якорь доверия. На обычные spawn той же записи процесса он не влияет; они следуют собственному блоку security: записи.

Объявление fail-closed и проверяется до старта процесса:

  • Неизвестные поля внутри security отклоняются.
  • Пустой блок security (без актора, политик и групп) отклоняется.
  • security без name отклоняется — чтобы команду можно было запустить, она должна быть именуемой.
  • Политика или группа, которую не удалось разрешить, запрещает запуск; разрешение атомарно, поэтому частичная область никогда не устанавливается.

Когда блок опускает actor, наследуется актор вызывающего. Когда он опускает и policies, и groups, наследуется область вызывающего.

Примеры

Рабочий процесс разработки

# Инициализация проекта
wippy init
wippy add wippy/test wippy/llm
wippy install

# Проверка на ошибки
wippy lint

# Запуск с отладочным выводом
wippy run -c -v

# Переопределение конфигурации для локальной разработки
wippy run -o app:db:host=localhost -o app:db:port=5432

Развёртывание в продакшен

# Создание релизного пакета с байткодом
wippy pack release.wapp --bytecode ** --exclude-ns test.**

# Запуск из пакета с лимитом памяти
wippy run release.wapp -m 2G

Отладка

# Выполнение одного процесса
wippy run --exec app:worker

# С включённым профилировщиком
wippy run -p -v
# Затем: go tool pprof http://localhost:6060/debug/pprof/heap

Управление зависимостями

# Добавить новую зависимость
wippy add acme/http@latest

# Принудительно перескачать
wippy install --force

# Обновить конкретный модуль
wippy update acme/http

Публикация

# Вход в хаб
wippy auth login

# Проверка модуля
wippy publish --dry-run

# Публикация
wippy publish --version 1.0.0 --release-notes "Initial release"

Переменные окружения

Переменная Действие
WIPPY_TOKEN Токен аутентификации в реестре; переопределяет сохранённые учётные данные (токен, установленный через hub.auth.authenticate, имеет ещё более высокий приоритет)
WIPPY_REGISTRY URL реестра по умолчанию (переопределяется --registry)
WIPPY_CACHE_DIR Директория кэша для модулей хаба, запускаемых через wippy run org/module (по умолчанию: ~/.wippy/cache)
GOMEMLIMIT Резервный лимит памяти, когда --memory-limit не задан

Значения в .wippy.yaml могут ссылаться на переменные окружения ОС через ${env:NAME}, разрешаемые при загрузке файла; отсутствующая переменная приводит к ошибке загрузки конфигурации. Голые ссылки ${name} разрешаются из секции vars: конфигурации.

Файл конфигурации

Создайте .wippy.yaml для постоянных настроек:

logger:
  encoding: console

logmanager:
  stream_to_events: true

profiler:
  enabled: true
  address: localhost:6060

override:
  app:gateway:addr: ":9090"
  app:db:host: "localhost"

Смотрите также