← 一覧
@lapius/bin-clibin
GitHubnpm

bin — bin.lapius7.com CLIクライアント

LapBin(Lapountでログインできるコード共有サービス)を、ターミナルのbinコマンドから使うためのCLI。Go標準ライブラリのみ、依存パッケージなし。

インストール

npm(Linux / macOS / Windows):

npm i -g @lapius/bin-cli

OS/CPUに合ったビルド済みバイナリが入る(Linux/macOSでは初回の起動時にnodeのシムがネイティブバイナリに置き換わり、以後はnodeを経由しない)。更新は同じコマンドで行う。

npmがない場合:

curl -fsSL https://bin.lapius7.com/install.sh | bash

Goは不要。OS/CPUに合ったビルド済みバイナリを~/.local/bin/binに置く(BIN_INSTALL_DIRで変更可)。Windowsはhttps://bin.lapius7.com/cli/bin-windows-amd64.exeを直接ダウンロードする。

使い方

bin login                                   # ブラウザでLapountにログイン
bin login --device                          # SSH先など、手元でブラウザが開けない場合
bin create main.go util.go -d "説明"         # 作成(既定は限定公開)。URLだけが標準出力に出る
cat build.log | bin create -f build.log --private
bin list                                    # 自分のGist(-u <handle> で他人の公開Gist)
bin view <id>                               # 表示(-f <file> で1ファイルだけ生出力)
bin edit <id> main.go --remove old.go -t "新しいタイトル" --public
bin clone <id> [dir]                        # ファイルをダウンロード
bin fork <id> -t "派生版"                     # コピーして自分の新しいGistを作る(自分のGistも可、公開範囲は元のまま)
bin delete <id>                             # 削除(確認あり、-yで省略)
bin star <id> / bin starred               # スター・スターしたGistの一覧
bin tag <id> python cli                     # タグを設定(bin list --tag python で絞り込み)
bin run <id>                                # スクリプトを実行(実行前に内容を表示して確認)
bin version                                 # バージョン表示。配布中の最新版かどうかも確かめる

<id>にはGistのURLもそのまま渡せる。

手元のフォルダと同期

bin clone <id> && cd <id>   # .lapbin.json(取得した時点のリビジョンと各ファイルのSHA-256)も置かれる
bin status                  # 手元の変更と、Gist側に新しいリビジョンがあるか
bin pull                    # Gist側の変更を取り込む(両方で変えたファイルがあれば止まる。--forceでGist側を優先)
bin push -m "メモ"          # 手元のフォルダの内容でGistを更新(Gist側が先に更新されていたら止まる)
bin sync                    # pull してから、手元の変更があれば push

git でも取得できる(読み取り専用): git clone https://bin.lapius7.com/<id>.git。非公開のGistはパスワードにAPIトークン。

git と同じ操作感で使う(bin g)

bin g <gitのサブコマンド> で、git とほぼ同じ引数・出力のまま Gist を扱える(既存の bin status などはそのまま)。 origin=Gist、ブランチは main だけ。コミットは手元(.lapbin/)に貯まり、push の時に1コミット=1リビジョンとして保存される。

bin g clone https://bin.lapius7.com/<id>.git && cd <id>
bin g status -sb
bin g add -A && bin g commit -m "fix"     # -am、--amend(未pushのみ)、-m なしでエディタも可
bin g log --oneline --stat -5             # Gistのリビジョンもコミットとして並ぶ
bin g diff --cached / bin g diff HEAD~2 --stat / bin g show HEAD:main.py
bin g pull                                # 未pushのコミットはGist側の変更の上に積み直す
bin g push                                # Gist側が先に進んでいたら拒否(-f で上書き)

bin g init my-snippets && cd my-snippets  # 新規: 最初の push で限定公開のGistを作成(--public/--private)

対応: init clone status add rm mv restore checkout switch reset commit log show diff fetch pull push remote branch stash rev-parse ls-files clean。 git config の alias(例: alias.st=status → bin g st)、-C <dir>、--no-pager、ページャ(GIT_PAGER/PAGER)、ルートの .gitignore にも対応。 merge・rebase・tag などGistに無い概念は使えない(Gistのタグは bin tag)。

APIトークン(CI・スクリプト用)

bin token create ci --expires 90     # 発行(トークンは標準出力にだけ出る。--read で読み取り専用)
BIN_TOKEN=lbt_… bin list            # bin login の代わりに使う
bin token list / bin token revoke <id>

トークンで使えるのはLapBinの操作だけ(bin-serverが許可リストで制限し、持ち主として動く短命のJWTに差し替えて中継する)。発行・失効は bin login したセッションからのみ。Webの /settings/tokens でも管理できる。

仕組み

ビルド・配布

./build.sh    # 全OS/CPU向けにクロスコンパイルし、web/bin.lapius7.com/server/cli-dist/ へinstall.shと一緒に配置

バージョンは日付-コミットの短縮ハッシュ(未コミットの変更があれば-dirty付き)。同時にVERSIONとbuild.json(バージョン・ビルド日時・コミット・各バイナリのSHA-256)も書き出し、https://bin.lapius7.com/cli の「配布中の最新版」はこれを読んで表示する。インストーラーは最後に入ったバイナリのbin versionを実行して、配布中の版と一致するか照合する。

bin-serverがそのディレクトリを/install.sh・/cli/*として配信するので、再起動は不要。

npm版はv*タグをpushするとGitHub Actions(.github/workflows/release.yml)がnpm/build.mjsでビルドしてnpmに公開し、GitHub Releaseにもバイナリを添付する(npmのTrusted Publisherで認証するのでトークンは不要)。手元での確認はnode npm/build.mjs 0.0.0-dev --pack。 npm版は-X main.channel=npm付きでビルドされ、bin versionの最新版確認と更新方法の案内がnpm向けになる。

表示言語

日本語・英語・韓国語に対応。BIN_LANG(ja / en / ko)、無ければ LC_ALL・LC_MESSAGES・LANG から判断する(未設定・C・POSIXは日本語、それ以外の未対応言語は英語)。インストーラーも同じ規則。

文言は日本語の文字列をそのままキーにして T("…") で包み(gettext方式)、英語・韓国語は cmd/bin/messages.go に持つ。新しい文言を足したら対応表にも追加すること(無いとその言語でも日本語のまま表示される)。英語の単数形は Tn() と messagesOne。

開発中のサーバーに向けたい場合はBIN_SUPABASE_URL/BIN_ANON_KEY/BIN_SITE_URL(環境変数または~/.config/bin/config.env)で上書きできる。