kamakiri CLI

kamakiri は Kamakiri Pages のコマンドラインクライアントで、サービスを操作する唯一の窓口です。

インストール

Linux と macOS ではターミナルで、Windows では PowerShell でインストールスクリプトを実行します。

$ curl -fsSL https://get.kamakiri-labs.jp/install.sh | sh
PS> irm https://get.kamakiri-labs.jp/install.ps1 | iex

スクリプトは、ダウンロードしたものをリリースとともに公開されているチェックサムと照合してから、~/.local/bin/kamakiri に配置します。Windows では %USERPROFILE%\.local\bin です。別の場所に入れるときは、ご自身が所有するディレクトリを KAMAKIRI_INSTALL_DIR に指定してください。kamakiri upgrade は管理者権限なしでバイナリをその場で置き換えるので、root が所有するディレクトリにあるものは更新できません。

macOS と Linux では、シェルの設定ファイルは書き換えません。インストール先が PATH に入っていなければ、追加する行と、その行を書き足すファイルを最後に表示します。Windows では、インストール先をユーザーの PATH と実行中のセッションに追加するので、そのまま kamakiri version を実行できます。

npm と Homebrew でも公開しています。

各プラットフォーム向けのバイナリは、get.kamakiri-labs.jp からたどれます。

更新

インストールのコマンドをもう一度実行するか、kamakiri upgrade を実行します。npm や Homebrew で入れたものは、そのパッケージマネージャーで更新します。新しいリリースが出ていると、ターミナルで成功したコマンドのあとに、その旨が標準エラー出力に1行表示されます。表示は1日に1回までです。お使いのバージョンをサーバーがサポートしなくなると、サーバーとやりとりするコマンドはすべて拒否され、kamakiri upgrade を実行するよう案内する行が表示されます。

アンインストール

アンインストールスクリプトを実行します。

$ curl -fsSL https://get.kamakiri-labs.jp/uninstall.sh | sh
Removed ~/.local/bin/kamakiri.
Removed the config directory ~/.config/kamakiri.
It held your saved API key. Only this copy is gone: the key itself stays valid on your account, and nothing here revokes it.
kamakiri is uninstalled.
If you added ~/.local/bin to your PATH for kamakiri alone, that line in ~/.bashrc can come out now.
PS> irm https://get.kamakiri-labs.jp/uninstall.ps1 | iex
Removed C:\Users\you\.local\bin\kamakiri.exe.
Removed the config directory C:\Users\you\.config\kamakiri.
It held your saved API key. Only this copy is gone: the key itself stays valid on your account, and nothing here revokes it.
Removed C:\Users\you\.local\bin from your user PATH.
kamakiri is uninstalled.

スクリプトは、バイナリと設定ディレクトリ全体を取り除きます。保存したAPIキーと設定も含まれます。KAMAKIRI_INSTALL_DIR を指定してインストールした場合は、アンインストールのときにも同じ値を指定してください。npm や Homebrew で入れたものは、npm uninstall -g kamakiri または brew uninstall kamakiri で取り除きます。

使い方メッセージ

コマンドを付けずに kamakiri を実行すると、次の内容を標準エラー出力に表示して、終了コード1で終わります。help コマンドも --help フラグもありません。

$ kamakiri
Usage: kamakiri <command>

Commands:
  login       Log in with your email
  status      Show current status (--verbose shows DNS records inline; --recheck asks the server to check DNS now)
  init        Create a new site
  deploy      Deploy a directory or archive
  deploys     List recent deploys
  rollback    Roll back to a previous deploy
  teardown    Delete the linked site
  cdn         Manage CDN (cloudflare/webaccel/none/cleanup/verify/credentials/status/purge)
  domain      Manage custom domains (register/unregister/verify/set/unset/add/remove/list)
  subdomain   Get or set the site subdomain
  version     Print the CLI version (--version, -v)
  language    Show or set the CLI language (en/ja)
  upgrade     Update the CLI to the latest release

