From 3a92363e65a29b6106cdfa98d6bcf297b0eda5ad Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Wed, 24 Jan 2018 23:44:49 -0500 Subject: Create buildSrc --- .../ca/allanwang/kau/ChangelogGenerator.groovy | 76 ++++++++++++++++++++++ .../groovy/ca/allanwang/kau/Dependencies.groovy | 10 +++ .../main/groovy/ca/allanwang/kau/KauPlugin.groovy | 16 +++++ .../main/groovy/ca/allanwang/kau/Plugins.groovy | 13 ++++ .../main/groovy/ca/allanwang/kau/Versions.groovy | 37 +++++++++++ .../gradle-plugins/ca.allanwang.kau.properties | 1 + 6 files changed, 153 insertions(+) create mode 100644 buildSrc/src/main/groovy/ca/allanwang/kau/ChangelogGenerator.groovy create mode 100644 buildSrc/src/main/groovy/ca/allanwang/kau/Dependencies.groovy create mode 100644 buildSrc/src/main/groovy/ca/allanwang/kau/KauPlugin.groovy create mode 100644 buildSrc/src/main/groovy/ca/allanwang/kau/Plugins.groovy create mode 100644 buildSrc/src/main/groovy/ca/allanwang/kau/Versions.groovy create mode 100644 buildSrc/src/main/resources/META-INF/gradle-plugins/ca.allanwang.kau.properties (limited to 'buildSrc/src') 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 + * + * + * + * + * + * + * + * + * + * + * 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 { + + @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 diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/ca.allanwang.kau.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/ca.allanwang.kau.properties new file mode 100644 index 0000000..ba824cd --- /dev/null +++ b/buildSrc/src/main/resources/META-INF/gradle-plugins/ca.allanwang.kau.properties @@ -0,0 +1 @@ +implementation-class=ca.allanwang.kau.KauPlugin \ No newline at end of file -- cgit v1.2.3