CLI リファレンス
Wippy CLI を使用して、プロジェクトの初期化、ランタイムの実行、依存関係の管理、レジストリエントリの確認、モジュールの公開を行います。
これはコマンドリファレンスです。ソース、ロックファイル、レジストリエントリ、または公開メタデータを扱うコマンドの例は、既存のプロジェクトまたはモジュールを前提としています。単一のエンドツーエンドプロジェクトを示すものではありません。
グローバルフラグ
全てのコマンドで使用可能:
| フラグ | 短縮形 | 説明 |
|---|---|---|
--config |
設定ファイル。繰り返し可能で、後のファイルが前のファイルを上書きします (デフォルト: .wippy.yaml)。wippy publish では別のコマンドローカルオプションが定義されます。 |
|
--verbose |
-v |
デバッグログを有効化 |
--very-verbose |
スタックトレース付きデバッグ | |
--console |
-c |
カラフルなコンソールログ |
--silent |
-s |
コンソールログを無効化 |
--event-streams |
-e |
イベントバスへログをストリーム |
--profiler |
-p |
localhost:6060 で pprof を有効化 |
--memory-limit |
-m |
メモリ制限 (例: 1G, 512M) |
メモリ制限の優先順位: --memory-limit フラグ > GOMEMLIMIT 環境変数 > デフォルト 1GB。
グローバルの --config は複数回指定して設定ファイルを合成できます。ファイルは左から右にマージされ、後のファイルが一致する値を上書きし、それ以外はすべて保持します。明示的に指定したファイルはすべて存在しなければなりません。--config なしの場合、デフォルトの .wippy.yaml は任意です。最初のファイルが、相対パスの解決に使われるディレクトリを決めます。設定は、ファイルの合成、--profile の選択、--set の上書きの順に適用されます。設定を参照してください。
wippy publish はグローバルオプションを、コマンドローカルの --config <dir> オプションで置き換えます。このコマンドでは、値は繰り返し可能なランタイム設定ファイルではなく、wippy.yaml を含むディレクトリです。
wippy init
wippy.lock を作成します。すでに存在する場合は、そのソースディレクトリとモジュールディレクトリの設定を更新します。このコマンドは、アプリケーションのソースファイルやレジストリエントリを生成しません。
wippy init
wippy init --src-dir ./src --modules-dir .wippy
| フラグ | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--src-dir |
-d |
./src | ソースディレクトリ |
--modules-dir |
.wippy | モジュールディレクトリ | |
--lock-file |
-l |
wippy.lock | ロックファイルのパス |
wippy run
ランタイムを起動するか、コマンドを実行する。
wippy run # Start runtime
wippy run list # List available commands
wippy run migrate # Run a named custom command
wippy run snapshot.wapp # Run from pack file
wippy run acme/http # Run module from hub
wippy run acme/http@1.2.3 # Run specific version
wippy run --exec app:worker # Start runtime and execute a single process
| フラグ | 短縮形 | 説明 |
|---|---|---|
--override |
-o |
エントリの値を上書き (namespace:entry:field=value);field に kind を指定するとエントリの種類を変更 |
--set |
設定値を上書き (section.path=value、繰り返し可能、設定ファイルより優先) |
|
--exec |
-x |
プロセスを実行して終了 (namespace:entry) |
--host |
--exec 用のターミナルホスト ID (terminal.host が 1 つしか存在しない場合は自動検出) |
|
--registry |
ハブモジュール用のレジストリ URL | |
--profile |
.wippy.yaml またはパックされたランタイムメタデータからランタイムプロファイルを適用 (繰り返し可能、順に適用) |
ハブモジュールの実行 (wippy run org/module) は一度だけ解決を行い、wippy.lock に記録し、検証済みパックをローカルにベンダリングします。同じ参照のその後の実行はロックから開始されます — ネットワークは不要です。ロックと一致しなくなったバージョンセレクタは、wippy update の実行を促すヒントとともに拒否されます。
ローカルのアプリケーションでは、wippy run はランタイムサービスが起動する前に古くなったロックを修復します。ソースの依存関係宣言を読み込み、ロックがすでにそれらを満たしている場合は、ローカルおよびインストール済みの証跡のみからグラフを再解決します (verified-offline アクセス、ネットワークなし)。このオフライン解決がロックと一致すれば、ブートはそのまま続行します。解決に成功したがロックと異なる場合、それが候補グラフになります。ハブに解決を依頼するのは、オフライン解決が失敗した場合か、ロックがソースの宣言をもはや満たしていない場合だけです。候補グラフに欠けているパックがダウンロードされて検証され、その後にのみ wippy.lock が書き換えられます。デプロイメントルートを選択しているロックは信頼できる情報源であり、再解決されることはありません。
--exec は起動したプロセスが結果を生成するまでブロックし、そのプロセスの終了コードを CLI の終了コードとして伝播します。--exec 中の Ctrl-C は実行中のプロセスをキャンセルし、ランタイムはそれでもグレースフルにシャットダウンします。2 回目のシグナルは強制終了します。
--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 はブール値、整数と浮動小数点数は数値となり、それ以外は文字列のままです。期間を期待するフィールドでは、5s のような値が解析されます。
wippy test
テストエントリポイント、すなわち test ユースケースを宣言するプロセスエントリを実行する。ランタイムが起動し、そのエントリを実行して終了する。wippy run はテストエントリポイントを自動実行しない。テストは常に wippy test を通して行う。
wippy test # Run tests from the local project
wippy test snapshot.wapp # Run tests from a pack file
wippy test acme/module@1.2.3 # Run tests from a hub module
| フラグ | 短縮形 | 説明 |
|---|---|---|
--override |
-o |
エントリの値を上書き (namespace:entry:field=value) |
--host |
ターミナルホスト ID (terminal.host が 1 つしか存在しない場合は自動検出) |
|
--registry |
ハブモジュール用のレジストリ URL | |
--set |
設定値を上書き (section.path=value、繰り返し可能) |
|
--profile |
ランタイムプロファイルを適用 (繰り返し可能、順に適用) |
wippy lint
Lua コードの型エラーや警告をチェックする。
wippy lint
wippy lint --level warning
wippy lint --json
wippy lint --rules
ソースを含む function.lua、library.lua、process.lua、workflow.lua エントリを検証します。プリコンパイル済みの .bc エントリには解析可能なソースが含まれないため、スキップされます。
| フラグ | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--lock-file |
-l |
wippy.lock |
ロックファイルのパス |
--level |
warning |
最小重大度: error、warning、hint |
|
--ns |
名前空間パターンでフィルタ (例: app、lib.*) |
||
--code |
エラーコードでフィルタ (例: E0001,E0004) |
||
--rules |
false |
スタイル/品質 lint ルールを有効化 | |
--summary |
false |
エラーコードで出力をグループ化 | |
--limit |
0 |
表示する最大診断数 (0 = 無制限) | |
--json |
false |
JSON 出力 | |
--no-color |
false |
カラー出力を無効化 | |
--cache-reset |
false |
lint 前に 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 | ロックファイルのパス |
--registry |
レジストリ URL |
wippy install
ロックファイルから依存関係をインストールする。
wippy install # Install all
wippy install acme/http # Install specific module
wippy install --refresh acme/http # Re-fetch a specific module
| フラグ | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--lock-file |
-l |
wippy.lock | ロックファイルのパス |
--refresh |
false | 名前を指定した場合はそのモジュールを、名前を指定しない場合はロック済みの全モジュールをキャッシュを使わず再取得 | |
--force |
false | --refresh のエイリアス |
|
--repair |
false | --refresh のエイリアス |
|
--registry |
レジストリ URL | ||
--profile |
マージされたランタイム設定からワークスペースプロファイルを適用 (繰り返し可能) | ||
--set |
マージされたランタイム設定値を上書き (section.path=value、繰り返し可能) |
wippy update
依存関係を更新し、ロックファイルを再生成する。
wippy update # Update all
wippy update acme/http # Update specific module
wippy update acme/http demo/sql # Update multiple
| フラグ | 短縮形 | デフォルト | 説明 |
|---|---|---|---|
--lock-file |
-l |
wippy.lock | ロックファイルのパス |
--src-dir |
-d |
./src | ソースディレクトリ |
--modules-dir |
.wippy | モジュールディレクトリ | |
--registry |
レジストリ URL | ||
--profile |
マージされたランタイム設定からワークスペースプロファイルを適用 (繰り返し可能) | ||
--set |
マージされたランタイム設定値を上書き (section.path=value、繰り返し可能) |
wippy artifacts
ビルド時のファイルシステムアーティファクトを扱う。
wippy artifacts materialize
既存のパックから 1 つのアーティファクトファイルシステムを検証してマテリアライズする。
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
スナップショットパック (.wapp ファイル) を作成する。
wippy pack snapshot.wapp
wippy pack release.wapp --description "Release 1.0"
wippy pack app.wapp --embed app:assets --bytecode "**"
| フラグ | 短縮形 | 説明 |
|---|---|---|
--lock-file |
-l |
ロックファイルのパス |
--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 も指定しない場合、埋め込みパターンはモジュールマニフェスト wippy.yaml の embed: セクションにフォールバックします。アプリケーションをパックすると依存パックの埋め込みリソースも引き継がれ、生成されたパックが公開するのはメインモジュールのコマンドのみです。
出力ファイルはアトミックに書き込まれます。パックは出力先ディレクトリ内の一時ファイルとしてビルドされ、同期・検証されたうえで、はじめて対象へリネームされます。既存のファイルがある場合はそのパーミッションを引き継ぎます。パックに失敗しても以前のファイルはそのまま残ります。パックの入力の 1 つでもある出力を指定すること — 同じパス、または同じファイルに解決されるハードリンクやシンボリックリンク — は、読み取り中の入力を切り詰めるのではなく拒否されます。
--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 (wippy.yaml の type: を上書き) |
--module-display-name |
新規作成モジュールの表示名 (--create のみ) |
モジュールタイプは通常、wippy.yaml の type: として宣言します (公開を参照)。--module-type は単一の公開に対してそれを上書きします。どちらも設定されていない場合、新規作成されるモジュールは非推奨警告とともにデフォルトで application になります。
wippy search
ハブでモジュールを検索する。
検索では、利用可能な場合、選択したレジストリに保存された認証トークンを
使用します。wippy auth login で認証するとレジストリの ID で検索でき、
--registry で使用するレジストリの資格情報を選択できます。
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 |
JSON または YAML 出力にレジストリ所有のメタデータ (owner、root) を含める。--json または --yaml が必要 |
|
--lock-file |
-l |
ロックファイルのパス |
--meta のメタデータ演算子:
| 演算子 | 意味 |
|---|---|
field=value |
完全一致 |
field~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 |
ロックファイルのパス |
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
security:
actor:
id: app:migrations
policies:
- app.security:migrations
groups:
- app.security:operators
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 |
いいえ | このエントリをデフォルトのエントリポイントとしてマーク。パックやハブモジュールがコマンド名なしで実行されたとき、そのユースケースの単一の main エントリが実行される。エントリポイントが1つだけなら main がなくても選択され、main のないエントリポイントが複数ある場合はエラーになる |
use_case |
いいえ | エントリポイントのカテゴリ、デフォルト run。use_case: test を宣言したエントリが wippy test の実行対象 |
security |
いいえ | CLI から起動されたときにコマンドが実行されるセキュリティコンテキスト |
任意のプロセスエントリ種類 (process.lua、process.wasm) が使用可能。コマンド名の一意性は検査されない。ロードされた複数のエントリが同じ名前を宣言した場合、レジストリ順で最初に一致したものが実行される。コマンド名の後の引数は文字列ペイロードとしてプロセスに渡される。
コマンドのセキュリティ
コマンドエントリは、その 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 からの起動パスにのみ適用されるためである。オペレータが自身のデプロイメント上でコマンドを開始したという事実が信頼の起点となる。同じプロセスエントリの通常のスポーンには影響せず、そちらはエントリ自身の security: ブロックに従う。
宣言はフェイルクローズドで、プロセスの起動前に検証される:
security内の未知のフィールドは拒否される。- 空の
securityブロック (アクターもポリシーもグループもない) は拒否される。 nameを持たないsecurityは拒否される — コマンドは起動できるよう名前を持たなければならない。- 解決できないポリシーやグループがあると起動を拒否する。解決はアトミックであり、部分的なスコープがインストールされることはない。
ブロックが actor を省略した場合、呼び出し元のアクターが継承される。policies と groups の両方を省略した場合、呼び出し元のスコープが継承される。
使用例
開発ワークフロー
# Initialize dependency lock metadata
wippy init
wippy add wippy/test
wippy add wippy/llm
wippy install
# Check for errors
wippy lint
# Run with debug output
wippy run -c -v
# Override config for local dev
wippy run -o app:db:host=localhost -o app:db:port=5432
本番デプロイ
# Create release pack with bytecode
wippy pack release.wapp --bytecode "**" --exclude-ns "test.**"
# Run from pack with memory limit
wippy run release.wapp -m 2G
デバッグ
# Execute single process
wippy run --exec app:worker
# With profiler enabled
wippy run -p -v
# Then: go tool pprof http://localhost:6060/debug/pprof/heap
依存関係管理
# Add new dependency
wippy add acme/http@latest
# Force re-download
wippy install --force
# Update specific module
wippy update acme/http
公開
# Login to hub
wippy auth login
# Validate module
wippy publish --dry-run
# Publish
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} で OS 環境変数を参照でき、ファイルのロード時に解決されます。変数が存在しない場合、設定のロードは失敗します。裸の ${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"