Skip to content

Commit 9c18713

Browse files
committed
Add 'release' make target that accepts version string
A bit annoying that I depend on a local version of semantic-release-versioning plugin, hence the new make target allows to set the version via gradle property instead of depending on the plugin. This is hopefully temporary (as in - "the most permanent things begin as temporary ones") until I have time to get my own semver gradle plugin up and running.
1 parent ea35a16 commit 9c18713

File tree

1 file changed

+60
-14
lines changed

1 file changed

+60
-14
lines changed

Makefile

+60-14
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,66 @@
11
SHELL := env ORCHID_DIAGNOSE=$(ORCHID_DIAGNOSE) $(SHELL)
22
ORCHID_DIAGNOSE ?= false
3-
4-
deploy-docs:
3+
.DEFAULT_GOAL := help
4+
5+
# https://stackoverflow.com/a/10858332
6+
# Check that given variables are set and all have non-empty values,
7+
# die with an error otherwise.
8+
#
9+
# Params:
10+
# 1. Variable name(s) to test.
11+
# 2. (optional) Error message to print.
12+
check_defined = \
13+
$(strip $(foreach 1,$1, \
14+
$(call __check_defined,$1,$(strip $(value 2)))))
15+
__check_defined = \
16+
$(if $(value $1),, \
17+
$(error Undefined $1$(if $2, ($2))))
18+
19+
.PHONY: deploy-docs
20+
deploy-docs: ## deploys documentation with orchid
521
sed -i 's/^\s\sbaseUrl:\shttp:\/\/localhost:8080/ baseUrl: https:\/\/serpro69.github.io\/kotlin-faker/' ./docs/src/orchid/resources/config.yml
622
sed -i 's/^\s\shomePageOnly:.*/#/' ./docs/src/orchid/resources/config.yml
723
./gradlew :docs:orchidDeploy -PorchidEnvironment=prod -PorchidDiagnose=$(ORCHID_DIAGNOSE)
824
git checkout ./docs/src/orchid/resources/config.yml
925

10-
snapshot-in-pre-release:
26+
.PHONY: snapshot-in-pre-release
27+
snapshot-in-pre-release: ## publishes next snapshot in current pre-release version
1128
./gradlew clean test integrationTest \
1229
printVersion \
1330
nativeImage \
1431
publishToSonatype \
1532
-PpromoteToRelease \
1633
--info
1734

18-
snapshot-major:
35+
.PHONY: snapshot-major
36+
snapshot-major: ## publishes next snapshot with a major version bump
1937
./gradlew clean test integrationTest \
2038
printVersion \
2139
nativeImage \
2240
publishToSonatype \
2341
-PbumpComponent=major \
2442
--info
2543

26-
snapshot-minor:
44+
.PHONY: snapshot-minor
45+
snapshot-minor: ## publishes next snapshot with a minor version bump
2746
./gradlew clean test integrationTest \
2847
printVersion \
2948
nativeImage \
3049
publishToSonatype \
3150
-PbumpComponent=minor \
3251
--info
3352

34-
snapshot-patch:
53+
.PHONY: snapshot-patch
54+
snapshot-patch: ## publishes next snapshot with a patch version bump
3555
./gradlew clean test integrationTest \
3656
printVersion \
3757
nativeImage \
3858
publishToSonatype \
3959
-PbumpComponent=patch \
4060
--info
4161

42-
pre-release-major:
62+
.PHONY: pre-release-major
63+
pre-release-major: ## publishes next pre-release version with a major version bump
4364
./gradlew clean test integrationTest \
4465
tag \
4566
nativeImage \
@@ -50,7 +71,8 @@ pre-release-major:
5071

5172
git push origin --tags
5273

53-
pre-release-minor:
74+
.PHONY: pre-release-minor
75+
pre-release-minor: ## publishes next pre-release with a minor version bump
5476
./gradlew clean test integrationTest \
5577
tag \
5678
nativeImage \
@@ -61,7 +83,8 @@ pre-release-minor:
6183

6284
git push origin --tags
6385

64-
pre-release-patch:
86+
.PHONY: pre-release-patch
87+
pre-release-patch: ## publishes next pre-release with a patch version bump
6588
./gradlew clean test integrationTest \
6689
tag \
6790
nativeImage \
@@ -72,7 +95,8 @@ pre-release-patch:
7295

7396
git push origin --tags
7497

75-
next-pre-release:
98+
.PHONY: next-pre-release
99+
next-pre-release: ## publishes next pre-release version
76100
./gradlew clean test integrationTest \
77101
tag \
78102
nativeImage \
@@ -83,7 +107,8 @@ next-pre-release:
83107

84108
git push origin --tags
85109

86-
promote-to-release:
110+
.PHONY: promote-to-release
111+
promote-to-release: ## publishes next release from the current pre-release version
87112
./gradlew clean test integrationTest \
88113
tag \
89114
nativeImage \
@@ -94,7 +119,8 @@ promote-to-release:
94119

95120
git push origin --tags
96121

97-
release-major:
122+
.PHONY: release-major
123+
release-major: ## publishes next major release version
98124
./gradlew clean test integrationTest \
99125
tag \
100126
nativeImage \
@@ -105,7 +131,8 @@ release-major:
105131

106132
git push origin --tags
107133

108-
release-minor:
134+
.PHONY: release-minor
135+
release-minor: ## publishes next minor release version
109136
./gradlew clean test integrationTest \
110137
tag \
111138
nativeImage \
@@ -116,7 +143,8 @@ release-minor:
116143

117144
git push origin --tags
118145

119-
release-patch:
146+
.PHONY: release-patch
147+
release-patch: ## publishes next patch release version
120148
./gradlew clean test integrationTest \
121149
tag \
122150
nativeImage \
@@ -126,3 +154,21 @@ release-patch:
126154
--info
127155

128156
git push origin --tags
157+
158+
.PHONY: release
159+
release: ## publishes the next release with a specified VERSION
160+
@:$(call check_defined, VERSION, semantic version string - 'X.Y.Z(-rc.\d+)?')
161+
162+
./gradlew clean test integrationTest \
163+
nativeImage \
164+
publishToSonatype \
165+
closeSonatypeStagingRepository \
166+
-Pversion=$(VERSION) \
167+
--info
168+
169+
git tag v$(VERSION)
170+
git push origin --tags
171+
172+
.PHONY: help
173+
help: ## Displays this help
174+
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'

0 commit comments

Comments
 (0)