Package your multi-os/arch executables. gop
is intended to compliment gox and provide the packaging aspect of a deployment.
You should be able to use the same arch
& os
arguments used to run gox
. The ouput
/input
arguments are also similar.
gop
supports packaging into the following archive formats: zip, tar, tgz, tar.gz, tbz2, tar.bz2, txz, tar.xz, tlz4, tar.lz4, tsz, tar.sz
This project requires go 1.8+ to compile. Just run go get -u github.com/gesquive/gop
and the executable should be built for you automatically in your $GOPATH
.
If using go mod
, go 1.11+ is required and you will need to set GO111MODULE=on
in order for go get
to complete properly.
Optionally you can run make install
to build and copy the executable to /usr/local/bin/
with correct permissions.
Alternately, you can download the latest release for your platform from github.
Once you have an executable, make sure to copy it somewhere on your path like /usr/local/bin
or C:/Program Files/
.
If on a *nix/mac system, make sure to run chmod +x /path/to/gop
.
This app is also avalable from this homebrew tap. Just install the tap and then the app will be available.
$ brew tap gesquive/tap
$ brew install gop
You can add a .gop.yml
file to your project which gop
will use in place of command line arguments. A sample config is provided in this repo. Just rename the the sample to .gop.yml
.
The application looks for variables in the following order:
- command line flag
- environment variable
- config file variable
- default
So any variable specified on the command line would override values set in the environment or config file.
The application looks for a configuration file at the following locations in order:
./.gop.yml
~/.config/gop/.gop.yml
Optionally, instead of using a config file you can specify config entries as environment variables. Use the prefix "GOP_" in front of the uppercased variable name. For example, the config variable archive
would be the environment variable GOP_ARCHIVE
.
Package your multi-os/arch executables
Usage:
gop [flags] [packages]
Flags:
-a, --arch stringSlice List of architectures to package (default [386,amd64,amd64p32,arm,arm64,ppc64,ppc64le])
-r, --archive stringSlice List of package types to create (default [zip,tar.gz,tar.xz])
-c, --config string config file (default .gop.yml)
-d, --delete Delete the packaged executables
-f, --files stringSlice Add additional file to package
-h, --help help for gop
-i, --input string The input path template. (default "{{.Dir}}_{{.OS}}_{{.Arch}}")
-s, --os stringSlice List of operating systems to package (default [darwin,dragonfly,freebsd,linux,netbsd,openbsd,plan9,solaris,windows])
-o, --output string The output path template. (default "{{.Dir}}_{{.OS}}_{{.Arch}}.{{.Archive}}")
-p, --packages stringSlice List of os/arch/archive groups to package
-V, --version Show the version and exit
Optionally, a hidden debug flag is available in case you need additional output.
Hidden Flags:
-D, --debug Include debug statements in log output
This documentation can be found at github.com/gesquive/gop
This package is made available under an MIT-style license. See LICENSE.
PRs are always welcome!