diff --git a/src/main/kotlin/com/aliucord/gradle/AliucordExtension.kt b/src/main/kotlin/com/aliucord/gradle/AliucordExtension.kt index e1cb972..63eff67 100644 --- a/src/main/kotlin/com/aliucord/gradle/AliucordExtension.kt +++ b/src/main/kotlin/com/aliucord/gradle/AliucordExtension.kt @@ -22,7 +22,7 @@ import org.gradle.api.provider.ListProperty import org.gradle.api.provider.Property import javax.inject.Inject -abstract class AliucordExtension @Inject constructor(project: Project) { +abstract class AliucordExtension @Inject constructor(val project: Project) { val projectType: Property = project.objects.property(ProjectType::class.java).convention(ProjectType.PLUGIN) diff --git a/src/main/kotlin/com/aliucord/gradle/task/CompileDexTask.kt b/src/main/kotlin/com/aliucord/gradle/task/CompileDexTask.kt index 6fd2d75..7d9feab 100644 --- a/src/main/kotlin/com/aliucord/gradle/task/CompileDexTask.kt +++ b/src/main/kotlin/com/aliucord/gradle/task/CompileDexTask.kt @@ -15,6 +15,7 @@ package com.aliucord.gradle.task +import com.aliucord.gradle.AliucordExtension import com.aliucord.gradle.getAliucord import com.android.build.gradle.BaseExtension import com.android.build.gradle.internal.errors.MessageReceiverImpl @@ -103,6 +104,8 @@ abstract class CompileDexTask : DefaultTask() { aliucord.pluginClassName = reader.className.replace('/', '.') .also { pluginClassFile.asFile.orNull?.writeText(it) } + + return PluginAnnotationVisitor(aliucord) } return object : AnnotationVisitor(Opcodes.ASM9) {} @@ -114,4 +117,19 @@ abstract class CompileDexTask : DefaultTask() { logger.lifecycle("Compiled dex to ${outputFile.get()}") } +} + + +class PluginAnnotationVisitor(private val ext: AliucordExtension) : AnnotationVisitor(Opcodes.ASM9) { + override fun visit(name: String, v: Any) { + if (v is String && v.isNotBlank()) { + when (name) { + "version" -> ext.project.version = v + "description" -> ext.project.description = v + "changelog" -> ext.changelog.set(v.trimIndent()) + "changelogMedia" -> ext.changelogMedia.set(v) + } + } + super.visit(name, v) + } } \ No newline at end of file diff --git a/src/main/kotlin/com/aliucord/gradle/task/Tasks.kt b/src/main/kotlin/com/aliucord/gradle/task/Tasks.kt index 1beae8b..7a71824 100644 --- a/src/main/kotlin/com/aliucord/gradle/task/Tasks.kt +++ b/src/main/kotlin/com/aliucord/gradle/task/Tasks.kt @@ -77,8 +77,8 @@ fun registerTasks(project: Project) { it.from(manifestFile) it.doFirst { - require(project.version != "unspecified") { - "No version is set" + require(project.version != Project.DEFAULT_VERSION) { + "No version is set. Please set the version in either the @AliucordPlugin annotation or the project configuration" } if (extension.pluginClassName == null) { @@ -87,7 +87,7 @@ fun registerTasks(project: Project) { } } - require(extension.pluginClassName != null) { + requireNotNull(extension.pluginClassName) { "No plugin class found, make sure your plugin class is annotated with @AliucordPlugin" }