Skip to content

Commit d5984b3

Browse files
authored
Merge pull request #338 from nao1215/chore/release-v1.4.0-prep
chore: prepare v1.4.0 release
2 parents b4bf997 + 483e3a0 commit d5984b3

12 files changed

Lines changed: 56 additions & 15 deletions

File tree

.goreleaser.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ signs:
8989
output: true
9090
nfpms:
9191
- maintainer: 'Naohiro CHIKAMATSU <n.chika156@gmail.com>'
92-
description: gup - Fast parallel updater and manager for binaries installed with 'go install'
92+
description: 'Fast manager for Go-installed binaries in $GOBIN: update, export/import, and migrate toolsets across machines'
9393
homepage: https://github.com/nao1215/gup
9494
license: Apache License 2.0
9595
formats:
@@ -111,7 +111,7 @@ nfpms:
111111
mode: 0644
112112
brews:
113113
- name: gup
114-
description: gup - Fast parallel updater and manager for binaries installed with 'go install'
114+
description: 'Fast manager for Go-installed binaries in $GOBIN: update, export/import, and migrate toolsets across machines'
115115
license: Apache License 2.0
116116
repository:
117117
owner: nao1215

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
## [v1.4.0](https://github.com/nao1215/gup/compare/v1.3.1...v1.4.0) (2026-06-22)
2+
3+
### Features
4+
5+
* Add a top-level `--version`/`-V` flag in addition to the existing `gup version` subcommand. (#326)
6+
* Add a `--quiet`/`-q` output mode to `check` and `update` that hides the up-to-date lines and prints only changed/updatable binaries, failures, and a one-line summary. Errors still go to STDERR. (#290)
7+
* Respect the [`NO_COLOR`](https://no-color.org/) environment variable and add a `--no-color` flag to disable colorized output. (#309)
8+
* Show concise, actionable guidance (the correct usage line) when a required argument is missing, instead of dumping the full help. (#324)
9+
10+
### Bug Fixes
11+
12+
* `gup remove` now fails fast with a clear message in non-interactive execution (when stdin is not a TTY, e.g. CI or a pipe) instead of blocking on stdin or surfacing a raw `EOF`. `--force` still skips confirmation. (#323)
13+
* Normalize an `unknown`/`(devel)`/empty binary version to `latest` before persisting it to `gup.json`, so later `gup update` runs resolve the package correctly. (#300)
14+
* Classify binaries by their main module path instead of a dotless-import-path heuristic, fixing the misclassification of tools whose host has no dot (e.g. internal registries). (#299)
15+
16+
### Documentation
17+
18+
* Add practical examples to the root command and the major subcommands' help. (#325)
19+
* Sync the Benchmark, release-integrity, and Migrate sections into all five translated READMEs, and add a test that fails when a translation is missing one of these sections. (#306)
20+
* Document the top-level `--version` flag, the non-TTY `remove` behavior, and the `--json`/`--quiet` precedence in the README.
21+
22+
### Tests
23+
24+
* Add a helper-process test seam for `goExe`-based subprocess calls, plus property-based tests for version comparison, name normalization, and config round-trip. (#301, #305)
25+
* Cover parallel-execution invariants: result count, timeout isolation, and CPU clamping. (#304)
26+
* Make `config_file` rename injectable and cover the backup-swap restore-failure worst case. (#302)
27+
* Add a property-based test for the path-traversal guard in `gup remove`. (#303)
28+
29+
### Others
30+
31+
* Tidy help-text consistency (flag-description casing, `Short` punctuation, example indentation) and give the non-interactive `remove` error a labeled STDERR message.
32+
133
## [v1.3.1](https://github.com/nao1215/gup/compare/v1.3.0...v1.3.1) (2026-06-21)
234

335
### Bug Fixes

README.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@ gh attestation verify gup_<version>_<os>_<arch>.tar.gz --repo nao1215/gup
8383
```
8484

8585
## How to use
86+
### Check the gup version
87+
Print the version with either the `version` subcommand or the top-level `--version`/`-V` flag.
88+
```shell
89+
$ gup --version
90+
$ gup version
91+
```
92+
8693
### Update all binaries
8794
`gup update` updates every binary under `$GOBIN`, in parallel.
8895

@@ -138,6 +145,8 @@ $ gup remove --force gal
138145
removed /home/nao/.go/bin/gal
139146
```
140147

148+
In non-interactive execution (when stdin is not a TTY, e.g. CI or a pipe), `gup remove` no longer blocks waiting for confirmation. It fails fast with a clear message; pass `--force` to remove without confirmation.
149+
141150
### Check if the binary is the latest version
142151
If you want to know if the binary is the latest version, use the check subcommand. check subcommand checks if the binary is the latest version and displays the name of the binary that needs to be updated.
143152
```shell
@@ -164,7 +173,7 @@ If you want to update binaries, the following command.
164173
```
165174

166175
### Quiet output for large tool sets
167-
`check` and `update` print every binary by default, which is noisy when you have many tools installed. Pass `--quiet` (`-q`) to suppress the up-to-date lines and show only the binaries that were updated (or have an update available) plus failures, followed by a one-line summary. Errors are always written to STDERR, so they stay visible.
176+
`check` and `update` print every binary by default, which is noisy when you have many tools installed. Pass `--quiet` (`-q`) to suppress the up-to-date lines and show only the binaries that were updated (or have an update available) plus failures, followed by a one-line summary. Errors are always written to STDERR, so they stay visible. When `--json` is also given, `--quiet` is ignored and the full JSON array is printed.
168177
```shell
169178
$ gup update --quiet
170179
github.com/nao1215/gup (v0.7.0 to v0.7.1)

cmd/bug_report.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ func newBugReportCmd() *cobra.Command {
1515
Use: "bug-report",
1616
Short: "Submit a bug report at GitHub",
1717
Long: "bug-report opens the default browser to start a bug report which will include useful system information.",
18-
Example: " gup bug-report",
18+
Example: " gup bug-report",
1919
Args: cobra.NoArgs,
2020
ValidArgsFunction: cobra.NoFileCompletions,
2121
Run: func(cmd *cobra.Command, args []string) {

cmd/check.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ It does not update them.`,
3131
},
3232
}
3333

34-
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "Specify the number of CPU cores to use")
34+
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "specify the number of CPU cores to use")
3535
if err := cmd.RegisterFlagCompletionFunc("jobs", completeNCPUs); err != nil {
3636
panic(err)
3737
}
38-
cmd.Flags().Bool("ignore-go-update", false, "Ignore updates to the Go toolchain")
38+
cmd.Flags().Bool("ignore-go-update", false, "ignore updates to the Go toolchain")
3939
cmd.Flags().Bool("json", false, "output result as machine-readable JSON")
4040
cmd.Flags().BoolP("quiet", "q", false, "suppress up-to-date lines; show only update-available/failed binaries plus a summary")
4141
addTimeoutFlag(cmd)

cmd/export.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
func newExportCmd() *cobra.Command {
1111
cmd := &cobra.Command{
1212
Use: "export",
13-
Short: "Export installed binaries and their versions under $GOPATH/bin or $GOBIN to gup.json.",
13+
Short: "Export installed binaries and their versions under $GOPATH/bin or $GOBIN to gup.json",
1414
Long: `Export installed binaries and their versions under $GOPATH/bin or $GOBIN to gup.json.
1515
1616
Use export/import if you want to install the same Go binaries

cmd/import.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ var installByVersionCtx = goutil.InstallWithContext //nolint:gochecknoglobals //
2020
func newImportCmd() *cobra.Command {
2121
cmd := &cobra.Command{
2222
Use: "import",
23-
Short: "Install commands according to gup.json.",
23+
Short: "Install commands according to gup.json",
2424
Long: `Install commands according to gup.json.
2525
2626
Use export/import if you want to install the same Go binaries
@@ -43,7 +43,7 @@ versions recorded in that gup.json.`,
4343
if err := cmd.MarkFlagFilename("file", "json"); err != nil {
4444
panic(err)
4545
}
46-
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "Specify the number of CPU cores to use")
46+
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "specify the number of CPU cores to use")
4747
if err := cmd.RegisterFlagCompletionFunc("jobs", completeNCPUs); err != nil {
4848
panic(err)
4949
}

cmd/migrate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ If BINARY arguments are given, only those binaries are migrated.`,
6767

6868
cmd.Flags().BoolP("dry-run", "n", false, "perform the trial migration with no changes")
6969
cmd.Flags().BoolP("notify", "N", false, "enable desktop notifications")
70-
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "Specify the number of CPU cores to use")
70+
cmd.Flags().IntP("jobs", "j", runtime.NumCPU(), "specify the number of CPU cores to use")
7171
if err := cmd.RegisterFlagCompletionFunc("jobs", completeNCPUs); err != nil {
7272
panic(err)
7373
}

cmd/remove.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ If you want to specify multiple binaries at once, separate them with space.
3232
OsExit(remove(cmd, args))
3333
},
3434
}
35-
cmd.Flags().BoolP("force", "f", false, "Forcibly remove the file")
35+
cmd.Flags().BoolP("force", "f", false, "forcibly remove the file")
3636

3737
return cmd
3838
}

cmd/testdata/bug_report/bug_report.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Usage:
44
gup bug-report [flags]
55

66
Examples:
7-
gup bug-report
7+
gup bug-report
88

99
Flags:
1010
-h, --help help for bug-report

0 commit comments

Comments
 (0)