Справочник 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
Поиск модулей в хабе.
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"
Смотрите также
- Конфигурация — справочник по файлу конфигурации
- Наблюдаемость — мониторинг и логирование