-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
107 lines (85 loc) · 2.54 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
LDFLAGS := $(shell go run buildscripts/gen-ldflags.go)
BUILD_LDFLAGS := '$(LDFLAGS)'
all: install
checks:
@echo "Checking deps"
@(env bash buildscripts/checkdeps.sh)
@echo "Checking project is in GOPATH"
@(env bash buildscripts/checkgopath.sh)
getdeps: checks
@echo "Installing golint" && go get github.com/golang/lint/golint
@echo "Installing gocyclo" && go get github.com/fzipp/gocyclo
@echo "Installing deadcode" && go get github.com/remyoudompheng/go-misc/deadcode
@echo "Installing misspell" && go get github.com/client9/misspell/cmd/misspell
verifiers: vet fmt lint cyclo deadcode spelling
vet:
@echo "Running $@"
@go tool vet -all *.go
@go tool vet -all ./cmd
@go tool vet -all ./pkg
@go tool vet -shadow=true *.go
@go tool vet -shadow=true ./cmd
@go tool vet -shadow=true ./pkg
spelling:
@${GOPATH}/bin/misspell *.go
@${GOPATH}/bin/misspell cmd/*
@${GOPATH}/bin/misspell pkg/**/*
fmt:
@echo "Running $@"
@gofmt -d *.go
@gofmt -d cmd
@gofmt -d pkg
lint:
@echo "Running $@"
@$(GOPATH)/bin/golint .
@$(GOPATH)/bin/golint github.com/minio/mc/cmd...
@$(GOPATH)/bin/golint github.com/minio/mc/pkg...
cyclo:
@echo "Running $@"
@$(GOPATH)/bin/gocyclo -over 40 cmd
@$(GOPATH)/bin/gocyclo -over 40 pkg
deadcode:
@echo "Running $@"
@$(GOPATH)/bin/deadcode
build: getdeps verifiers
@echo "Running $@"
@go build -tags kqueue --ldflags $(BUILD_LDFLAGS)
test: build
@echo "Running unit tests"
@go test $(GOFLAGS) -tags kqueue github.com/minio/mc/cmd...
@go test $(GOFLAGS) -tags kqueue github.com/minio/mc/pkg...
@echo "Running functional tests"
@(env bash $(PWD)/functional-tests.sh)
gomake-all: build
@echo "Installing mc at $(GOPATH)/bin/mc"
@cp -af mc $(GOPATH)/bin/mc
@mkdir -p $(HOME)/.mc
coverage: getdeps verifiers
@echo "Running all coverage for mc"
@./buildscripts/go-coverage.sh
pkg-validate-arg-%: ;
ifndef PKG
$(error Usage: make $(@:pkg-validate-arg-%=pkg-%) PKG=pkg_name)
endif
pkg-add: pkg-validate-arg-add
@echo "Adding new package $(PKG)"
@$(GOPATH)/bin/govendor add $(PKG)
pkg-update: pkg-validate-arg-update
@echo "Updating new package $(PKG)"
@$(GOPATH)/bin/govendor update $(PKG)
pkg-remove: pkg-validate-arg-remove
@echo "Remove new package $(PKG)"
@$(GOPATH)/bin/govendor remove $(PKG)
pkg-list:
@$(GOPATH)/bin/govendor list
install: gomake-all
release: test
@MC_RELEASE=RELEASE ./buildscripts/build.sh
experimental: verifiers
@MC_RELEASE=EXPERIMENTAL ./buildscripts/build.sh
clean:
@echo "Cleaning up all the generated files"
@rm -f cover.out
@rm -f mc
@find . -name '*.test' | xargs rm -fv
@rm -fr release