Skip to content

Commit

Permalink
Updates to publish plugin. Fixes javadoc (#146)
Browse files Browse the repository at this point in the history
  • Loading branch information
rchowell authored May 25, 2023
1 parent ada877f commit fa0f3dc
Show file tree
Hide file tree
Showing 10 changed files with 155 additions and 150 deletions.
22 changes: 19 additions & 3 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,32 @@

plugins {
`kotlin-dsl`
id("java-gradle-plugin")
}

repositories {
gradlePluginPortal()
}

object Versions {
const val detekt = "1.20.0-RC1"
const val dokka = "1.6.10"
const val kotlin = "1.5.+"
const val ktlint = "10.2.1"
}

object Plugins {
const val detekt = "io.gitlab.arturbosch.detekt:detekt-gradle-plugin:${Versions.detekt}"
const val dokka = "org.jetbrains.dokka:dokka-gradle-plugin:${Versions.dokka}"
const val kotlinGradle = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Versions.kotlin}"
const val ktlint = "org.jlleitschuh.gradle:ktlint-gradle:${Versions.ktlint}"
}

dependencies {
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.0")
implementation("org.jlleitschuh.gradle:ktlint-gradle:10.3.0")
implementation("org.jetbrains.dokka:dokka-gradle-plugin:1.4.0")
implementation(Plugins.detekt)
implementation(Plugins.dokka)
implementation(Plugins.kotlinGradle)
implementation(Plugins.ktlint)
}

