[](#contributors-) [](https://github.com/avelino/awesome-go) [](https://github.com/nao1215/gup/actions/workflows/reviewdog.yml)  [](https://pkg.go.dev/github.com/nao1215/gup) [](https://goreportcard.com/report/github.com/nao1215/gup)  [日本語](./README.md) | [Русский](../ru/README.md) | [中文](../zh-cn/README.md) | [한국어](../ko/README.md) | [Español](../es/README.md) | [Français](../fr/README.md) # gup - "go install"でインストールしたバイナリを更新  **gup** コマンドは、"go install" でインストールしたバイナリを最新版に更新します。gupはすべてのバイナリを並列で更新するため、非常に高速です。また、\$GOPATH/bin (\$GOBIN) 配下のバイナリを操作するためのサブコマンドも提供しています。Windows、Mac、Linuxで動作するクロスプラットフォーム対応のソフトウェアです。 oh-my-zshを使用している場合、gupにはエイリアスが設定されています。そのエイリアスは `gup - git pull --rebase` です。そのため、oh-my-zshのエイリアスを無効にして使用してください(例:$ \gup update)。 ## 破壊的変更(v1.0.0) - 設定ファイル形式は `gup.conf` から `gup.json` に変更されました。 - `gup import` は `gup.conf` を読み込みません。 - `gup.json` にはパッケージごとの更新チャネル(`latest` / `main` / `master`)を保存します。 ## サポート対象OS(GitHub Actionsでユニットテスト実施) - Linux - Mac - Windows ## インストール方法 ### "go install"を使用 システムにGolang開発環境がインストールされていない場合は、[Golang公式サイト](https://go.dev/doc/install)からGolangをインストールしてください。 ``` go install github.com/nao1215/gup@latest ``` ### homebrewを使用 ```shell brew install nao1215/gup ``` ### mise-en-placeを使用 ```shell mise use -g gup@latest ``` ### パッケージまたはバイナリからインストール [リリースページ](https://github.com/nao1215/gup/releases) には、.deb、.rpm、.apk形式のパッケージが含まれています。gupコマンドは内部的にgoコマンドを使用するため、Golangのインストールが必要です。 ## 使用方法 ### すべてのバイナリを更新 すべてのバイナリを更新する場合は、`$ gup update` を実行するだけです。 ```shell $ gup update update binary under $GOPATH/bin or $GOBIN [ 1/30] github.com/cheat/cheat/cmd/cheat (Already up-to-date: v0.0.0-20211009161301-12ffa4cb5c87 / go1.22.4) [ 2/30] fyne.io/fyne/v2/cmd/fyne_demo (Already up-to-date: v2.1.3 / go1.22.4) [ 3/30] github.com/nao1215/gal/cmd/gal (v1.0.0 to v1.2.0 / go1.22.4) [ 4/30] github.com/matsuyoshi30/germanium/cmd/germanium (Already up-to-date: v1.2.2 / go1.22.4) [ 5/30] github.com/onsi/ginkgo/ginkgo (Already up-to-date: v1.16.5 / go1.22.4) [ 6/30] github.com/git-chglog/git-chglog/cmd/git-chglog (Already up-to-date: v0.15.1 / go1.22.4) : : ``` ### 指定したバイナリのみ更新 指定したバイナリのみを更新したい場合は、複数のコマンド名をスペース区切りで指定します。 ```shell $ gup update subaru gup ubume update binary under $GOPATH/bin or $GOBIN [1/3] github.com/nao1215/gup (v0.7.0 to v0.7.1, go1.20.1 to go1.22.4) [2/3] github.com/nao1215/subaru (Already up-to-date: v1.0.2 / go1.22.4) [3/3] github.com/nao1215/ubume/cmd/ubume (Already up-to-date: v1.4.1 / go1.22.4) ``` ### gup update実行時にバイナリを除外 一部のバイナリを更新したくない場合は、スペースなしで「,」区切りを使用して、更新すべきでないバイナリを指定してください。 --dry-run オプションとの組み合わせでも動作します。 ```shell $ gup update --exclude=gopls,golangci-lint //--exclude または -e、この例では 'gopls' と 'golangci-lint' を除外します ``` ### @main、@master、@latestでバイナリを更新 バイナリごとに更新元を指定したい場合、以下のオプションを使用します。 - `--main` (`-m`): `@main` で更新(失敗時は `@master` を試行) - `--master`: `@master` で更新 - `--latest`: `@latest` で更新 選択したチャネルは `gup.json` に保存され、次回以降の `gup update` でも再利用されます。 ```shell $ gup update --main=gup,lazygit --master=sqly --latest=air ``` ### $GOPATH/bin配下のコマンド名とパッケージパス、バージョンを一覧表示 listサブコマンドは$GOPATH/binまたは$GOBIN配下のコマンド情報を出力します。出力される情報は、コマンド名、パッケージパス、コマンドバージョンです。  ### 指定したバイナリを削除 $GOPATH/binまたは$GOBIN配下のコマンドを削除したい場合は、removeサブコマンドを使用します。removeサブコマンドは削除前に確認を行います。 ```shell $ gup remove subaru gal ubume gup:CHECK: remove /home/nao/.go/bin/subaru? [Y/n] Y removed /home/nao/.go/bin/subaru gup:CHECK: remove /home/nao/.go/bin/gal? [Y/n] n cancel removal /home/nao/.go/bin/gal gup:CHECK: remove /home/nao/.go/bin/ubume? [Y/n] Y removed /home/nao/.go/bin/ubume ``` 強制的に削除したい場合は、--forceオプションを使用してください。 ```shell $ gup remove --force gal removed /home/nao/.go/bin/gal ``` ### バイナリが最新バージョンかチェック バイナリが最新バージョンかどうかを知りたい場合は、checkサブコマンドを使用してください。checkサブコマンドはバイナリが最新バージョンかどうかをチェックし、更新が必要なバイナリの名前を表示します。 ```shell $ gup check check binary under $GOPATH/bin or $GOBIN [ 1/33] github.com/cheat/cheat (Already up-to-date: v0.0.0-20211009161301-12ffa4cb5c87 / go1.22.4) [ 2/33] fyne.io/fyne/v2 (current: v2.1.3, latest: v2.1.4 / current: go1.20.2, installed: go1.22.4) : [33/33] github.com/nao1215/ubume (Already up-to-date: v1.5.0 / go1.22.4) If you want to update binaries, the following command. $ gup update fyne_demo gup mimixbox ``` 他のサブコマンドと同様、指定したバイナリのみをチェックすることもできます。 ```shell $ gup check lazygit mimixbox check binary under $GOPATH/bin or $GOBIN [1/2] github.com/jesseduffield/lazygit (Already up-to-date: v0.32.2 / go1.22.4) [2/2] github.com/nao1215/mimixbox (current: v0.32.1, latest: v0.33.2 / go1.22.4) If you want to update binaries, the following command. $ gup update mimixbox ``` ### Export/Importサブコマンド 複数のシステム間で同じGolangバイナリをインストールしたい場合は、export/importサブコマンドを使用します。 `gup.json` は import path、バイナリバージョン、更新チャネル(`latest` / `main` / `master`)を保存し、`import` はそのバージョンをそのままインストールします。 ```json { "schema_version": 1, "packages": [ { "name": "gal", "import_path": "github.com/nao1215/gal/cmd/gal", "version": "v1.1.1", "channel": "latest" }, { "name": "posixer", "import_path": "github.com/nao1215/posixer", "version": "v0.1.0", "channel": "main" } ] } ``` デフォルトでは次の挙動です。 - `gup export` は `$XDG_CONFIG_HOME/gup/gup.json` に書き出します。 - `gup import` は設定ファイルを次の順で自動検出します。 1) `$XDG_CONFIG_HOME/gup/gup.json`(存在する場合) 2) `./gup.json`(存在する場合) `--file` を使えば、読み書きする設定ファイルパスを明示指定できます。 ```shell ※ 環境A (例: ubuntu) $ gup export Export /home/nao/.config/gup/gup.json ※ 環境B (例: debian) $ gup import ``` また、exportサブコマンドは `--output` オプションを使用すると、`gup.json` と同じ内容をSTDOUTに出力できます。importサブコマンドは `--file` オプションを使用して読み込みファイルを指定できます。 ```shell ※ 環境A (例: ubuntu) $ gup export --output > gup.json ※ 環境B (例: debian) $ gup import --file=gup.json ``` ### manページの生成(LinuxとMac用) manサブコマンドは/usr/share/man/man1配下にmanページを生成します。 ```shell $ sudo gup man Generate /usr/share/man/man1/gup-bug-report.1.gz Generate /usr/share/man/man1/gup-check.1.gz Generate /usr/share/man/man1/gup-completion.1.gz Generate /usr/share/man/man1/gup-export.1.gz Generate /usr/share/man/man1/gup-import.1.gz Generate /usr/share/man/man1/gup-list.1.gz Generate /usr/share/man/man1/gup-man.1.gz Generate /usr/share/man/man1/gup-remove.1.gz Generate /usr/share/man/man1/gup-update.1.gz Generate /usr/share/man/man1/gup-version.1.gz Generate /usr/share/man/man1/gup.1.gz ``` ### シェル補完ファイルの生成(bash、zsh、fish、PowerShell用) `completion` はシェル名を引数で指定すると、標準出力に補完スクリプトを出力します。 bash/fish/zsh の補完ファイルをユーザー環境にインストールするには、`--install` を使用します。 PowerShell は出力を `.ps1` ファイルにリダイレクトし、profile から読み込んでください。 ```shell $ gup completion bash > gup.bash $ gup completion zsh > _gup $ gup completion fish > gup.fish $ gup completion powershell > gup.ps1 # 既定のユーザーパスに補完ファイルを自動インストール $ gup completion --install ``` ### デスクトップ通知 --notifyオプションでgupを使用すると、更新完了後にgupコマンドがデスクトップで更新の成功・失敗を通知します。 ```shell $ gup update --notify ```   ## 貢献 まず、貢献に時間を割いていただき、ありがとうございます!詳細については、[CONTRIBUTING.md](../../CONTRIBUTING.md)をご覧ください。 開発フロー、品質チェックリスト、ツール管理の手順は [CONTRIBUTING.md](../../CONTRIBUTING.md) に記載しています。 貢献は開発に関連するものだけではありません。たとえば、GitHub Starは開発のモチベーションになります! ### Star履歴 [](https://star-history.com/#nao1215/gup&Date) ## 連絡先 「バグを見つけた」や「追加機能のリクエスト」などのコメントを開発者に送りたい場合は、以下の連絡先をご利用ください。 - [GitHub Issue](https://github.com/nao1215/gup/issues) bug-reportサブコマンドを使用してバグレポートを送信できます。 ``` $ gup bug-report ※ デフォルトブラウザでGitHub issueページを開きます ``` ## ライセンス gupプロジェクトは[Apache License 2.0](../../LICENSE)の条件の下でライセンスされています。 ## コントリビューター ✨ これらの素晴らしい人々に感謝します([emoji key](https://allcontributors.org/docs/en/emoji-key)):
CHIKAMATSU Naohiro 💻 |
KEINOS 💻 |
mattn 💻 |
Justin Lecher 💻 |
Lincoln Nogueira 💻 |
Masaya Watanabe 💻 |
memreflect 💻 |
Akimo 💻 |
rkscv 💻 |
Ville Skyttä 💻 |
Zephyr Lykos 💻 |
iTrooz 💻 |
Tiago Peczenyj 💻 |