Merge pull request #12 from mmatczuk/mmt/releasetools

Release tools
This commit is contained in:
Michał Matczuk 2017-02-16 11:04:38 +01:00 committed by GitHub
commit 40d575f1e4
9 changed files with 79 additions and 8 deletions

4
.gitignore vendored
View file

@ -1,3 +1,6 @@
### Release
build
### GO
*.cov
*.prof
@ -18,4 +21,3 @@ Session.vim
*~
# auto-generated tag files
tags

View file

@ -13,15 +13,10 @@ addons:
- moreutils
before_install:
- go get -u github.com/golang/lint/golint
- go get -u github.com/golang/mock/gomock
- make devtools
install:
- go get -d ./...
- go build ./...
script:
- gofmt -s -l . | ifne false
- go vet ./...
- $HOME/gopath/bin/golint ./...
- go test -race ./...
- make check

48
Makefile Normal file
View file

@ -0,0 +1,48 @@
OUTPUT_DIR = build
OS = "darwin freebsd linux windows"
ARCH = "amd64 arm"
OSARCH = "!darwin/arm !windows/arm"
GIT_COMMIT = $(shell git describe --always)
all: check
.PHONY: check
check:
gofmt -s -l . | ifne false
go vet ./...
golint ./...
go build ./...
go test -race ./...
.PHONY: clean
clean:
go clean ./...
rm -rf ${OUTPUT_DIR}
.PHONY: devtools
devtools:
go get -u github.com/golang/lint/golint
go get -u github.com/golang/mock/gomock
go get -u github.com/mitchellh/gox
go get -u github.com/tcnksm/ghr
.PHONY: release
release: clean check build package publish
.PHONY: build
build:
mkdir ${OUTPUT_DIR}
GOARM=5 gox -ldflags "-X main.version=$(GIT_COMMIT)" \
-os=${OS} -arch=${ARCH} -osarch=${OSARCH} -output "${OUTPUT_DIR}/pkg/{{.OS}}_{{.Arch}}/{{.Dir}}" \
./cmd/tunnel ./cmd/tunneld
.PHONY: package
package:
mkdir ${OUTPUT_DIR}/dist
cd ${OUTPUT_DIR}/pkg/; for osarch in *; do (cd $$osarch; tar zcvf ../../dist/tunnel_$$osarch.tar.gz ./*); done;
cd ${OUTPUT_DIR}/dist; sha256sum * > ./SHA256SUMS
.PHONY: publish
publish:
ghr -recreate -u mmatczuk -t ${GITHUB_TOKEN} -r go-http-tunnel pre-release ${OUTPUT_DIR}/dist

View file

@ -51,6 +51,7 @@ type options struct {
config string
logTo string
logLevel int
version bool
command string
args []string
}
@ -60,6 +61,7 @@ func parseArgs() (*options, error) {
config := flag.String("config", filepath.Join(defaultPath(), "config.yaml"), "Path to tunnel configuration file")
logTo := flag.String("log", "stdout", "Write log messages to this file, file name or 'stdout', 'stderr', 'none'")
logLevel := flag.Int("log-level", 1, "Level of messages to log, 0-3")
version := flag.Bool("version", false, "Prints tunnel version")
flag.Parse()
opts := &options{
@ -67,9 +69,14 @@ func parseArgs() (*options, error) {
config: *config,
logTo: *logTo,
logLevel: *logLevel,
version: *version,
command: flag.Arg(0),
}
if opts.version {
return opts, nil
}
switch opts.command {
case "list":
opts.args = flag.Args()[1:]

View file

@ -23,6 +23,11 @@ func main() {
fatal(err.Error())
}
if opts.version {
fmt.Println(version)
return
}
if opts.debug {
if err := agent.Listen(nil); err != nil {
fatal("gops agent failed to start: %s", err)

3
cmd/tunnel/version.go Normal file
View file

@ -0,0 +1,3 @@
package main
var version = "snapshot"

View file

@ -28,6 +28,7 @@ type options struct {
clients string
logTo string
logLevel int
version bool
}
func parseArgs() *options {
@ -40,6 +41,7 @@ func parseArgs() *options {
clients := flag.String("clients", "", "Comma-separated list of tunnel client ids")
logTo := flag.String("log", "stdout", "Write log messages to this file, file name or 'stdout', 'stderr', 'none'")
logLevel := flag.Int("log-level", 1, "Level of messages to log, 0-3")
version := flag.Bool("version", false, "Prints tunneld version")
flag.Parse()
return &options{
@ -52,5 +54,6 @@ func parseArgs() *options {
clients: *clients,
logTo: *logTo,
logLevel: *logLevel,
version: *version,
}
}

View file

@ -16,6 +16,11 @@ import (
func main() {
opts := parseArgs()
if opts.version {
fmt.Println(version)
return
}
if opts.debug {
if err := agent.Listen(nil); err != nil {
fatal("gops agent failed to start: %s", err)

3
cmd/tunneld/version.go Normal file
View file

@ -0,0 +1,3 @@
package main
var version = "snapshot"