Skip to content

Commit cbd643f

Browse files
authored
Move releaseClean and releasePerform tasks to separate scripts for better reusability
1 parent dbb3ab0 commit cbd643f

File tree

3 files changed

+48
-40
lines changed

3 files changed

+48
-40
lines changed

app/build.gradle

Lines changed: 5 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
apply plugin: 'com.android.application'
22
apply plugin: 'org.ajoberstar.grgit'
3+
apply from: "${rootProject.projectDir}/gradle/prepare_release.gradle"
4+
apply from: "${rootProject.projectDir}/gradle/clean_release.gradle"
5+
apply from: "${rootProject.projectDir}/gradle/perform_release.gradle"
36

47
android {
58
compileSdk 34
@@ -80,41 +83,14 @@ task ensureCleanRepo {
8083

8184
task releaseClean(dependsOn: ensureCleanRepo) {
8285
doLast {
83-
def clean = true
84-
def applicationId = android.defaultConfig.applicationId
85-
86-
String headCommitMessage = grgit.head().shortMessage
87-
while (headCommitMessage.contains("[gradle-release-task]")) {
88-
clean = false
89-
println "Found git commit: $headCommitMessage"
90-
if (headCommitMessage.indexOf("$applicationId-") > -1) {
91-
def tagName = headCommitMessage.split("$applicationId-")[1]
92-
println "Removing the git tag: $tagName"
93-
try {
94-
grgit.tag.remove {
95-
names = [tagName]
96-
}
97-
} catch (Exception e) {
98-
println "Error while removing git tag:\n $e"
99-
}
100-
}
101-
println "Resetting the git commit permanently!"
102-
grgit.reset(commit: "HEAD~1", mode: "hard")
103-
headCommitMessage = grgit.head().shortMessage
104-
105-
}
106-
if (clean){
107-
println "Repository is already clean"
108-
}
109-
println "Done!"
86+
cleanRelease()
11087
}
11188
}
11289

11390
// Task parameters:
11491
// bumpVersion -> if available will specify new versionName directly and ignores the `bumpType` parameter.
11592
// bumpType[major|minor|patch] -> will specify how the version bumping occurs.
11693

117-
apply from: "${rootProject.projectDir}/gradle/prepare_release.gradle"
11894
task releasePrepare(dependsOn: ensureCleanRepo) {
11995
doLast {
12096
prepareRelease()
@@ -123,17 +99,6 @@ task releasePrepare(dependsOn: ensureCleanRepo) {
12399

124100
task releasePerform(dependsOn: ensureCleanRepo) {
125101
doLast {
126-
boolean force = false
127-
if (project.properties.containsKey("force")) {
128-
force = project.properties["force"]
129-
}
130-
println "Pushing the newest commits to the remote repository (force: $force)"
131-
try {
132-
grgit.push(force: force, tags: true)
133-
} catch (Exception e) {
134-
throw new GradleException("Failed to push to the repo,\n" +
135-
" you can try using -Pforce=true parameter to force the push, error: \n$e")
136-
}
137-
println "Done!"
102+
performRelease()
138103
}
139104
}

gradle/clean_release.gradle

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
ext.cleanRelease = {
2+
def clean = true
3+
def applicationId = android.defaultConfig.applicationId
4+
5+
String headCommitMessage = grgit.head().shortMessage
6+
while (headCommitMessage.contains("[gradle-release-task]")) {
7+
clean = false
8+
println "Found git commit: $headCommitMessage"
9+
if (headCommitMessage.indexOf("$applicationId-") > -1) {
10+
def tagName = headCommitMessage.split("$applicationId-")[1]
11+
println "Removing the git tag: $tagName"
12+
try {
13+
grgit.tag.remove {
14+
names = [tagName]
15+
}
16+
} catch (Exception e) {
17+
println "Error while removing git tag:\n $e"
18+
}
19+
}
20+
println "Resetting the git commit permanently!"
21+
grgit.reset(commit: "HEAD~1", mode: "hard")
22+
headCommitMessage = grgit.head().shortMessage
23+
24+
}
25+
if (clean){
26+
println "Repository is already clean"
27+
}
28+
println "Done!"
29+
}

gradle/perform_release.gradle

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
ext.performRelease = {
2+
boolean force = false
3+
if (project.properties.containsKey("force")) {
4+
force = project.properties["force"]
5+
}
6+
println "Pushing the newest commits to the remote repository (force: $force)"
7+
try {
8+
grgit.push(force: force, tags: true)
9+
} catch (Exception e) {
10+
throw new GradleException("Failed to push to the repo,\n" +
11+
" you can try using -Pforce=true parameter to force the push, error: \n$e")
12+
}
13+
println "Done!"
14+
}

0 commit comments

Comments
 (0)