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 gopYou 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 exitOptionally, a hidden debug flag is available in case you need additional output.
Hidden Flags:
-D, --debug Include debug statements in log outputThis 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!