Skip to content

Latest commit

 

History

History
304 lines (249 loc) · 16.7 KB

File metadata and controls

304 lines (249 loc) · 16.7 KB

All Contributors

Mentioned in Awesome Go reviewdog Coverage Go Reference Go Report Card GitHub

日本語 | Русский | 中文 | 한국어 | Español | Français

gup - "go install"でインストールしたバイナリを更新

sample

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 importgup.conf を読み込みません。
  • gup.json にはパッケージごとの更新チャネル(latest / main / master)を保存します。

サポート対象OS(GitHub Actionsでユニットテスト実施)

  • Linux
  • Mac
  • Windows

インストール方法

gup は go install と Homebrew に加えて、wingetmisenix からもインストールできます。

"go install"を使用

システムにGolang開発環境がインストールされていない場合は、Golang公式サイトからGolangをインストールしてください。

go install github.com/nao1215/gup@latest

homebrewを使用

brew install nao1215/gup

wingetを使用(Windows)

winget install --id nao1215.gup

mise-en-placeを使用

mise use -g gup@latest

nixを使用(Nix profile)

nix profile install nixpkgs#gogup

パッケージまたはバイナリからインストール

リリースページ には、.deb、.rpm、.apk形式のパッケージが含まれています。gupコマンドは内部的にgoコマンドを使用するため、Golangのインストールが必要です。

使用方法

すべてのバイナリを更新

すべてのバイナリを更新する場合は、$ gup update を実行するだけです。

$ 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)
  :
  :

指定したバイナリのみ更新

指定したバイナリのみを更新したい場合は、複数のコマンド名をスペース区切りで指定します。

$ 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 オプションとの組み合わせでも動作します。

$ 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 でも再利用されます。

$ gup update --main=gup,lazygit --master=sqly --latest=air

$GOPATH/bin配下のコマンド名とパッケージパス、バージョンを一覧表示

listサブコマンドは$GOPATH/binまたは$GOBIN配下のコマンド情報を出力します。出力される情報は、コマンド名、パッケージパス、コマンドバージョンです。 sample

指定したバイナリを削除

$GOPATH/binまたは$GOBIN配下のコマンドを削除したい場合は、removeサブコマンドを使用します。removeサブコマンドは削除前に確認を行います。

$ 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オプションを使用してください。

$ gup remove --force gal
removed /home/nao/.go/bin/gal

バイナリが最新バージョンかチェック

バイナリが最新バージョンかどうかを知りたい場合は、checkサブコマンドを使用してください。checkサブコマンドはバイナリが最新バージョンかどうかをチェックし、更新が必要なバイナリの名前を表示します。

$ 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

他のサブコマンドと同様、指定したバイナリのみをチェックすることもできます。

$ 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 はそのバージョンをそのままインストールします。

{
  "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 を使えば、読み書きする設定ファイルパスを明示指定できます。

※ 環境A (例: ubuntu)
$ gup export
Export /home/nao/.config/gup/gup.json

※ 環境B (例: debian)
$ gup import

また、exportサブコマンドは --output オプションを使用すると、gup.json と同じ内容をSTDOUTに出力できます。importサブコマンドは --file オプションを使用して読み込みファイルを指定できます。

※ 環境A (例: ubuntu)
$ gup export --output > gup.json

※ 環境B (例: debian)
$ gup import --file=gup.json

manページの生成(LinuxとMac用)

manサブコマンドは/usr/share/man/man1配下にmanページを生成します。

$ 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 から読み込んでください。

$ 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コマンドがデスクトップで更新の成功・失敗を通知します。

$ gup update --notify

success warning

貢献

まず、貢献に時間を割いていただき、ありがとうございます!詳細については、CONTRIBUTING.mdをご覧ください。 開発フロー、品質チェックリスト、ツール管理の手順は CONTRIBUTING.md に記載しています。 貢献は開発に関連するものだけではありません。たとえば、GitHub Starは開発のモチベーションになります!

Star履歴

Star History Chart

連絡先

「バグを見つけた」や「追加機能のリクエスト」などのコメントを開発者に送りたい場合は、以下の連絡先をご利用ください。

bug-reportサブコマンドを使用してバグレポートを送信できます。

$ gup bug-report
※ デフォルトブラウザでGitHub issueページを開きます

ライセンス

gupプロジェクトはApache License 2.0の条件の下でライセンスされています。

コントリビューター ✨

これらの素晴らしい人々に感謝します(emoji key):

CHIKAMATSU Naohiro
CHIKAMATSU Naohiro

💻
KEINOS
KEINOS

💻
mattn
mattn

💻
Justin Lecher
Justin Lecher

💻
Lincoln Nogueira
Lincoln Nogueira

💻
Masaya Watanabe
Masaya Watanabe

💻
memreflect
memreflect

💻
Akimo
Akimo

💻
rkscv
rkscv

💻
Ville Skyttä
Ville Skyttä

💻
Zephyr Lykos
Zephyr Lykos

💻
iTrooz
iTrooz

💻
Tiago Peczenyj
Tiago Peczenyj

💻

このプロジェクトはall-contributors仕様に従っています。どのような種類の貢献も歓迎します!