標準愚痴出力

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

scoop のマニフェストファイルを作るツールを公開しました

github.com

本記事は https://twitter.com/NyaosOrg/status/1612296206193143809 以下のスレッドの転載になります。 scoop のマニフェストファイルとは何かについては、以下もご覧ください(本記事の記載内容と若干重複していますが)


インストールは

 scoop bucket add hymkor https://github"."com/hymkor/scoop-bucket
 scoop install make-scoop-manifest

で OK です。ちょっと場合によって使い方がややこしいです。

(1)レポジトリの場所は git remote show -n で取得し、ZIPファイルがローカルにある場合(コスト最小)

cd YOUR-REPOSITORY
make-scoop-manifest *.zip > YOUR-TOOL.json

マニフェストファイルをそのレポジトリ自身に格納する場合を想定しています。

(2)レポジトリの場所はオプションで指定する場合

make-scoop-manifest -g USERNAME/REPOSITORY *.zip > YOUR-TOOL.json

これは自分の scoop のバケットをメンテする場合などに、別のフォルダーの複数のレポジトリのマニフェストファイルを作る場合を想定しています。

(3)ZIP ファイルがそもそも手元にない場合

make-scoop-manifest -D -g USERNAME/REPOSITORY > YOUR-TOOL.json

内部的に ZIP ファイルを GitHub の Releases からダウンロードします。ローカルに何もなくても使えるのですが、ダウンロードカウントが一つ増えてしまいます

(3)は主に他人のプロダクトを自分のバケットに登録する場合などを想定しています。

オプション体系が今一分かりにくいのですが、もっとよいのが思いつかなかったし、こういうのってどうせ Makefile に組み込むものなので、そんなに使いやすくなくてもよいかな…ということで見切り発車です。

自分の場合の保守方針は、こんな次の感じです。

  1. 各ツールのマニフェストファイルは、まずそのツール自身のレポジトリに git add して登録しておく
  2. scoop-bucketレポジトリの保守バッチでは、各ツールのフォルダーからマニフェストファイルを ./bucket 以下にコピーするようにするだけ

自分の保守方針では結局(1)しか使ってないですね。これはとりあえず(1)を作ってから、もっと楽な保守の方法はないかなと思って、(2)→(3)を作ったものの、やっぱり影響範囲を考えると(1)を使うのが無難かなと迷走した結果です。

あと、あんまり複雑な ZIP ファイルは想定していません。マニフェストファイルでは "bin" という項目で実行ファイルを指定しますが、これは ZIP ファイルの中から拡張子 EXE のファイルを検索しているだけです。

アーキテクチャとして Interl の 32bit , 64bit がある想定なので、"386","amd64" という単語が ZIP ファイルの名前に入っている必要があります。また、scoop 用なので "linux" , "macos" が名前に入っているZIPファイルは無視されます。