[K/JS] Prepare JS Plain Objects plugin to publication

This commit is contained in:
Artem Kobzar
2024-01-17 10:52:58 +00:00
committed by Space Team
parent 561be747c1
commit dfe2d8651e
53 changed files with 479 additions and 393 deletions
@@ -0,0 +1,18 @@
plugins {
id("gradle-plugin-common-configuration")
}
dependencies {
commonApi(platform(project(":kotlin-gradle-plugins-bom")))
}
gradlePlugin {
plugins {
create("js-plain-objects") {
id = "org.jetbrains.kotlin.plugin.js-plain-objects"
displayName = "Kotlin compiler plugin for typed JS-objects library"
description = displayName
implementationClass = "org.jetbrains.kotlinx.jspo.gradle.JsPlainObjectsKotlinGradleSubplugin"
}
}
}
@@ -0,0 +1,43 @@
/*
* Copyright 2010-2020 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlinx.jspo.gradle
import org.gradle.api.provider.Provider
import org.jetbrains.kotlin.gradle.plugin.*
class JsPlainObjectsKotlinGradleSubplugin : KotlinCompilerPluginSupportPlugin {
companion object {
const val JS_PLAIN_OBJECTS_ARTIFACT_NAME = "kotlinx-js-plain-objects-compiler-plugin-embeddable"
}
override fun isApplicable(kotlinCompilation: KotlinCompilation<*>): Boolean =
kotlinCompilation.target.isJs() || kotlinCompilation.target.isWasm()
override fun applyToCompilation(
kotlinCompilation: KotlinCompilation<*>
): Provider<List<SubpluginOption>> =
kotlinCompilation.target.project.provider { emptyList() }
override fun getPluginArtifact(): SubpluginArtifact =
JetBrainsSubpluginArtifact(JS_PLAIN_OBJECTS_ARTIFACT_NAME)
override fun getCompilerPluginId() = "org.jetbrains.kotlinx.js-plain-objects"
private fun KotlinTarget.isJs() = platformType == KotlinPlatformType.js
private fun KotlinTarget.isWasm() = platformType == KotlinPlatformType.wasm
}
@@ -0,0 +1 @@
implementation-class=org.jetbrains.kotlinx.jspo.gradle.JsPlainObjectsKotlinGradleSubplugin