Environment variables:
  KAMAKIRI_API_KEY
    The API key every command that needs a credential uses, for CI runners
    with no credentials file. While it is set, the credentials file is not
    read. Take the key from the file `kamakiri login` saves on your machine.

  KAMAKIRI_CDN_TOKEN, KAMAKIRI_CDN_SECRET
    WebAccel API credentials for `kamakiri cdn webaccel`. Prefer these
    over --token/--secret flags in CI: command-line arguments are visible
    in `ps`, while env vars are not.
$ kamakiri
使い方: kamakiri <command>

コマンド:
  login       メールアドレスでログインします
  status      現在の状態を表示します(--verbose はDNSレコードも表示し、--recheck はサーバーにDNSの再確認を要求します)
  init        新しいサイトを作成します
  deploy      ディレクトリまたはアーカイブをデプロイします
  deploys     最近のデプロイを一覧表示します
  rollback    以前のデプロイにロールバックします
  teardown    リンクされているサイトを削除します
  cdn         CDNを管理します (cloudflare/webaccel/none/cleanup/verify/credentials/status/purge)
  domain      カスタムドメインを管理します (register/unregister/verify/set/unset/add/remove/list)
  subdomain   サイトのサブドメインを表示・設定します
  version     CLIのバージョンを表示します (--version, -v)
  language    CLIの言語を表示・設定します (en/ja)
  upgrade     CLIを最新リリースに更新します

環境変数:
  KAMAKIRI_API_KEY
    認証情報が必要なすべてのコマンドが使うAPIキーです。認証情報ファイルの
    ないCIランナー向けで、設定されている間はそのファイルを読みません。
    キーは、手元のマシンで `kamakiri login` が保存したファイルにあります。

  KAMAKIRI_CDN_TOKEN, KAMAKIRI_CDN_SECRET
    `kamakiri cdn webaccel` で使う WebAccel API の認証情報です。CIでは
    --token/--secret フラグより環境変数を推奨します。コマンドライン
    引数は `ps` から見えますが、環境変数は見えません。

ファイル

設定ディレクトリは、XDG_CONFIG_HOME が設定されていれば $XDG_CONFIG_HOME/kamakiri、そうでなければ ~/.config/kamakiri で、どのプラットフォームでも同じです。Windows では %USERPROFILE%\.config\kamakiri になります。中身は次のとおりです。

プロジェクトには、kamakiri init が書き出す .kamakiri/config.json があります。紐付いているサイトのIDが入っていますが、秘密の情報は含まれません。共同作業者やCIのジョブが同じサイトにデプロイできるよう、コミットしてください。

認証

kamakiri login は、設定ディレクトリの credentials.json にAPIキーを保存します。APIとやりとりするコマンドは、すべてこのキーを使います。

KAMAKIRI_API_KEY に空でない値が入っている間は、コマンドはその値を使い、認証情報ファイルは読みません。CIでの設定方法はデプロイで説明しています。

認証情報が見つからないコマンドは ログインしていません と表示して、終了コード1で終わります。サーバーがキーを拒否した場合は APIキーが無効です と表示されます。ログインし直すか、キーが KAMAKIRI_API_KEY から来ている場合は、その変数の値を確認してください。

コマンドが待つもの

サーバー側の処理を始めるコマンドは、リクエストが受け付けられた時点ではなく、サイトを訪れた人から見て結果がそのとおりになった時点で終了します。kamakiri deploy、kamakiri rollback、kamakiri cdn purge は、訪問者に現在のデプロイが届くようになってから終了します。CDNを設定している場合は、CDNを通した配信も含みます。

言語

CLIは英語と日本語で表示します。KAMAKIRI_LANG、kamakiri language で保存した設定、ロケールの順に決まります。サーバーから届くテキストは常に英語なので、日本語の出力にも英語の行が混ざることがあります。

コマンド一覧