標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

make-scoop-manifest の引数仕様をシンプルにした

GitHub のレポジトリから scoop 用の manifest を生成するツール: make-scoop-manifest。使い方として次の3種類があると説明をしていたが、分かりにくかった。

  1. レポジトリの場所は git remote show -n で取得し、ZIPファイルがローカルにある場合(コスト最小)
  2. レポジトリの場所はオプションで指定する場合
  3. ZIP ファイルがそもそも手元にない場合

これを 3. をデフォルトにする方向に変更した。

make-scoop-manifest {options...} [REPOSTITORY] {zip-files...}
  • -D,-g は明示的に書かなくてもよいものとした。
    • 互換性は維持しているため、別に書いてもよい(動作は変わらない)
  • レポジトリの指定は基本引数で行う
    • 従来どおりの OWNER/REPOSITORY 形式で指定可能
    • URL を書いてもよい https://github.com/nyaosorg/nyagos
    • カレントディレクトリがワークディレクトリの場合は省略できる
      • その場合、git remote show で情報を得る
  • ZIPファイルは基本的にレポジトリからダウンロードする
    • ローカルディスクの ZIP ファイルを与えることで、ダウンロードを省くこともできる(という説明にする)

結果:

  • make-scoop-manifest -g benhoyt/goawk -D > goawk.json
    make-scoop-manifest benhoyt/goawk > goawk.json
  • make-scoop-manifest -license MIT -D -g mattn/bsky -64 "" > bsky.json
    make-scoop-manifest -license MIT mattn/bsky -64 "" > bsky.json

と書けるようになった。コマンドライン的には -D-g を省けるようになっただけだが、説明がシンプルで済むのが大きい。

一方、Makefile に組み込んで、ローカルディスクにある zip ベースでマニフェストを作る場合もまったく変わらない。

manifest:
    make-scoop-manifest *-windows-*.zip > $(NAME).json

余談: 偽"flag" パッケージを作った

make-scoop-manifest -license MIT mattn/bsky -64 "" というコマンドラインは実は NG である。というのも、非オプション引数の "mattn/bsky" の後にオプション -64 を書いているからだ。標準の "flag" パッケージではこれは許されない。

だが、それだと単純に -D-g を削除して、引数の順番を変えなければいけないことを失念したユーザを戸惑わせてしまう。

ということで、非オプション引数の後にもオプション引数を取れるバージョンの「偽"flag"パッケージ」を作って対応した。

String とBool だけしか使ってなかったから比較的簡単にできた。