diff --git a/.gitignore b/.gitignore index 583259c0..37a0b90e 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ _testmain.go *.exe node_exporter +.deps +*.tar.gz diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..8b47af2a --- /dev/null +++ b/Makefile @@ -0,0 +1,50 @@ +VERSION := 0.3.0 + +SRC := $(wildcard *.go) +TARGET := node_exporter + +OS := $(subst Darwin,darwin,$(subst Linux,linux,$(shell uname))) +ARCH := $(subst x86_64,amd64,$(shell uname -m)) + +GOOS ?= $(OS) +GOARCH ?= $(ARCH) +GOPKG := go1.2.1.$(OS)-$(ARCH).tar.gz +GOROOT ?= $(CURDIR)/.deps/go +GOPATH ?= $(CURDIR)/.deps/gopath +GOCC := $(GOROOT)/bin/go +GOLIB := $(GOROOT)/pkg/$(GOOS)_$(GOARCH) +GO := GOROOT=$(GOROOT) GOPATH=$(GOPATH) $(GOCC) + +SUFFIX := $(GOOS)-$(GOARCH) +BINARY := $(TARGET) +ARCHIVE := $(TARGET)-$(VERSION).$(SUFFIX).tar.gz + +default: + go build $(GOFLAGS) + +.deps/$(GOPKG): + mkdir -p .deps + curl -o .deps/$(GOPKG) http://go.googlecode.com/files/$(GOPKG) + +$(GOCC): .deps/$(GOPKG) + tar -C .deps -xzf .deps/$(GOPKG) + touch $@ + +dependencies: $(SRC) + $(GO) get -d + +$(BINARY): $(GOCC) $(SRC) dependencies + $(GO) build $(GOFLAGS) -o $@ + +$(ARCHIVE): $(BINARY) + tar -czf $@ $< + +release: REMOTE ?= $(error "can't release, REMOTE not set") +release: REMOTE_DIR ?= $(error "can't release, REMOTE_DIR not set") +release: $(ARCHIVE) + scp $< $(REMOTE):$(REMOTE_DIR)/$(ARCHIVE) + +clean: + rm -rf bin + +.PHONY: dependencies clean release