Skip to content
Browse files

added makefile

  • Loading branch information...
1 parent 39d1e12 commit 5f5c1b28a48ae0ef08660e8c8648b80eeceb8d48 @ethernetdan ethernetdan committed
Showing with 100 additions and 30 deletions.
  1. +18 −14 .travis.yml
  2. +82 −0 Makefile
  3. +0 −16 make.sh
View
32 .travis.yml
@@ -2,27 +2,31 @@ language: go
sudo: false
go:
- 1.6
-env:
- - SPREAD="./pkg/... ./cli/... ./cmd/..."
go_import_path: rsprd.com/spread
install:
- # install golint
- - go get -u github.com/golang/lint/golint
+ # install build dependencies
+ - make deps
before_script:
- - go vet $SPREAD
+ - make validate
script:
- - go test -v $SPREAD
+ - make test
after_success:
- - |
- while IFS=' ' read -ra PKG; do
- for i in "${PKG[@]}"; do
- echo "Running golint on $i:"
- golint $i
- printf "#########################\n\n\n"
- done
- done <<< "$SPREAD"
+ # If release then crosscompile
+ - if [ -n "$TRAVIS_TAG" ]; then make crossbuild; else echo "Skipping release build..."; fi
+
+deploy:
+ provider: releases
+ api_key:
+ secure: Jqzgb1hVOHhXAtzr1CaYtz9Ws8VGbyTP5qdWr9Dobg69hCTQDLg8Yuc/pJBIMtajxiQnrNmcI5ZpSdrPd1mxUKQBxr6ra3A8G/Utnfs8ilO0qDR4/pF+G+dVZlIUT/8iAfvpEiCkEckndrB/fVgR1p3o4R7kceHsjduTy+dX0j1v9jN1FA901o2C6tz3OYGn85q7p0wYXOd6l4WhtRK2EShvcPMG7Hs5Vz9Ihb7cznH1Lxpst2zohXz45O0vzfyFLXJp4RftAvg/1IOl9E4OTIanL9SQckRxfFRI57AAogKdJPYrbm8L7/HxRN96lW5e8EtNZXf77Orc/9NvR4YENRUINDhaCxz+IUTtU2TLt4nyCtHCEGyqFJ4ZnK5+sO4Ha7STiPVLNZSfu6rZPo3l77o0JTLo/IK8QtTrQ6H6JyjN3brle/FoOJTxtbjZ/DZKpR4QweO2zG4sQ8sKS8KuQ4LUx9Gm4ucuI8vsWIUsSMg8mKkCCQzf2z84Ih5FxZEwzXrAH+xVrrmUQlsgF3KflT/78LnJMFhOoxO+CPW2sStxndxh2L8duLOt+Jrf4URUnrjwGyWhebPcTI/gj0wuRUFY3VahkmWAD4r/3A/62s1/mc2vYwT9VLRxtKsA16Ur5ujM4nUVfJG/nYVE07+rqrngd9OCvmM8u5WmFpMqKWc=
+ skip_cleanup: true
+ file:
+ - ./build/spread_linux_amd64
+ - ./build/spread_darwin_amd64
+ - ./build/spread_windows_amd64.exe
+ on:
+ tags: true
View
82 Makefile
@@ -0,0 +1,82 @@
+BASE := rsprd.com/spread
+CMD_NAME := spread
+
+EXEC_PKG := $(BASE)/cmd/$(CMD_NAME)
+PKGS := ./pkg/... ./cli/... ./cmd/...
+
+GOX_OS ?= linux darwin windows
+GOX_ARCH ?= amd64
+
+GO ?= go
+GOX ?= gox
+GOFMT ?= gofmt # eventually should add "-s"
+GOLINT ?= golint
+
+GOFILES := find . -name '*.go' -not -path "./vendor/*"
+
+GOBUILD_LDFLAGS ?=
+GOBUILD_FLAGS ?=
+GOTEST_FLAGS ?= -v
+GOX_FLAGS ?= -output="build/{{.Dir}}_{{.OS}}_{{.Arch}}" -os="${GOX_OS}" -arch="${GOX_ARCH}"
+
+GOX_OS ?= linux darwin windows
+GOX_ARCH ?= amd64
+
+.PHONY: all
+all: clean validate test
+
+.PHONY: release
+release: validate test crossbuild
+
+.PHONY: test
+test: build
+ $(GO) test $(GOTEST_FLAGS) $(PKGS)
+
+.PHONY: validate
+validate: lint checkgofmt vet
+
+.PHONY: build
+build:
+ $(GO) install $(GOBUILD_FLAGS) $(GOBUILD_LDFLAGS) $(EXEC_PKG)
+
+.PHONY: crossbuild
+crossbuild: deps gox-setup
+ $(GOX) $(GOX_FLAGS) -gcflags="$(GOBUILD_FLAGS)" -ldflags="$(GOBUILD_LDFLAGS)" $(EXEC_PKG)
+
+.PHONY: vet
+vet:
+ $(GO) vet $(PKGS)
+
+lint: .golint-install
+ for pkg in $(PKGS); do \
+ echo "Running golint on $$i:"; \
+ golint $$i; \
+ done;
+
+.PHONY: checkgofmt
+checkgofmt:
+ # get all go files and run go fmt on them
+ $(GOFILES) | xargs $(GOFMT) -l
+ files=$$($(GOFILES) | xargs $(GOFMT) -l); echo "test $$files"; if [[ -n "$$files" ]]; then \
+ echo "Error: '$(GOFMT)' needs to be run on:"; \
+ echo "$${files}"; \
+ exit 1; \
+ fi;
+
+.PHONY: deps
+deps: .golint-install .gox-install
+
+.golint-install:
+ $(GO) get -x github.com/golang/lint/golint > $@
+
+PHONY: gox-setup
+gox-setup: .gox-install
+
+.gox-install:
+ $(GO) get -x github.com/mitchellh/gox > $@
+
+.PHONY: clean
+clean:
+ rm -vf .gox-* .golint-*
+ rm -rfv ./build
+ $(GO) clean $(PKGS) || true
View
16 make.sh
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-
-# Setting up GOPATH
-
-# create gopath
-export GOPATH="$(pwd)/.gopath"
-rm -rf $GOPATH
-mkdir -p $GOPATH/src/rsprd.com/spread
-
-# Ensure vendoring is enabled (for 1.5)
-export GO15VENDOREXPERIMENT=1
-
-# link source to GOPATH
-cp -r * $GOPATH/src/rsprd.com/spread/
-
-go build -v rsprd.com/spread/cmd/spread

0 comments on commit 5f5c1b2

Please sign in to comment.
Something went wrong with that request. Please try again.