Write GitHub Actions scripts #40
@ -7,8 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### Added
|
### Added
|
||||||
|
- html builders for readme
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
- Kotlin 1.6.0
|
||||||
|
- Use indy lambdas by default #32
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
|
@ -33,6 +33,8 @@ dependencies {
|
|||||||
implementation(libs.dokka.gradle)
|
implementation(libs.dokka.gradle)
|
||||||
implementation(libs.kotlin.jupyter.gradle)
|
implementation(libs.kotlin.jupyter.gradle)
|
||||||
implementation(libs.kotlin.serialization)
|
implementation(libs.kotlin.serialization)
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
|
implementation(libs.kotlinx.html)
|
||||||
implementation("org.tomlj:tomlj:1.0.0")
|
implementation("org.tomlj:tomlj:1.0.0")
|
||||||
// // nexus publishing plugin
|
// // nexus publishing plugin
|
||||||
// implementation("io.github.gradle-nexus:publish-plugin:1.1.0")
|
// implementation("io.github.gradle-nexus:publish-plugin:1.1.0")
|
||||||
@ -94,6 +96,7 @@ gradlePlugin {
|
|||||||
|
|
||||||
//publishing version catalog
|
//publishing version catalog
|
||||||
|
|
||||||
|
@Suppress("UnstableApiUsage")
|
||||||
catalog.versionCatalog {
|
catalog.versionCatalog {
|
||||||
from(files("gradle/libs.versions.toml"))
|
from(files("gradle/libs.versions.toml"))
|
||||||
}
|
}
|
||||||
@ -210,6 +213,6 @@ afterEvaluate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
tasks.processResources.configure {
|
tasks.processResources.configure {
|
||||||
duplicatesStrategy = org.gradle.api.file.DuplicatesStrategy.INCLUDE
|
duplicatesStrategy = DuplicatesStrategy.INCLUDE
|
||||||
from("gradle/libs.versions.toml")
|
from("gradle/libs.versions.toml")
|
||||||
}
|
}
|
@ -1,24 +1,25 @@
|
|||||||
[versions]
|
[versions]
|
||||||
tools = "0.10.5"
|
tools = "0.10.7"
|
||||||
kotlin = "1.6.0-M1"
|
kotlin = "1.6.0"
|
||||||
atomicfu = "0.16.2"
|
atomicfu = "0.16.3"
|
||||||
binary-compatibility-validator = "0.7.1"
|
binary-compatibility-validator = "0.8.0"
|
||||||
changelog = "1.3.0"
|
changelog = "1.3.1"
|
||||||
dokka = "1.5.0"
|
dokka = "1.5.30"
|
||||||
kotlin-jupyter = "0.10.0-227"
|
kotlin-jupyter = "0.10.3-36"
|
||||||
kotlinx-benchmark = "0.3.1"
|
kotlinx-benchmark = "0.3.1"
|
||||||
kotlinx-cli = "0.3.2"
|
kotlinx-cli = "0.3.3"
|
||||||
kotlinx-collections-immutable = "0.3.4"
|
kotlinx-collections-immutable = "0.3.4"
|
||||||
kotlinx-coroutines = "1.5.2"
|
kotlinx-coroutines = "1.5.2"
|
||||||
kotlinx-datetime = "0.2.1"
|
kotlinx-datetime = "0.3.1"
|
||||||
kotlinx-html = "0.7.3"
|
kotlinx-html = "0.7.3"
|
||||||
kotlinx-knit = "0.2.3"
|
kotlinx-knit = "0.2.3"
|
||||||
kotlinx-nodejs = "0.0.7"
|
kotlinx-nodejs = "0.0.7"
|
||||||
kotlinx-serialization = "1.3.0"
|
kotlinx-serialization = "1.3.1"
|
||||||
ktor = "1.6.3"
|
ktor = "1.6.3"
|
||||||
xmlutil = "0.83.0"
|
xmlutil = "0.83.0"
|
||||||
yamlkt = "0.10.2"
|
yamlkt = "0.10.2"
|
||||||
jsBom = "0.0.1-pre.248-kotlin-1.5.31"
|
jsBom = "0.0.1-pre.265-kotlin-1.5.31"
|
||||||
|
junit = "5.8.1"
|
||||||
|
|
||||||
[libraries]
|
[libraries]
|
||||||
atomicfu-gradle = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "atomicfu" }
|
atomicfu-gradle = { module = "org.jetbrains.kotlinx:atomicfu-gradle-plugin", version.ref = "atomicfu" }
|
||||||
|
@ -17,6 +17,11 @@ import ru.mipt.npm.gradle.internal.fromJsDependencies
|
|||||||
|
|
||||||
@Suppress("UNUSED_VARIABLE")
|
@Suppress("UNUSED_VARIABLE")
|
||||||
public open class KScienceCommonPlugin : Plugin<Project> {
|
public open class KScienceCommonPlugin : Plugin<Project> {
|
||||||
|
public companion object{
|
||||||
|
public val defaultJvmArgs: List<String> = listOf("-Xjvm-default=all","-Xlambdas=indy")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun apply(project: Project): Unit = project.run {
|
override fun apply(project: Project): Unit = project.run {
|
||||||
//Common configuration
|
//Common configuration
|
||||||
registerKScienceExtension()
|
registerKScienceExtension()
|
||||||
@ -35,14 +40,14 @@ public open class KScienceCommonPlugin : Plugin<Project> {
|
|||||||
sourceSets["test"].apply {
|
sourceSets["test"].apply {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(kotlin("test-junit5"))
|
implementation(kotlin("test-junit5"))
|
||||||
implementation("org.junit.jupiter:junit-jupiter:5.6.1")
|
implementation("org.junit.jupiter:junit-jupiter:${KScienceVersions.junit}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tasks.withType<KotlinJvmCompile> {
|
tasks.withType<KotlinJvmCompile> {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = KScienceVersions.JVM_TARGET.toString()
|
jvmTarget = KScienceVersions.JVM_TARGET.toString()
|
||||||
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all"
|
freeCompilerArgs = freeCompilerArgs + defaultJvmArgs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,7 +104,7 @@ public open class KScienceCommonPlugin : Plugin<Project> {
|
|||||||
compilations.all {
|
compilations.all {
|
||||||
kotlinOptions {
|
kotlinOptions {
|
||||||
jvmTarget = KScienceVersions.JVM_TARGET.toString()
|
jvmTarget = KScienceVersions.JVM_TARGET.toString()
|
||||||
freeCompilerArgs = freeCompilerArgs + "-Xjvm-default=all"
|
freeCompilerArgs = freeCompilerArgs + defaultJvmArgs
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,7 +133,7 @@ public open class KScienceCommonPlugin : Plugin<Project> {
|
|||||||
val jvmTest by getting {
|
val jvmTest by getting {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(kotlin("test-junit5"))
|
implementation(kotlin("test-junit5"))
|
||||||
implementation("org.junit.jupiter:junit-jupiter:5.7.2")
|
implementation("org.junit.jupiter:junit-jupiter:${KScienceVersions.junit}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val jsMain by getting
|
val jsMain by getting
|
||||||
|
@ -240,7 +240,7 @@ public open class KScienceProjectPlugin : Plugin<Project> {
|
|||||||
|
|
||||||
//val patchChangelog by tasks.getting
|
//val patchChangelog by tasks.getting
|
||||||
|
|
||||||
val release by tasks.creating {
|
@Suppress("UNUSED_VARIABLE") val release by tasks.creating {
|
||||||
group = RELEASE_GROUP
|
group = RELEASE_GROUP
|
||||||
description = "Publish development or production release based on version suffix"
|
description = "Publish development or production release based on version suffix"
|
||||||
dependsOn(generateReadme)
|
dependsOn(generateReadme)
|
||||||
|
@ -1,16 +1,23 @@
|
|||||||
package ru.mipt.npm.gradle
|
package ru.mipt.npm.gradle
|
||||||
|
|
||||||
import groovy.text.SimpleTemplateEngine
|
import groovy.text.SimpleTemplateEngine
|
||||||
|
import kotlinx.html.TagConsumer
|
||||||
|
import kotlinx.html.div
|
||||||
|
import kotlinx.html.stream.createHTML
|
||||||
import kotlinx.validation.ApiValidationExtension
|
import kotlinx.validation.ApiValidationExtension
|
||||||
import org.gradle.api.Project
|
import org.gradle.api.Project
|
||||||
import org.gradle.kotlin.dsl.*
|
import org.gradle.kotlin.dsl.findByType
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import kotlin.collections.component1
|
||||||
|
import kotlin.collections.component2
|
||||||
|
import kotlin.collections.set
|
||||||
|
|
||||||
public enum class Maturity {
|
public enum class Maturity {
|
||||||
PROTOTYPE,
|
PROTOTYPE,
|
||||||
EXPERIMENTAL,
|
EXPERIMENTAL,
|
||||||
DEVELOPMENT,
|
DEVELOPMENT,
|
||||||
STABLE
|
STABLE,
|
||||||
|
DEPRECATED
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -48,6 +55,20 @@ public class KScienceReadmeExtension(public val project: Project) {
|
|||||||
features += Feature(id, description(), ref, name)
|
features += Feature(id, description(), ref, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public fun featureWithHtml(
|
||||||
|
id: String,
|
||||||
|
ref: String? = null,
|
||||||
|
name: String = id,
|
||||||
|
htmlBuilder: TagConsumer<String>.() -> Unit,
|
||||||
|
) {
|
||||||
|
val text = createHTML().apply {
|
||||||
|
div("readme-feature") {
|
||||||
|
htmlBuilder()
|
||||||
|
}
|
||||||
|
}.finalize()
|
||||||
|
features += Feature(id, text, ref, name)
|
||||||
|
}
|
||||||
|
|
||||||
private val properties: MutableMap<String, () -> Any?> = mutableMapOf(
|
private val properties: MutableMap<String, () -> Any?> = mutableMapOf(
|
||||||
"name" to { project.name },
|
"name" to { project.name },
|
||||||
"group" to { project.group },
|
"group" to { project.group },
|
||||||
@ -82,7 +103,7 @@ public class KScienceReadmeExtension(public val project: Project) {
|
|||||||
/**
|
/**
|
||||||
* Generate a markdown string listing features
|
* Generate a markdown string listing features
|
||||||
*/
|
*/
|
||||||
public fun featuresString(itemPrefix: String = " - ", pathPrefix: String = ""): String = buildString {
|
internal fun featuresString(itemPrefix: String = " - ", pathPrefix: String = ""): String = buildString {
|
||||||
features.forEach {
|
features.forEach {
|
||||||
appendLine("$itemPrefix[${it.name}]($pathPrefix${it.ref ?: "#"}) : ${it.description}")
|
appendLine("$itemPrefix[${it.name}]($pathPrefix${it.ref ?: "#"}) : ${it.description}")
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ public object KScienceVersions {
|
|||||||
public val htmlVersion: String get() = toml.getString("versions.kotlinx-html")!!
|
public val htmlVersion: String get() = toml.getString("versions.kotlinx-html")!!
|
||||||
public val dateTimeVersion: String get() = toml.getString("versions.kotlinx-datetime")!!
|
public val dateTimeVersion: String get() = toml.getString("versions.kotlinx-datetime")!!
|
||||||
public val jsBom: String get() = toml.getString("versions.jsBom")!!
|
public val jsBom: String get() = toml.getString("versions.jsBom")!!
|
||||||
|
internal val junit: String get() = toml.getString("versions.junit")!!
|
||||||
|
|
||||||
public val JVM_TARGET: JavaVersion = JavaVersion.VERSION_11
|
public val JVM_TARGET: JavaVersion = JavaVersion.VERSION_11
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user