...
1PRE_RELEASE_VERSION ?=
2
3RELEASE_MANIFEST_FILE ?=
4RELEASE_CHGLOG_DESC_FILE ?=
5
6REPOTOOLS_VERSION ?= latest
7REPOTOOLS_MODULE = github.com/awslabs/aws-go-multi-module-repository-tools
8REPOTOOLS_CMD_CALCULATE_RELEASE = ${REPOTOOLS_MODULE}/cmd/calculaterelease@${REPOTOOLS_VERSION}
9REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS ?=
10REPOTOOLS_CMD_UPDATE_REQUIRES = ${REPOTOOLS_MODULE}/cmd/updaterequires@${REPOTOOLS_VERSION}
11REPOTOOLS_CMD_UPDATE_MODULE_METADATA = ${REPOTOOLS_MODULE}/cmd/updatemodulemeta@${REPOTOOLS_VERSION}
12REPOTOOLS_CMD_GENERATE_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/generatechangelog@${REPOTOOLS_VERSION}
13REPOTOOLS_CMD_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION}
14REPOTOOLS_CMD_TAG_RELEASE = ${REPOTOOLS_MODULE}/cmd/tagrelease@${REPOTOOLS_VERSION}
15REPOTOOLS_CMD_MODULE_VERSION = ${REPOTOOLS_MODULE}/cmd/moduleversion@${REPOTOOLS_VERSION}
16
17UNIT_TEST_TAGS=
18BUILD_TAGS=
19
20ifneq ($(PRE_RELEASE_VERSION),)
21 REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS += -preview=${PRE_RELEASE_VERSION}
22endif
23
24smithy-publish-local:
25 cd codegen && ./gradlew publishToMavenLocal
26
27smithy-build:
28 cd codegen && ./gradlew build
29
30smithy-clean:
31 cd codegen && ./gradlew clean
32
33##################
34# Linting/Verify #
35##################
36.PHONY: verify vet cover
37
38verify: vet
39
40vet:
41 go vet ${BUILD_TAGS} --all ./...
42
43cover:
44 go test ${BUILD_TAGS} -coverprofile c.out ./...
45 @cover=`go tool cover -func c.out | grep '^total:' | awk '{ print $$3+0 }'`; \
46 echo "total (statements): $$cover%";
47
48################
49# Unit Testing #
50################
51.PHONY: unit unit-race unit-test unit-race-test
52
53unit: verify
54 go vet ${BUILD_TAGS} --all ./... && \
55 go test ${BUILD_TAGS} ${RUN_NONE} ./... && \
56 go test -timeout=1m ${UNIT_TEST_TAGS} ./...
57
58unit-race: verify
59 go vet ${BUILD_TAGS} --all ./... && \
60 go test ${BUILD_TAGS} ${RUN_NONE} ./... && \
61 go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./...
62
63unit-test: verify
64 go test -timeout=1m ${UNIT_TEST_TAGS} ./...
65
66unit-race-test: verify
67 go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./...
68
69#####################
70# Release Process #
71#####################
72.PHONY: preview-release pre-release-validation release
73
74preview-release:
75 go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} ${REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS}
76
77pre-release-validation:
78 @if [[ -z "${RELEASE_MANIFEST_FILE}" ]]; then \
79 echo "RELEASE_MANIFEST_FILE is required to specify the file to write the release manifest" && false; \
80 fi
81 @if [[ -z "${RELEASE_CHGLOG_DESC_FILE}" ]]; then \
82 echo "RELEASE_CHGLOG_DESC_FILE is required to specify the file to write the release notes" && false; \
83 fi
84
85release: pre-release-validation
86 go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} -o ${RELEASE_MANIFEST_FILE} ${REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS}
87 go run ${REPOTOOLS_CMD_UPDATE_REQUIRES} -release ${RELEASE_MANIFEST_FILE}
88 go run ${REPOTOOLS_CMD_UPDATE_MODULE_METADATA} -release ${RELEASE_MANIFEST_FILE}
89 go run ${REPOTOOLS_CMD_GENERATE_CHANGELOG} -release ${RELEASE_MANIFEST_FILE} -o ${RELEASE_CHGLOG_DESC_FILE}
90 go run ${REPOTOOLS_CMD_CHANGELOG} rm -all
91 go run ${REPOTOOLS_CMD_TAG_RELEASE} -release ${RELEASE_MANIFEST_FILE}
92
93module-version:
94 @go run ${REPOTOOLS_CMD_MODULE_VERSION} .
95
96##############
97# Repo Tools #
98##############
99.PHONY: install-changelog
100
101install-changelog:
102 go install ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION}
View as plain text