Skip to content

Commit

Permalink
remove usage of project in task, but apply plugin in subprojects
Browse files Browse the repository at this point in the history
  • Loading branch information
countableSet committed Jan 30, 2025
1 parent 1c9e9d0 commit e0c6afa
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@ package dev.poolside.gradle.semanticversion

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.tasks.GenerateMavenPom
import org.gradle.api.tasks.compile.JavaCompile
import org.gradle.kotlin.dsl.withType

class SemanticVersionPlugin : Plugin<Project> {
override fun apply(project: Project) {
val extension = project.extensions.create("semanticVersion", SemanticVersionExtension::class.java)
val pubExtension = project.extensions.getByType(PublishingExtension::class.java)
project.tasks.register("semanticVersion", SemanticVersionTask::class.java) {
this.description = "Determines and sets the semantic version"
this.group = "publishing"
this.manual = extension.manual
this.extension = pubExtension
}
project.tasks.withType<JavaCompile> {
this.dependsOn("semanticVersion")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ abstract class SemanticVersionTask : DefaultTask() {
private val versionRegex = "^\\d+\\.\\d+\$".toRegex()
private val versions = mutableMapOf<String, String>()

@Input
lateinit var extension: PublishingExtension
@Input
var manual: Boolean = false

Expand All @@ -27,24 +29,21 @@ abstract class SemanticVersionTask : DefaultTask() {
}

private fun automatic() {
project.allprojects.forEach { p ->
val extension = p.extensions.getByType(PublishingExtension::class.java)
extension.repositories.forEach {
if (it is ResolutionAwareRepository) {
val resolver = it.createResolver()
extension.publications.forEach { publication ->
val pub = publication as MavenPublication
checkVersion(pub.version)
val (key, version) = VersionFinder.findVersion(logger, project, resolver, pub)
pub.version = version
versions[key] = version
}
extension.repositories.forEach {
if (it is ResolutionAwareRepository) {
val resolver = it.createResolver()
extension.publications.forEach { publication ->
val pub = publication as MavenPublication
checkVersion(pub.version)
val (key, version) = VersionFinder.findVersion(logger, project, resolver, pub)
pub.version = version
versions[key] = version
}
}
extension.publications.forEach { publication ->
val pub = publication as MavenPublication
rewrite(pub)
}
}
extension.publications.forEach { publication ->
val pub = publication as MavenPublication
rewrite(pub)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,7 @@ class SemanticVersionPluginTest {
plugins {
`java-library`
`maven-publish`
id("dev.poolside.gradle.semantic-version")
}
repositories {
mavenCentral()
Expand Down Expand Up @@ -578,6 +579,7 @@ class SemanticVersionPluginTest {
plugins {
`java-library`
`maven-publish`
id("dev.poolside.gradle.semantic-version")
}
repositories {
mavenCentral()
Expand All @@ -603,6 +605,7 @@ class SemanticVersionPluginTest {
plugins {
`java-platform`
`maven-publish`
id("dev.poolside.gradle.semantic-version")
}
repositories {
mavenCentral()
Expand Down

0 comments on commit e0c6afa

Please sign in to comment.