メインコンテンツへスキップ

arc completion

arc completion は、bash、zsh、または fish 用のシェル補完スクリプトを stdout に出力します —— 自分ではファイルを書き込むことはなく、インストールするかどうかはあなたが管理するリダイレクトの一歩です。

arc completion は、あなたのシェル用のタブ補完スクリプトを生成し、それを stdout に出力します。ディスク上のどこにも書き込むことは一切ありません —— 出力をファイルにする、あるいはシェルの起動ファイルに追記するのは、あなた自身が行うステップです。

arc 2.0.0-beta.48(commit 5a5316bde、main、2026-09-10)に対して取得したものです。以下の内容をコピーする前に arc --version を実行してください;生成されるスクリプトはビルドによって変わることがあります。

使用法

bash
arc completion [shell]
  • shellbashzsh、または fish。省略すると arc$SHELL からあなたのシェルを検出します;$SHELL が未設定の場合、またはこの 3 つのいずれでもない値が設定されている場合は、bash にフォールバックします:
bash
$ env -i PATH="$PATH" SHELL=/bin/zsh arc completion | head -1
#compdef arc
$ env -i PATH="$PATH" SHELL=/usr/bin/tcsh arc completion | head -1
###-begin-arc-completions-###

スクリプトを生成する

3 つのスクリプトは長さが異なります —— bash はマッチングとエスケープを自分でやらなければならず、zsh はその大部分を _describe に任せ、fish は 1 回の complete 呼び出しだけです:

bash
$ arc completion bash | wc -l
86
$ arc completion zsh | wc -l
67
$ arc completion fish | wc -l
14

3 つの選択肢の外にあるシェル名は、他の不正な choice 値と同じように拒否されます —— yargs の検証エラーで、exit 5 です:

bash
$ arc completion nosuchshell
ERROR: Invalid values:
  Argument: shell, Given: "nosuchshell", Choices: "bash", "zsh", "fish"

(ここでは省略 —— 残りの部分は arc completion --help が表示するのと同じテキストです)

インストールする

各スクリプトのヘッダー自身に、どのようにインストールされることを想定しているかが書かれています。arc completion <shell> は出力するだけで、以下のどのパスにも代わりに書き込むことはありません。

bash

bash
arc completion bash >> ~/.bashrc

macOS ではスクリプト内のコメントにあるとおり、代わりに ~/.bash_profile を使ってください。新しいシェルを開くか、そのファイルを source すれば反映されます。

zsh

bash
arc completion zsh >> ~/.zshrc

あなたの ~/.zshrc がまだ compinit を実行したことがない場合、このスクリプトは最初に読み込まれたときにそれを自分でブートストラップするので、その手順を別に追加する必要はありません。また、このスクリプトはプロンプトが表示されるたびに自分自身を再登録するので、あなたの環境の別の場所で後から compinit が実行されて補完テーブルが再構築されても、arc のエントリが黙って失われることはありません。

fish

bash
mkdir -p ~/.config/fish/completions
arc completion fish > ~/.config/fish/completions/arc.fish

mkdir -p が重要です —— > は親ディレクトリを作成しませんし、fish は既に ~/.config/fish/completions/ の中にある補完ファイルしか認識しません。

何を補完するか

以下のいずれかの後で Tab を押すと、インストールされたスクリプトは実行中の arc バイナリに何が当てはまるかを問い合わせます。そのため答えは常に、あなたが実際に持っているバイナリに一致し、スクリプトが生成された時点に固定されたスナップショットではありません:

  • コマンド名 —— arc d<TAB>diddeploydraindsl を提示する
  • サブコマンド名 —— arc did <TAB>initcheckissueverifyinfolistissuer を提示する
  • --instance / -i の値 —— arc service list が表示するのと同じ名前なので、arc service status -i <TAB> は実際に存在するインスタンスしか提示しない
  • --recipe / --template の値 —— arc blocklet create --recipe <TAB>arc blocklet create --help が一覧表示するのと同じ選択肢を提示する:basicblankblogagentminimal-appagent-workspacesupport-community

それ以外のもの —— 例えば arc afs ls <TAB> の中の AFS パス —— は上記のどのスロットにも当たらないため、スクリプトは代わりにあなたのシェルの通常のファイル名補完にフォールスルーします。

値がどのようにコマンドラインに届くか

インスタンス名とレシピ名は、生成された時点で固定されるわけではありません。キーを押すたびに、今まさにインストールされている arc バイナリに問い合わせるので、先週生成したスクリプトでも、5 分前に作ったインスタンスをきちんと提示します。

値にどんな文字が含まれていても、挿入自体も安全です。bash は挿入する前にすべての候補を printf %q でクオートするので、文字どおり my prod box という名前のインスタンスは、3 つの単語に分割されることなく、安全な my\ prod\ box に補完されます。また shell のメタ文字を含む名前が、エスケープされないまま shell に渡されることもありません。zsh の _describe にも同じ性質が組み込まれています。

終了コード

実行した内容終了コード
arc completion bash / zsh / fish0
arc completion(引数なし、シェルを検出)0
arc completion <その他すべて>5