This repository has been archived by the owner on Oct 27, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathbuild.gradle
128 lines (109 loc) · 3.41 KB
/
build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import java.util.regex.Pattern
apply from: project.file('metadata.gradle')
final ANDROID_SUPPORT_REPOSITORY = {
// to use android support libraries in Java projects
final localProperties = new Properties()
try {
localProperties.load(new FileInputStream("${project.rootProject.projectDir}/local.properties"))
} catch (FileNotFoundException e) {
// ignore errors
}
def androidSdkPath = localProperties['sdk.dir'] ?: System.getenv('ANDROID_HOME')
if (!androidSdkPath) {
throw new RuntimeException("Missing local.properties")
}
"${androidSdkPath}/extras/android/m2repository"
}()
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath 'com.novoda:bintray-release:0.3.4' // https://github.com/novoda/bintray-release
}
}
allprojects {
repositories {
maven {
url ANDROID_SUPPORT_REPOSITORY
}
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
ext {
versionFile = project.file("version.properties")
versionName = {
def versionProps = getVersionProps()
"${versionProps['major']}.${versionProps['minor']}.${versionProps['patch']}"
}
metadata.version = versionName()
}
def updateReadme(oldVersion, newVersion) {
def template = file('README.md').text
def result = template.replaceAll(Pattern.quote(oldVersion), newVersion)
file("README.md").withWriter { it << result }
}
def Properties getVersionProps() {
def Properties versionProps = new Properties()
versionProps.load(new FileInputStream(versionFile))
return versionProps
}
task bumpMajor << {
def oldVersion = versionName()
ant.propertyfile(file: versionFile) {
entry(key: 'major', type: 'int', operation: '+', value: 1)
entry(key: 'minor', type: 'int', operation: '=', value: 0)
entry(key: 'patch', type: 'int', operation: '=', value: 0)
}
updateReadme(oldVersion, versionName())
tasks.version.execute()
}
task bumpMinor << {
def oldVersion = versionName()
ant.propertyfile(file: versionFile) {
entry(key: 'minor', type: 'int', operation: '+', value: 1)
entry(key: 'patch', type: 'int', operation: '=', value: 0)
}
updateReadme(oldVersion, versionName())
tasks.version.execute()
}
task bumpPatch << {
def oldVersion = versionName()
ant.propertyfile(file: versionFile) {
entry(key: 'patch', type: 'int', operation: '+', value: 1)
}
updateReadme(oldVersion, versionName())
tasks.version.execute()
}
task version << {
println "v" + versionName()
}
String shell(String command) {
def proc = ["sh", "-c", "cd ${project.rootDir} ; ${command}"].execute()
if (proc.waitFor() != 0) {
throw new RuntimeException("Failed to run: ${command}\n${proc.err.text}")
} else {
def err = proc.err.text
if (err) {
System.err.println(err)
}
}
return proc.in.text;
}
task releng << {
def tag = "v" + versionName()
println "Release engineering for ${tag}"
def changes = shell "git status -s"
if (changes.trim()) {
throw new RuntimeException("There are changes not commited yet.\n${changes}")
}
println "> git tag ${tag}"
shell "git tag ${tag}"
println "> git push origin ${tag}"
shell "git push origin ${tag}"
shell "git push origin master"
}