1DOC_SERVER_URL=https:\/\/docs.cloud.oracle.com
2
3GEN_TARGETS = identity core objectstorage loadbalancer database audit dns filestorage email containerengine resourcesearch keymanagement announcementsservice healthchecks waas autoscaling streaming ons monitoring resourcemanager budget workrequests functions limits events dts oce oda analytics integration ##SPECNAME##
4NON_GEN_TARGETS = common common/auth objectstorage/transfer example
5TARGETS = $(NON_GEN_TARGETS) $(GEN_TARGETS)
6
7TARGETS_WITH_TESTS = common common/auth objectstorage/transfer
8TARGETS_BUILD = $(patsubst %,build-%, $(TARGETS))
9TARGETS_CLEAN = $(patsubst %,clean-%, $(GEN_TARGETS))
10TARGETS_LINT = $(patsubst %,lint-%, $(TARGETS))
11TARGETS_TEST = $(patsubst %,test-%, $(TARGETS_WITH_TESTS))
12TARGETS_RELEASE= $(patsubst %,release-%, $(TARGETS))
13GOLINT=$(GOPATH)/bin/golint
14LINT_FLAGS=-min_confidence 0.9 -set_exit_status
15
16# directories under gen targets which contains hand writen code
17EXCLUDED_CLEAN_DIRECTORIES = objectstorage/transfer*
18
19.PHONY: $(TARGETS_BUILD) $(TARGET_TEST)
20
21build: lint $(TARGETS_BUILD)
22
23test: build $(TARGETS_TEST)
24
25lint: $(TARGETS_LINT)
26
27clean: $(TARGETS_CLEAN)
28
29$(TARGETS_LINT): lint-%:%
30	@echo "linting and formatting: $<"
31	@(cd $< && gofmt -s -w .)
32	@if [ \( $< = common \) -o \( $< = common/auth \) ]; then\
33		(cd $< && $(GOLINT) -set_exit_status .);\
34	else\
35		(cd $< && $(GOLINT) $(LINT_FLAGS) .);\
36	fi
37
38# for sample code, only build them via 'go test -c'
39$(TARGETS_BUILD): build-%:%
40	@echo "building: $<"
41	@if [ \( $< = example \) ]; then\
42		(cd $< && go test -c);\
43	else\
44		(cd $< && find . -name '*_integ_test.go' | xargs -I{} mv {} ../integtest);\
45		(cd $< && go build -v);\
46	fi
47
48$(TARGETS_TEST): test-%:%
49	@(cd $< && go test -v)
50
51$(TARGETS_CLEAN): clean-%:%
52	@echo "cleaning $<"
53	@-find $< -not -path "$<" | grep -vZ ${EXCLUDED_CLEAN_DIRECTORIES} | xargs rm -rf
54
55# clean all generated code under GEN_TARGETS folder
56clean-generate:
57	for target in ${GEN_TARGETS}; do \
58		echo "cleaning $$target"; \
59		find $$target -not -path "$$target" | grep -vZ ${EXCLUDED_CLEAN_DIRECTORIES} | xargs rm -rf; \
60	done
61
62pre-doc:
63	@echo "Rendering doc server to ${DOC_SERVER_URL}"
64	find . -name \*.go |xargs sed -i '' 's/{{DOC_SERVER_URL}}/${DOC_SERVER_URL}/g'
65	find . -name \*.go |xargs sed -i '' 's/https:\/\/docs.us-phoenix-1.oraclecloud.com/${DOC_SERVER_URL}/g'
66
67gen-version:
68	go generate -x
69
70release: gen-version build pre-doc
71