goup
goup copied to clipboard
Checks if there are any updates for imports in your module.
Go Up
goup
checks if there are any updates for imports in your module.
It parses go.mod
files to get dependencies with their version, uses go-git
to retrieve the list of remote tags and performs comparisons to advise to update if necessary.
The main purpose is using it as a linter in continuous integration or in development process,
but you can also use it to keep updated the go.mod
files, see the -f
option.
Features
- No dependency. Pure Go tool designed to be used as a linter. Zero call to
go
orgit
command line tools. - As
go.mod
uses the semantic versioning for module version,goup
does the same and provides 3 modes: major, major+minor and by default, path. - Takes care of each part of a mod file:
require
,exclude
andreplace
. - Allows the capacity to force some modules to only use release tag, no prerelease.
- Manages one or more
go.mod
files, for example with./...
as parameter. - As with go1.14, you can use the
GOINSECURE
environment variable to skip certificate validation and do not require an HTTPS connection. Since versionv0.3.0
,GOPRIVATE
has the same behavior. - Can amend on demand
go.mod
files with deprecated dependencies to update them. - Since version
v0.4.0
, a colorized output in a TTY. - Allows to fetch Go modules from private repositories using
~/.netrc
file orNETRC
environment variable (https://go.dev/doc/faq#git_https).
Demo
$ goup -v -m ./...
$ goup: github.com/rvflash/goup: golang.org/x/mod v0.2.1-0.20200121190230-accd165b1659 is up to date
$ goup: github.com/rvflash/goup: github.com/matryer/is v1.1.0 must be updated with v1.2.0
$ goup: github.com/rvflash/goup: github.com/golang/mock v1.4.0 is up to date
$ goup: github.com/rvflash/goup: gopkg.in/src-d/go-git.v4 v4.13.1 is up to date
Installation
It's important to have reproducible CI, so it's recommended to install a specific version of goup
available
on the releases page.
Go
GO111MODULE=on go get github.com/rvflash/[email protected]
Docker
docker run --rm -v $(pwd):/pkg rvflash/goup:latest goup -V
Usage
goup [flags] [modfiles]
The goup
command checks updates of any dependencies in the go.mod file.
It supports the following flags:
-
-M
: ensures to have the latest major version. By default, only the path is challenged. -
-m
: ensures to have the latest couple major with minor version. By default, only the path is challenged. -
-V
: prints the version of the tool. -
-f
: force the update of the go.mod file as advised -
-i
: allows excluding indirect modules. -
-r
: it's a comma-separated list of glob patterns to match the repository paths where to force tag usage. For example withgithub.com/group/*
as value, any modules in this repository group must have a release tag, no prerelease. -
-s
: forces the process to exit on first error occurred. -
-t
: defines the maximum time duration to perform the check. By default, 10s. -
-v
: verbose output
[modfiles]
can be one or more direct path to go.mod
files, .
or ./...
to get all those in the tree.
Using example with an auto-signed local git repository:
GOINSECURE="gitlab.example.lan/*/*" goup -v .