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