This repository was archived by the owner on May 24, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathMakefile
108 lines (86 loc) · 3.23 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
108
# Copyright The Linux Foundation and each contributor to CommunityBridge.
# SPDX-License-Identifier: MIT
SERVICE_NAME = cla-api
BUILD_TIME=`date +%FT%T%z`
VERSION := $(shell sh -c 'git describe --always --tags')
BRANCH := $(shell sh -c 'git rev-parse --abbrev-ref HEAD')
COMMIT := $(shell sh -c 'git rev-parse --short HEAD')
LDFLAGS=-ldflags "-s -w -X main.version=$(VERSION) -X main.commit=$(COMMIT) -X main.branch=$(BRANCH) -X main.buildDate=$(BUILD_TIME)"
BUILD_TAGS=-tags aws_lambda
LINT_TOOL=$(shell go env GOPATH)/bin/golangci-lint
GO_PKGS=$(shell go list ./... | grep -v /vendor/ | grep -v /node_modules/)
GO_FILES=$(shell find . -type f -name '*.go' -not -path './vendor/*')
TEST_ENV=AWS_REGION=us-east-1 CLA_SERVICE_AWS_ACCESS_KEY_ID=test-env-aws-access-key-id CLA_SERVICE_AWS_SECRET_ACCESS_KEY=test-env-aws-secret-access-key
# Determine the OS
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
detected_os=linux
endif
ifeq ($(UNAME_S),Darwin)
detected_os=macos
endif
ifeq ($(OS),Windows_NT)
detected_os=windows
endif
# Determine the architecture
UNAME_P := $(shell uname -m)
ifeq ($(UNAME_P),x86_64)
detected_arch=amd64
endif
ifneq ($(filter %86,$(UNAME_P)),)
detected_arch=ia32
endif
ifneq ($(filter arm%,$(UNAME_P)),)
detected_arch=arm
endif
.PHONY: generate setup setup_dev setup_deploy clean swagger up fmt test run deps build build-mac build_aws_lambda qc lint
generate: swagger
setup: $(LINT_TOOL) setup_dev
mkdir -p bin
setup_dev: dbmate
go get -u github.com/go-swagger/go-swagger/cmd/swagger
go get -u golang.org/x/tools/cmd/goimports
go get -u github.com/golang/dep/cmd/dep
go get -u github.com/stripe/safesql
dbmate:
@echo "Downloading dbmate - if/when prompted, enter your sudo password"
sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/download/v1.7.0/dbmate-$(detected_os)-$(detected_arch)
sudo chmod +x /usr/local/bin/dbmate
clean:
rm -rf ./gen ./bin
swagger: clean
mkdir gen
swagger -q generate server -t gen -f swagger/cla.yaml --exclude-main -A cla -P auth.User --existing-models "github.com/LF-Engineering/lfx-kit/auth"
swagger-validate:
swagger validate swagger/cla.yaml
up:
dbmate -d ".build/db/migrations" -s ".build/db/schema.sql" up
fmt:
@gofmt -w -l -s $(GO_FILES)
@goimports -w -l $(GO_FILES)
test:
@ $(TEST_ENV) go test -p 1 -v $(shell go list ./... | grep -v /vendor/ | grep -v /node_modules/) -coverprofile=cover.out
run:
go run main.go
deps:
dep ensure -v
build: deps
mkdir -p bin
env GOOS=linux GOARCH=amd64 go build $(LDFLAGS) -o bin/$(SERVICE_NAME) main.go
chmod +x bin/$(SERVICE_NAME)
build-mac: deps
mkdir -p bin
env GOOS=darwin GOARCH=amd64 go build $(LDFLAGS) -o bin/$(SERVICE_NAME) main.go
chmod +x bin/$(SERVICE_NAME)
build-aws-lambda: deps
mkdir -p bin
env GOOS=linux GOARCH=amd64 go build $(LDFLAGS) $(BUILD_TAGS) -o bin/$(SERVICE_NAME) main.go
chmod +x bin/$(SERVICE_NAME)
$(LINT_TOOL):
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(shell go env GOPATH)/bin v1.18.0
lint: $(LINT_TOOL)
$(LINT_TOOL) run --config=.golangci.yaml ./...
safesql:
safesql -v $(GO_FILES)
#$(GOPATH)/src/github.com/communitybridge/safesql/bin/safesql -v $(GO_PKGS)
all: clean swagger swagger-validate deps fmt build-mac test lint