src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

Makefile (4513B)


      1 PRE_RELEASE_VERSION ?=
      2 
      3 RELEASE_MANIFEST_FILE ?=
      4 RELEASE_CHGLOG_DESC_FILE ?=
      5 
      6 REPOTOOLS_VERSION ?= latest
      7 REPOTOOLS_MODULE = github.com/awslabs/aws-go-multi-module-repository-tools
      8 REPOTOOLS_CMD_CALCULATE_RELEASE = ${REPOTOOLS_MODULE}/cmd/calculaterelease@${REPOTOOLS_VERSION}
      9 REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS ?=
     10 REPOTOOLS_CMD_UPDATE_REQUIRES = ${REPOTOOLS_MODULE}/cmd/updaterequires@${REPOTOOLS_VERSION}
     11 REPOTOOLS_CMD_UPDATE_MODULE_METADATA = ${REPOTOOLS_MODULE}/cmd/updatemodulemeta@${REPOTOOLS_VERSION}
     12 REPOTOOLS_CMD_GENERATE_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/generatechangelog@${REPOTOOLS_VERSION}
     13 REPOTOOLS_CMD_CHANGELOG = ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION}
     14 REPOTOOLS_CMD_TAG_RELEASE = ${REPOTOOLS_MODULE}/cmd/tagrelease@${REPOTOOLS_VERSION}
     15 REPOTOOLS_CMD_MODULE_VERSION = ${REPOTOOLS_MODULE}/cmd/moduleversion@${REPOTOOLS_VERSION}
     16 REPOTOOLS_CMD_EACHMODULE = ${REPOTOOLS_MODULE}/cmd/eachmodule@${REPOTOOLS_VERSION}
     17 
     18 UNIT_TEST_TAGS=
     19 BUILD_TAGS=
     20 
     21 ifneq ($(PRE_RELEASE_VERSION),)
     22 	REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS += -preview=${PRE_RELEASE_VERSION}
     23 endif
     24 
     25 smithy-publish-local:
     26 	cd codegen && ./gradlew publishToMavenLocal
     27 
     28 smithy-build:
     29 	cd codegen && ./gradlew build
     30 
     31 smithy-clean:
     32 	cd codegen && ./gradlew clean
     33 
     34 GRADLE_RETRIES := 3
     35 GRADLE_SLEEP := 2
     36 
     37 # We're making a call to ./gradlew to trigger downloading Gradle and
     38 # starting the daemon. Any call works, so using `./gradlew help`
     39 ensure-gradle-up:
     40 	@cd codegen && for i in $(shell seq 1 $(GRADLE_RETRIES)); do \
     41 		echo "Checking if Gradle daemon is up, attempt $$i..."; \
     42 		if ./gradlew help; then \
     43 			echo "Gradle daemon is up!"; \
     44 			exit 0; \
     45 		fi; \
     46 		echo "Failed to start Gradle, retrying in $(GRADLE_SLEEP) seconds..."; \
     47 		sleep $(GRADLE_SLEEP); \
     48 	done; \
     49 	echo "Failed to start Gradle after $(GRADLE_RETRIES) attempts."; \
     50 	exit 1
     51 
     52 ##################
     53 # Linting/Verify #
     54 ##################
     55 .PHONY: verify vet cover
     56 
     57 verify: vet
     58 
     59 vet: vet-modules-.
     60 
     61 vet-modules-%:
     62 	go run ${REPOTOOLS_CMD_EACHMODULE} -p $(subst vet-modules-,,$@) \
     63 		"go vet ${BUILD_TAGS} --all ./..."
     64 
     65 cover:
     66 	go test ${BUILD_TAGS} -coverprofile c.out ./...
     67 	@cover=`go tool cover -func c.out | grep '^total:' | awk '{ print $$3+0 }'`; \
     68 		echo "total (statements): $$cover%";
     69 
     70 ################
     71 # Unit Testing #
     72 ################
     73 .PHONY: test unit unit-race
     74 
     75 test: unit-race
     76 
     77 unit: verify unit-modules-.
     78 
     79 unit-modules-%:
     80 	go run ${REPOTOOLS_CMD_EACHMODULE} -p $(subst unit-modules-,,$@) \
     81 		"go test -timeout=1m ${UNIT_TEST_TAGS} ./..."
     82 
     83 unit-race: verify unit-race-modules-.
     84 
     85 unit-race-modules-%:
     86 	go run ${REPOTOOLS_CMD_EACHMODULE} -p $(subst unit-race-modules-,,$@) \
     87 		"go test -timeout=1m ${UNIT_TEST_TAGS} -race -cpu=4 ./..."
     88 
     89 
     90 #####################
     91 #  Release Process  #
     92 #####################
     93 .PHONY: preview-release pre-release-validation release
     94 
     95 preview-release:
     96 	go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} ${REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS}
     97 
     98 pre-release-validation:
     99 	@if [[ -z "${RELEASE_MANIFEST_FILE}" ]]; then \
    100 		echo "RELEASE_MANIFEST_FILE is required to specify the file to write the release manifest" && false; \
    101 	fi
    102 	@if [[ -z "${RELEASE_CHGLOG_DESC_FILE}" ]]; then \
    103 		echo "RELEASE_CHGLOG_DESC_FILE is required to specify the file to write the release notes" && false; \
    104 	fi
    105 
    106 release: pre-release-validation
    107 	go run ${REPOTOOLS_CMD_CALCULATE_RELEASE} -o ${RELEASE_MANIFEST_FILE} ${REPOTOOLS_CMD_CALCULATE_RELEASE_ADDITIONAL_ARGS}
    108 	go run ${REPOTOOLS_CMD_UPDATE_REQUIRES} -release ${RELEASE_MANIFEST_FILE}
    109 	go run ${REPOTOOLS_CMD_UPDATE_MODULE_METADATA} -release ${RELEASE_MANIFEST_FILE}
    110 	go run ${REPOTOOLS_CMD_GENERATE_CHANGELOG} -release ${RELEASE_MANIFEST_FILE} -o ${RELEASE_CHGLOG_DESC_FILE}
    111 	go run ${REPOTOOLS_CMD_CHANGELOG} rm -all
    112 	go run ${REPOTOOLS_CMD_TAG_RELEASE} -release ${RELEASE_MANIFEST_FILE}
    113 
    114 module-version:
    115 	@go run ${REPOTOOLS_CMD_MODULE_VERSION} .
    116 
    117 ##############
    118 # Repo Tools #
    119 ##############
    120 .PHONY: install-changelog
    121 
    122 external-changelog:
    123 	mkdir -p .changelog
    124 	cp changelog-template.json .changelog/00000000-0000-0000-0000-000000000000.json
    125 	@echo "Generate a new UUID and update the file at .changelog/00000000-0000-0000-0000-000000000000.json"
    126 	@echo "Make sure to rename the file with your new id, like .changelog/12345678-1234-1234-1234-123456789012.json"
    127 	@echo "See CONTRIBUTING.md 'Changelog Documents' and an example at https://github.com/aws/smithy-go/pull/543/files"
    128 
    129 install-changelog:
    130 	go install ${REPOTOOLS_MODULE}/cmd/changelog@${REPOTOOLS_VERSION}