Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gesquive/gop
golang packager/archive
https://github.com/gesquive/gop
archiver golang packager tar utility xz zip
Last synced: about 2 hours ago
JSON representation
golang packager/archive
- Host: GitHub
- URL: https://github.com/gesquive/gop
- Owner: gesquive
- License: mit
- Created: 2017-06-28T13:27:11.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2020-10-05T02:15:11.000Z (about 4 years ago)
- Last Synced: 2024-06-20T14:17:21.805Z (5 months ago)
- Topics: archiver, golang, packager, tar, utility, xz, zip
- Language: Go
- Homepage:
- Size: 45.9 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gop - go packager
[![Software License](https://img.shields.io/badge/License-MIT-orange.svg?style=flat-square)](https://github.com/gesquive/gop/blob/master/LICENSE)
[![GoDoc](https://img.shields.io/badge/godoc-reference-blue.svg?style=flat-square)](https://pkg.go.dev/github.com/gesquive/gop)
[![Build Status](https://img.shields.io/circleci/build/github/gesquive/gop?style=flat-square)](https://circleci.com/gh/gesquive/gop)
[![Coverage Report](https://img.shields.io/codecov/c/gh/gesquive/gop?style=flat-square)](https://codecov.io/gh/gesquive/gop)Package your multi-os/arch executables. `gop` is intended to compliment [gox](https://github.com/mitchellh/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
## Installing
### Compile
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.
### Download
Alternately, you can download the latest release for your platform from [github](https://github.com/gesquive/gop/releases).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`.### Homebrew
This app is also avalable from this [homebrew tap](https://github.com/gesquive/homebrew-tap). Just install the tap and then the app will be available.
```shell
$ brew tap gesquive/tap
$ brew install gop
```## Configuration
You can add a `.gop.yml` file to your project which `gop` will use in place of command line arguments. A [sample config](config.sample.yml) is provided in this repo. Just rename the the sample to `.gop.yml`.
### Precedence Order
The application looks for variables in the following order:
- command line flag
- environment variable
- config file variable
- defaultSo any variable specified on the command line would override values set in the environment or config file.
### Config File
The application looks for a configuration file at the following locations in order:
- `./.gop.yml`
- `~/.config/gop/.gop.yml`### Environment Variables
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`.## Usage
```console
Package your multi-os/arch executablesUsage:
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.
```console
Hidden Flags:
-D, --debug Include debug statements in log output
```## Documentation
This documentation can be found at github.com/gesquive/gop
## License
This package is made available under an MIT-style license. See LICENSE.
## Contributing
PRs are always welcome!