aboutsummaryrefslogtreecommitdiff
path: root/kvision-modules/kvision-gradle-plugin
diff options
context:
space:
mode:
Diffstat (limited to 'kvision-modules/kvision-gradle-plugin')
-rw-r--r--kvision-modules/kvision-gradle-plugin/build.gradle20
-rw-r--r--kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradlePlugin.kt30
-rw-r--r--kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradleSubplugin.kt57
3 files changed, 107 insertions, 0 deletions
diff --git a/kvision-modules/kvision-gradle-plugin/build.gradle b/kvision-modules/kvision-gradle-plugin/build.gradle
new file mode 100644
index 00000000..7b2d0f33
--- /dev/null
+++ b/kvision-modules/kvision-gradle-plugin/build.gradle
@@ -0,0 +1,20 @@
+apply plugin: 'kotlin-platform-jvm'
+apply plugin: "java-gradle-plugin"
+apply plugin: "kotlin-kapt"
+apply plugin: "maven"
+
+gradlePlugin {
+ plugins {
+ simplePlugin {
+ id = "pl.treksoft.kvision"
+ implementationClass = "pl.treksoft.kvision.gradle.KVisionGradlePlugin"
+ }
+ }
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
+ compile "org.jetbrains.kotlin:kotlin-gradle-plugin-api:$kotlinVersion"
+ compileOnly "com.google.auto.service:auto-service:$autoServiceVersion"
+ kapt "com.google.auto.service:auto-service:$autoServiceVersion"
+}
diff --git a/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradlePlugin.kt b/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradlePlugin.kt
new file mode 100644
index 00000000..ec2dd7f4
--- /dev/null
+++ b/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradlePlugin.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2017-present Robert Jaros
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package pl.treksoft.kvision.gradle
+
+import org.gradle.api.Project
+
+open class KVisionGradlePlugin : org.gradle.api.Plugin<Project> {
+ override fun apply(project: Project) {
+
+ }
+}
diff --git a/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradleSubplugin.kt b/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradleSubplugin.kt
new file mode 100644
index 00000000..5ecfc3e9
--- /dev/null
+++ b/kvision-modules/kvision-gradle-plugin/src/main/kotlin/pl/treksoft/kvision/gradle/KVisionGradleSubplugin.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright (c) 2017-present Robert Jaros
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+package pl.treksoft.kvision.gradle
+
+import com.google.auto.service.AutoService
+import org.gradle.api.Project
+import org.gradle.api.tasks.compile.AbstractCompile
+import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
+import org.jetbrains.kotlin.gradle.plugin.KotlinCompilation
+import org.jetbrains.kotlin.gradle.plugin.KotlinGradleSubplugin
+import org.jetbrains.kotlin.gradle.plugin.SubpluginArtifact
+import org.jetbrains.kotlin.gradle.plugin.SubpluginOption
+
+@AutoService(KotlinGradleSubplugin::class)
+class KVisionGradleSubplugin : KotlinGradleSubplugin<AbstractCompile> {
+ override fun apply(
+ project: Project,
+ kotlinCompile: AbstractCompile,
+ javaCompile: AbstractCompile?,
+ variantData: Any?,
+ androidProjectHandler: Any?,
+ kotlinCompilation: KotlinCompilation<KotlinCommonOptions>?
+ ): List<SubpluginOption> {
+ return emptyList()
+ }
+
+ override fun isApplicable(project: Project, task: AbstractCompile) =
+ project.plugins.hasPlugin(KVisionGradlePlugin::class.java)
+
+ override fun getCompilerPluginId(): String = "KVisionPlugin"
+
+ override fun getPluginArtifact(): SubpluginArtifact = SubpluginArtifact(
+ groupId = "pl.treksoft",
+ artifactId = "kvision-compiler-plugin",
+ version = "2.0.0-SNAPSHOT"
+ )
+
+}