👻

WinGetパッケージをGistで同期できるPowerShellモジュール「GistGet」をリリースしました

2024/11/07に公開

What is this?

GistGetは、Gistに導入したいパッケージをYAMLで定義しておくことで、複数の環境を同期できるPowerShellモジュールです。

定義ファイルはローカルファイルやURIも指定することができるので、プロダクトの開発環境の構築なんかにも利用できます。

GistにつぎのようなYAMLを定義しておきます。

7zip.7zip:
Microsoft.VisualStudioCode:
  custome: /VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath

Sync-GistGetPackageを呼び出すことで同期します。

Sync-GistGetPackage

新たなパッケージをインストールすると・・・

Install-GistGetPackage -Id Git.Git

Gist上の定義ファイルも透過的に更新されます。便利!

7zip.7zip:
Microsoft.VisualStudioCode:
  custom: /VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath
Git.Git:

良かったらぜひ使ってみてください。

Getting started

PowerShell GalleryからModuleをインストールします。

Install-Module GistGet

GitHubからGistを更新するためのトークンを取得し、設定します。取得するトークンに必要な権限などはこちらを参照してください。

Set-GitHubToken github_pat_11AD3NELA0SGEHcrynCMSo...

インストールリストをGistに作成します。

このとき「Gist description...」に「GistGet」を設定します。 ファイル名は任意です。

7zip.7zip:
Microsoft.VisualStudioCode:
  custom: /VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath

Gistの定義に従ってパッケージを同期します。

Sync-GistGetPackage

パッケージをすべてアップデート(wingetのupgrade)します。

Update-GistGetPackage

新たなパッケージをインストールします。

Install-GistGetPackage -Id Git.Git

GistGetのコマンドを通してインストールすると、Gist上の定義ファイルも更新されます。

7zip.7zip:
Microsoft.VisualStudioCode:
  custom: /VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath
Git.Git:

このため別の端末でSync-GistGetPackageを実行することで、環境を容易に同期することが可能です。

インストール済みのパッケージをアンインストールします。

Uninstall-GistGetPackage -Id Git.Git

Gist上の定義ファイルも同期されます。

7zip.7zip:
Microsoft.VisualStudioCode:
  custom: /VERYSILENT /NORESTART /MERGETASKS=!runcode,addcontextmenufiles,addcontextmenufolders,associatewithfiles,addtopath
Git.Git:
  uninstall: true

別の端末でSync-GistGetPackageを実行すると、その端末からもアンインストールされます。

アンインストールを同期したくない場合は、WinGetの標準コマンドを利用してください。

winget uninstall --id Git.Git

詳細な仕様はドキュメントをご覧ください!

Discussion