aboutsummaryrefslogtreecommitdiff
path: root/buildSrc/src/main/groovy
diff options
context:
space:
mode:
Diffstat (limited to 'buildSrc/src/main/groovy')
-rw-r--r--buildSrc/src/main/groovy/ca/allanwang/kau/ChangelogGenerator.groovy76
-rw-r--r--buildSrc/src/main/groovy/ca/allanwang/kau/Dependencies.groovy10
-rw-r--r--buildSrc/src/main/groovy/ca/allanwang/kau/KauPlugin.groovy16
-rw-r--r--buildSrc/src/main/groovy/ca/allanwang/kau/Plugins.groovy13
-rw-r--r--buildSrc/src/main/groovy/ca/allanwang/kau/Versions.groovy37
5 files changed, 152 insertions, 0 deletions
diff --git a/buildSrc/src/main/groovy/ca/allanwang/kau/ChangelogGenerator.groovy b/buildSrc/src/main/groovy/ca/allanwang/kau/ChangelogGenerator.groovy
new file mode 100644
index 0000000..bb56fa2
--- /dev/null
+++ b/buildSrc/src/main/groovy/ca/allanwang/kau/ChangelogGenerator.groovy
@@ -0,0 +1,76 @@
+package ca.allanwang.kau
+
+import org.gradle.api.GradleException
+import org.gradle.api.Project
+
+/**
+ * Given an xml of the format
+ *
+ * <?xml version="1.0" encoding="utf-8"?>
+ * <resources>
+ * <version title="v0.1" />
+ * <item text="Initial Changelog" />
+ * <item text="Bullet point here" />
+ * <item text="More points" />
+ * <item text="" /> <!-- this one is empty and therefore ignored -->
+ * </resources>
+ *
+ * Outputs a changelog in markdown format
+ */
+class ChangelogGenerator {
+
+ static class ChangelogException extends GradleException {
+ ChangelogException(String message) {
+ super(message)
+ }
+ }
+
+ private Project project
+
+ ChangelogGenerator(Project project) {
+ this.project = project
+ }
+
+ private static void fail(String message) {
+ throw new ChangelogException(message)
+ }
+
+ final void generate(String inputUri, String outputUri = "$project.rootDir/docs/Changelog.md") {
+ def input = new File(inputUri)
+ if (!input.exists())
+ fail("Could not generate changelog from ${input.absolutePath}")
+
+ def output = new File(outputUri)
+
+ if (output.exists()) {
+ if (output.isDirectory())
+ fail("Cannot save changelog at directory ${output.absolutePath}")
+
+
+ if (output.isFile() && !output.delete())
+ fail("Could not delete changelog at ${output.absolutePath}")
+ } else {
+ output.parentFile.mkdirs()
+ }
+
+ if (!output.createNewFile())
+ fail("Could not create changelog file at ${output.absolutePath}")
+
+ def parsedProjectXml = (new XmlParser()).parse(inputUri)
+ def sw = new StringWriter()
+ sw.append("# Changelog\n")
+ parsedProjectXml.depthFirst().each {
+ switch (it.name()) {
+ case "version":
+ sw.append("\n## ${it.@title}\n")
+ break
+ case "item":
+ if (it.@text?.trim())
+ sw.append("* ${it.@text}\n")
+ }
+ }
+ output.write(sw.toString())
+ println("Generated changelog at ${output.absolutePath}")
+ }
+
+} \ No newline at end of file
diff --git a/buildSrc/src/main/groovy/ca/allanwang/kau/Dependencies.groovy b/buildSrc/src/main/groovy/ca/allanwang/kau/Dependencies.groovy
new file mode 100644
index 0000000..368b0a8
--- /dev/null
+++ b/buildSrc/src/main/groovy/ca/allanwang/kau/Dependencies.groovy
@@ -0,0 +1,10 @@
+package ca.allanwang.kau
+
+/**
+ * Some common dependencies, backed by the supplied versions
+ */
+class Dependencies {
+ static def kotlin = "org.jetbrains.kotlin:kotlin-stdlib:${Versions.kotlin}"
+ static def kotlinTest = "org.jetbrains.kotlin:kotlin-test-junit:${Versions.kotlin}"
+ static def junit = "junit:junit:${Versions.junit}"
+} \ No newline at end of file
diff --git a/buildSrc/src/main/groovy/ca/allanwang/kau/KauPlugin.groovy b/buildSrc/src/main/groovy/ca/allanwang/kau/KauPlugin.groovy
new file mode 100644
index 0000000..e73564c
--- /dev/null
+++ b/buildSrc/src/main/groovy/ca/allanwang/kau/KauPlugin.groovy
@@ -0,0 +1,16 @@
+package ca.allanwang.kau
+
+import org.gradle.api.Plugin
+import org.gradle.api.Project
+
+class KauPlugin implements Plugin<Project> {
+
+ @Override
+ void apply(Project project) {
+ project.extensions.create("kau", Versions)
+ project.extensions.create("kauPlugin", Plugins)
+ project.extensions.create("kauDependency", Dependencies)
+ project.extensions.create("kauChangelog", ChangelogGenerator, project)
+ }
+
+} \ No newline at end of file
diff --git a/buildSrc/src/main/groovy/ca/allanwang/kau/Plugins.groovy b/buildSrc/src/main/groovy/ca/allanwang/kau/Plugins.groovy
new file mode 100644
index 0000000..040e2a2
--- /dev/null
+++ b/buildSrc/src/main/groovy/ca/allanwang/kau/Plugins.groovy
@@ -0,0 +1,13 @@
+package ca.allanwang.kau
+
+/**
+ * Some common buildscript plugins, backed by the supplied versions
+ */
+class Plugins {
+ static def android = "com.android.tools.build:gradle:${Versions.gradlePlugin}"
+ static def kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
+ static def androidMaven = "com.github.dcendents:android-maven-gradle-plugin:${Versions.mavenPlugin}"
+ static def playPublisher = "com.github.triplet.gradle:play-publisher:${Versions.playPublishPlugin}"
+ static def dexCount = "com.getkeepsafe.dexcount:dexcount-gradle-plugin:${Versions.dexCountPlugin}"
+ static def gitVersion = "gradle.plugin.com.gladed.gradle.androidgitversion:gradle-android-git-version:${Versions.gitVersionPlugin}"
+} \ No newline at end of file
diff --git a/buildSrc/src/main/groovy/ca/allanwang/kau/Versions.groovy b/buildSrc/src/main/groovy/ca/allanwang/kau/Versions.groovy
new file mode 100644
index 0000000..4633a4d
--- /dev/null
+++ b/buildSrc/src/main/groovy/ca/allanwang/kau/Versions.groovy
@@ -0,0 +1,37 @@
+package ca.allanwang.kau
+
+class Versions {
+ static def coreMinSdk = 19
+ static def minSdk = 21
+ static def targetSdk = 27
+
+ static def buildTools = '27.0.2'
+ static def supportLibs = '27.0.2'
+
+ static def kotlin = '1.2.21'
+
+ static def aboutLibraries = '6.0.1'
+ static def anko = '0.10.4'
+ static def blurry = '2.1.1'
+ static def constraintLayout = '1.1.0-beta4'
+ static def fastAdapter = '3.1.2'
+ static def fastAdapterCommons = '3.1.2'
+ static def glide = '4.5.0'
+
+ static def iconics = '3.0.2'
+ static def iconicsGoogle = '3.0.1.2'
+ static def iconicsMaterial = '2.2.0.4'
+ static def iconicsCommunity = '2.0.46.1'
+
+ static def materialDialog = '0.9.6.0'
+
+ static def espresso = '3.0.0'
+ static def junit = '4.12'
+ static def testRunner = '1.0.0'
+
+ static def gradlePlugin = '3.0.1'
+ static def mavenPlugin = '2.0'
+ static def playPublishPlugin = '1.2.0'
+ static def dexCountPlugin = '0.8.2'
+ static def gitVersionPlugin = '0.4.3'
+} \ No newline at end of file