allprojects {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
package org.partiql.pig.gradle.publish

import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.publish.PublishingExtension
import org.gradle.api.publish.maven.MavenPublication
import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
import org.gradle.api.publish.maven.tasks.PublishToMavenRepository
import org.gradle.jvm.tasks.Jar
import org.gradle.kotlin.dsl.create
import org.gradle.kotlin.dsl.get
import org.gradle.kotlin.dsl.getByName
import org.gradle.kotlin.dsl.provideDelegate
import org.gradle.plugins.signing.SigningExtension
import org.gradle.plugins.signing.SigningPlugin
import org.jetbrains.dokka.gradle.DokkaPlugin
import org.jetbrains.dokka.gradle.DokkaTask
import java.io.File

/**
* Gradle plugin to consolidates the following publishing logic
* - Maven Publishing
* - Signing
* - SourcesJar
* - Dokka + JavadocJar
*/
abstract class PigPublishPlugin : Plugin<Project> {

override fun apply(target: Project): Unit = with(target) {
pluginManager.apply(JavaPlugin::class.java)
pluginManager.apply(MavenPublishPlugin::class.java)
pluginManager.apply(SigningPlugin::class.java)
pluginManager.apply(DokkaPlugin::class.java)
val ext = extensions.create("publish", PublishExtension::class.java)
target.afterEvaluate { publish(ext) }
}

private fun Project.publish(ext: PublishExtension) {
val releaseVersion = !version.toString().endsWith("-SNAPSHOT")

// Run dokka unless the environment explicitly specifies false
val runDokka = (System.getenv()["DOKKA"] != "false") || releaseVersion

// Include "sources" and "javadoc" in the JAR
extensions.getByType(JavaPluginExtension::class.java).run {
withSourcesJar()
withJavadocJar()
}

tasks.getByName<DokkaTask>("dokkaHtml") {
onlyIf { runDokka }
outputDirectory.set(File("${buildDir}/javadoc"))
}

// Add dokkaHtml output to the javadocJar
tasks.getByName<Jar>("javadocJar") {
onlyIf { runDokka }
dependsOn(JavaPlugin.CLASSES_TASK_NAME)
archiveClassifier.set("javadoc")
from(tasks.named("dokkaHtml"))
}

// Setup Maven Central Publishing
val publishing = extensions.getByType(PublishingExtension::class.java).apply {
publications {
create<MavenPublication>("maven") {
artifactId = ext.artifactId
from(components["java"])
pom {
packaging = "jar"
name.set(ext.name)
description.set("The P.I.G. is a code generator for domain models such ASTs and execution plans.")
url.set("git@github.com:partiql/partiql-ir-generator.git")
scm {
connection.set("scm:git@github.com:partiql/partiql-ir-generator.git")
developerConnection.set("scm:git@github.com:partiql/partiql-ir-generator.git")
url.set("git@github.com:partiql/partiql-ir-generator.git")
}
licenses {
license {
name.set("The Apache License, Version 2.0")
url.set("http://www.apache.org/licenses/LICENSE-2.0.txt")
}
}
developers {
developer {
name.set("PartiQL Team")
email.set("partiql-dev@amazon.com")
organization.set("PartiQL")
organizationUrl.set("https://github.com/partiql")
}
}
}
}
}
repositories {
maven {
url = uri("https://aws.oss.sonatype.org/service/local/staging/deploy/maven2")
credentials {
val ossrhUsername: String by rootProject
val ossrhPassword: String by rootProject
username = ossrhUsername
password = ossrhPassword
}
}
}
}

// Sign only if publishing to Maven Central
extensions.getByType(SigningExtension::class.java).run {
setRequired {
releaseVersion && gradle.taskGraph.allTasks.any { it is PublishToMavenRepository }
}
sign(publishing.publications["maven"])
}
}
}

abstract class PublishExtension {
var artifactId: String = ""
var name: String = ""
}
99 changes: 0 additions & 99 deletions buildSrc/src/main/kotlin/pig.publish.gradle.kts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
implementation-class=org.partiql.pig.gradle.publish.PigPublishPlugin
9 changes: 6 additions & 3 deletions pig-runtime/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,14 @@

plugins {
id("pig.conventions")
id("pig.publish")
id("org.partiql.pig.gradle.publish")
}

project.description = "The P.I.G. is a code generator for domain models such ASTs and execution plans."

dependencies {
api("com.amazon.ion:ion-element:1.0.0")
}

publish {
artifactId = "pig-runtime"
name = "PartiQL I.R. Generator (a.k.a P.I.G.) Runtime Library"
}
Original file line number Diff line number Diff line change
Expand Up @@ -1551,41 +1551,35 @@ class DomainA private constructor() {
walkSymbolPrimitive(node.whatever)
walkMetas(node.metas)
}

open fun walkRecordToRemove(node: DomainA.RecordToRemove) {
visitRecordToRemove(node)
walkLongPrimitive(node.irrelevant)
walkMetas(node.metas)
}

open fun walkProductA(node: DomainA.ProductA) {
visitProductA(node)
walkLongPrimitive(node.one)
walkProductToRemove(node.two)
walkMetas(node.metas)
}

open fun walkRecordA(node: DomainA.RecordA) {
visitRecordA(node)
walkLongPrimitive(node.one)
walkProductToRemove(node.two)
walkMetas(node.metas)
}

open fun walkUnpermutedProduct(node: DomainA.UnpermutedProduct) {
visitUnpermutedProduct(node)
walkSymbolPrimitive(node.foo)
walkLongPrimitive(node.bar)
walkMetas(node.metas)
}

open fun walkUnpermutedRecord(node: DomainA.UnpermutedRecord) {
visitUnpermutedRecord(node)
walkSymbolPrimitive(node.foo)
walkLongPrimitive(node.bar)
walkMetas(node.metas)
}

//////////////////////////////////////
// Sum Type: SumToRemove
//////////////////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1245,44 +1245,37 @@ class DomainB private constructor() {
walkLongPrimitive(node.bar)
walkMetas(node.metas)
}

open fun walkUnpermutedRecord(node: DomainB.UnpermutedRecord) {
visitUnpermutedRecord(node)
walkSymbolPrimitive(node.foo)
walkLongPrimitive(node.bar)
walkMetas(node.metas)
}

open fun walkProductA(node: DomainB.ProductA) {
visitProductA(node)
walkSymbolPrimitive(node.one)
walkMetas(node.metas)
}

open fun walkRecordA(node: DomainB.RecordA) {
visitRecordA(node)
walkSymbolPrimitive(node.one)
walkMetas(node.metas)
}

open fun walkSumToReplaceWithProduct(node: DomainB.SumToReplaceWithProduct) {
visitSumToReplaceWithProduct(node)
walkSymbolPrimitive(node.foo)
walkMetas(node.metas)
}

open fun walkNewProduct(node: DomainB.NewProduct) {
visitNewProduct(node)
walkLongPrimitive(node.foo)
walkMetas(node.metas)
}

open fun walkNewRecord(node: DomainB.NewRecord) {
visitNewRecord(node)
walkLongPrimitive(node.foo)
walkMetas(node.metas)
}

//////////////////////////////////////
// Sum Type: UnpermutedSum
//////////////////////////////////////
Expand Down
Loading

0 comments on commit fa0f3dc

Please sign in to comment.