Wizard: move core module UI texts to bundles
This commit is contained in:
-5
@@ -1,5 +0,0 @@
|
|||||||
module.kind.android.module=Android Module
|
|
||||||
module.kind.js.module=JS Module
|
|
||||||
module.kind.module=Module
|
|
||||||
module.kind.mpp.module=MPP Module
|
|
||||||
module.kind.target=Target
|
|
||||||
+2
-1
@@ -11,6 +11,7 @@ module.dependencies.module.dependencies=Module dependencies
|
|||||||
module.dependencies.add.module.dependency=Add module dependency
|
module.dependencies.add.module.dependency=Add module dependency
|
||||||
module.dependencies.remove.module.dependency=Remove module dependency
|
module.dependencies.remove.module.dependency=Remove module dependency
|
||||||
|
|
||||||
|
editor.modules.add=Add {0}
|
||||||
editor.modules.remove.selected.module=Do you want to remove selected {0}
|
editor.modules.remove.selected.module=Do you want to remove selected {0}
|
||||||
editor.modules.remove.selected.submodules=This will also remove all submodules.
|
editor.modules.remove.selected.submodules=This will also remove all submodules.
|
||||||
editor.modules.remove.selected.no.undone=This action cannot be undone.
|
editor.modules.remove.selected.no.undone=This action cannot be undone.
|
||||||
@@ -21,7 +22,7 @@ editor.modules.remove.tooltip=Remove {0}
|
|||||||
|
|
||||||
editor.modules.project=Project
|
editor.modules.project=Project
|
||||||
editor.modules.add.module=Add a module to the project
|
editor.modules.add.module=Add a module to the project
|
||||||
editor.modules.no.modules=No modules created
|
editor.modules.no.modules=No modules created
|
||||||
|
|
||||||
module.settings.name=Name
|
module.settings.name=Name
|
||||||
module.settings.name.same.as.project=[The same as the project name]
|
module.settings.name.same.as.project=[The same as the project name]
|
||||||
|
|||||||
+1
-2
@@ -5,13 +5,12 @@ import com.intellij.openapi.ui.popup.ListPopup
|
|||||||
import com.intellij.openapi.ui.popup.PopupStep
|
import com.intellij.openapi.ui.popup.PopupStep
|
||||||
import com.intellij.openapi.ui.popup.util.BaseListPopupStep
|
import com.intellij.openapi.ui.popup.util.BaseListPopupStep
|
||||||
import com.intellij.ui.popup.PopupFactoryImpl
|
import com.intellij.ui.popup.PopupFactoryImpl
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardBundle
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.fullTextHtml
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.fullTextHtml
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.icon
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.icon
|
||||||
import javax.swing.Icon
|
import javax.swing.Icon
|
||||||
|
|||||||
+5
-2
@@ -4,6 +4,7 @@ import com.intellij.icons.AllIcons
|
|||||||
import com.intellij.openapi.actionSystem.ActionToolbarPosition
|
import com.intellij.openapi.actionSystem.ActionToolbarPosition
|
||||||
import com.intellij.openapi.ui.Messages
|
import com.intellij.openapi.ui.Messages
|
||||||
import com.intellij.ui.ToolbarDecorator
|
import com.intellij.ui.ToolbarDecorator
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.IOSSinglePlatformModuleConfigurator
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.IOSSinglePlatformModuleConfigurator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsSingleplatformModuleConfigurator
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsSingleplatformModuleConfigurator
|
||||||
@@ -12,7 +13,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardBundle
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.createPanelWithPopupHandler
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.createPanelWithPopupHandler
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
@@ -58,7 +58,7 @@ class ModulesEditorToolbarDecorator(
|
|||||||
null -> true
|
null -> true
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
text = "Add" + " " + when (tree.selectedSettingItem?.safeAs<Module>()?.kind) {
|
val moduleKindTextToAdd = when (tree.selectedSettingItem?.safeAs<Module>()?.kind) {
|
||||||
ModuleKind.multiplatform -> KotlinNewProjectWizardBundle.message("module.kind.target")
|
ModuleKind.multiplatform -> KotlinNewProjectWizardBundle.message("module.kind.target")
|
||||||
ModuleKind.singleplatformJvm -> KotlinNewProjectWizardBundle.message("module.kind.module")
|
ModuleKind.singleplatformJvm -> KotlinNewProjectWizardBundle.message("module.kind.module")
|
||||||
ModuleKind.singleplatformJs -> KotlinNewProjectWizardBundle.message("module.kind.js.module")
|
ModuleKind.singleplatformJs -> KotlinNewProjectWizardBundle.message("module.kind.js.module")
|
||||||
@@ -66,9 +66,12 @@ class ModulesEditorToolbarDecorator(
|
|||||||
ModuleKind.target -> ""
|
ModuleKind.target -> ""
|
||||||
null -> ""
|
null -> ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
text = KotlinNewProjectWizardUIBundle.message("editor.modules.add", moduleKindTextToAdd)
|
||||||
}
|
}
|
||||||
event.presentation.isEnabled
|
event.presentation.isEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
setRemoveAction {
|
setRemoveAction {
|
||||||
val moduleKindText = selectedModuleKindText ?: KotlinNewProjectWizardBundle.message("module.kind.module")
|
val moduleKindText = selectedModuleKindText ?: KotlinNewProjectWizardBundle.message("module.kind.module")
|
||||||
if (Messages.showOkCancelDialog(
|
if (Messages.showOkCancelDialog(
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ dependencies {
|
|||||||
compileOnly(project(":kotlin-reflect-api"))
|
compileOnly(project(":kotlin-reflect-api"))
|
||||||
|
|
||||||
//needed only for message bundles
|
//needed only for message bundles
|
||||||
implementation(intellijCoreDep())
|
implementation(intellijDep()) { includeJars("util") }
|
||||||
|
|
||||||
testImplementation(project(":kotlin-test:kotlin-test-junit"))
|
testImplementation(project(":kotlin-test:kotlin-test-junit"))
|
||||||
testImplementation(commonDep("junit:junit"))
|
testImplementation(commonDep("junit:junit"))
|
||||||
|
|||||||
+148
@@ -0,0 +1,148 @@
|
|||||||
|
buildsystem.type.gradle.groovy=Gradle Groovy
|
||||||
|
buildsystem.type.gradle.kotlin=Gradle Kotlin
|
||||||
|
buildsystem.type.intellij=IntelliJ
|
||||||
|
buildsystem.type.maven=Maven
|
||||||
|
|
||||||
|
error.template.not.found=Template with an id {0} is not found
|
||||||
|
error.required.settings.are.not.present=The following required settings is not present
|
||||||
|
error.configurator.not.found=Module type {0} was not found
|
||||||
|
error.invalid.module.dependency=Invalid module dependency from module {0} to {1}
|
||||||
|
|
||||||
|
module.configuration.group.android.native=Android Native
|
||||||
|
module.configuration.group.ios=iOS
|
||||||
|
module.configuration.group.linux=Linux
|
||||||
|
module.configuration.group.macos=macOS
|
||||||
|
module.configuration.group.windows.mingw=Windows (MinGW)
|
||||||
|
|
||||||
|
module.kind.android.module=Android Module
|
||||||
|
module.kind.ios.module=iOS Module
|
||||||
|
module.kind.js.module=JS Module
|
||||||
|
module.kind.module=Module
|
||||||
|
module.kind.mpp.module=MPP Module
|
||||||
|
module.kind.target=Target
|
||||||
|
|
||||||
|
plugin.buildsystem.setting.type=Build System
|
||||||
|
plugin.buildsystem.setting.type.error.wrong.project.kind={0} cannot be generated using {1}
|
||||||
|
|
||||||
|
plugin.kotlin.downloading.kotlin.versions=Downloading list of Kotlin versions
|
||||||
|
plugin.kotlin.setting.modules=Modules
|
||||||
|
plugin.kotlin.setting.modules.error.duplicated.modules=There are {0} modules with name {1}
|
||||||
|
plugin.kotlin.setting.modules.error.duplicated.targets=There are {0} targets with name {1}
|
||||||
|
|
||||||
|
plugin.kotlin.setting.project.kind=Project Kind
|
||||||
|
|
||||||
|
project.kind.android=Android project
|
||||||
|
project.kind.kotlin.js=Kotlin/JS project
|
||||||
|
project.kind.multiplatform=Multiplatform project
|
||||||
|
project.kind.singleplatform=Singleplatform project
|
||||||
|
|
||||||
|
project=Project
|
||||||
|
|
||||||
|
plugin.structure.setting.location=Location
|
||||||
|
plugin.structure.setting.name=Name
|
||||||
|
plugin.structure.setting.group.id=Group ID
|
||||||
|
plugin.structure.setting.artifact.id=Artifact ID
|
||||||
|
plugin.structure.setting.version=Version
|
||||||
|
|
||||||
|
plugin.android.setting.sdk=Android SDK
|
||||||
|
|
||||||
|
|
||||||
|
validation.should.not.be.blank={0} should not be blank
|
||||||
|
validation.identifier={0} should consist only of letters, digits{1}
|
||||||
|
validation.identifier.additional.symbols=", and symbols: {0}
|
||||||
|
validation.file.should.exists=File for {0} should exists
|
||||||
|
|
||||||
|
version.error.bad.format=Bad version format for setting {0}
|
||||||
|
parse.error.no.value.for.key=No value was found for a key {0}
|
||||||
|
|
||||||
|
module.type.jvm=Kotlin/JVM
|
||||||
|
module.type.js=Kotlin/JS
|
||||||
|
module.type.common=Common
|
||||||
|
module.type.android=Android
|
||||||
|
module.type.native=Kotlin/Native
|
||||||
|
|
||||||
|
module.type.ios=iOS
|
||||||
|
|
||||||
|
module.name=Module name
|
||||||
|
module.name.with.name=Module name {0}
|
||||||
|
|
||||||
|
module.configurator.js=JS for Browser
|
||||||
|
|
||||||
|
module.configurator.android=Android
|
||||||
|
module.configurator.android.setting.android.plugin=Android Plugin
|
||||||
|
module.configurator.android.setting.android.plugin.application=Android Application
|
||||||
|
module.configurator.android.setting.android.plugin.library=Android
|
||||||
|
|
||||||
|
module.configurator.common=Common
|
||||||
|
|
||||||
|
module.configurator.jvm=JVM
|
||||||
|
module.configurator.jvm.setting.target.jvm.version=Target JVM Version
|
||||||
|
module.configurator.jvm.setting.java.support=Java language support
|
||||||
|
|
||||||
|
module.configurator.mpp=Multiplatform
|
||||||
|
module.configurator.ios=IOS
|
||||||
|
module.configurator.ios.requires.xcode=Requires Xcode
|
||||||
|
|
||||||
|
module.configurator.js.browser=Browser
|
||||||
|
module.configurator.js.node=Node.js
|
||||||
|
|
||||||
|
module.configurator.tests.setting.framework=Test Framework
|
||||||
|
module.configurator.tests.setting.framework.junit4=JUnit 4
|
||||||
|
module.configurator.tests.setting.framework.junit5=JUnit 5
|
||||||
|
module.configurator.tests.setting.framework.test.ng=Test NG
|
||||||
|
module.configurator.tests.setting.framework.js=JavaScript
|
||||||
|
module.configurator.tests.setting.framework.common=common
|
||||||
|
module.configurator.native.for.current.system=Your system
|
||||||
|
|
||||||
|
project.template.empty.singleplatform.title=Backend Application
|
||||||
|
project.template.empty.singleplatform.description=Create a backend application with Kotlin/JVM.
|
||||||
|
|
||||||
|
project.template.empty.mpp.title=Multiplatform Application
|
||||||
|
project.template.empty.mpp.description=Create applications for different platforms that support sharing common code.
|
||||||
|
|
||||||
|
project.template.empty.jvm.console.title=Console Application
|
||||||
|
project.template.empty.jvm.console.description=Create a console application with Kotlin/JVM. Use it for prototyping or testing purposes.
|
||||||
|
|
||||||
|
project.template.mpp.lib.title=Multiplatform Library
|
||||||
|
project.template.mpp.lib.description=Create a library for sharing common code among different platforms.
|
||||||
|
|
||||||
|
project.template.full.stack.title=Full-Stack Web Application
|
||||||
|
project.template.full.stack.description=Create a fully-functional web application using Kotlin/JS for the frontend and Kotlin/JVM for the backend.
|
||||||
|
|
||||||
|
project.template.native.console.title=Native Application
|
||||||
|
project.template.native.console.description=Create an application with Kotlin/Native that works as a standalone application under a specific platform.
|
||||||
|
|
||||||
|
project.template.frontend.title=Frontend Application
|
||||||
|
project.template.frontend.description=Create a frontend application with Kotlin/JS if you already have a backend.
|
||||||
|
|
||||||
|
project.template.mpp.mobile.title=Multiplatform Mobile Application
|
||||||
|
project.template.mpp.mobile.description=Create mobile applications for iOS and Android with Kotlin Multiplatform Mobile, which supports sharing common code between platforms.
|
||||||
|
|
||||||
|
project.template.mpp.mobile.lib.title=Multiplatform Mobile Library
|
||||||
|
project.template.mpp.mobile.lib.description=Create a library that supports sharing code between iOS and Android.
|
||||||
|
|
||||||
|
|
||||||
|
module.template.console.jvm.title=Console Application
|
||||||
|
module.template.console.jvm.description=Simple "Hello World!" Kotlin/JVM application that works in the console
|
||||||
|
|
||||||
|
module.template.ktor.server.title=Ktor Server
|
||||||
|
module.template.ktor.server.description=Configurable Ktor web server for building web applications
|
||||||
|
module.template.ktor.server.setting.engine=Ktor Server Engine
|
||||||
|
module.template.ktor.server.setting.engine.netty=Netty
|
||||||
|
module.template.ktor.server.setting.engine.tomcat=Tomcat
|
||||||
|
module.template.ktor.server.setting.engine.jetty=Jetty
|
||||||
|
|
||||||
|
module.template.native.console.title=Native Application
|
||||||
|
module.template.native.console.description=Simple Kotlin/Native application for your operating system
|
||||||
|
|
||||||
|
module.template.js.simple.title=Frontend Application
|
||||||
|
module.template.js.simple.description=Configurable Kotlin/JS frontend application
|
||||||
|
module.template.js.simple.run.configuration.dev=BrowserDevelopmentRun in continuous mode
|
||||||
|
module.template.js.simple.run.configuration.prod=BrowserProductionRun in continuous mode
|
||||||
|
module.template.js.simple.setting.rendering.engine=Rendering engine
|
||||||
|
module.template.js.simple.setting.rendering.kotlinx.html=Use statically typed Kotlinx.html DSL
|
||||||
|
module.template.js.simple.setting.rendering.react=Use Kotlin-wrapped React library
|
||||||
|
module.template.js.simple.setting.rendering.react.styled=Use Kotlin-wrapped React framework together with Styled Components
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
+6
-2
@@ -5,12 +5,16 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard
|
package org.jetbrains.kotlin.tools.projectWizard
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
|
||||||
interface WizardRunConfiguration {
|
interface WizardRunConfiguration {
|
||||||
|
@get:Nls
|
||||||
val configurationName: String
|
val configurationName: String
|
||||||
}
|
}
|
||||||
|
|
||||||
data class WizardGradleRunConfiguration(
|
data class WizardGradleRunConfiguration(
|
||||||
override val configurationName: String,
|
@Nls override val configurationName: String,
|
||||||
val taskName: String,
|
@NonNls val taskName: String,
|
||||||
val parameters: List<String>
|
val parameters: List<String>
|
||||||
) : WizardRunConfiguration
|
) : WizardRunConfiguration
|
||||||
+3
-3
@@ -3,16 +3,16 @@
|
|||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.wizard
|
package org.jetbrains.kotlin.tools.projectWizard
|
||||||
|
|
||||||
import org.jetbrains.annotations.NonNls
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.annotations.PropertyKey
|
import org.jetbrains.annotations.PropertyKey
|
||||||
import org.jetbrains.kotlin.util.AbstractKotlinBundle
|
import com.intellij.AbstractBundle
|
||||||
|
|
||||||
@NonNls
|
@NonNls
|
||||||
private const val BUNDLE = "messages.KotlinNewProjectWizardBundle"
|
private const val BUNDLE = "messages.KotlinNewProjectWizardBundle"
|
||||||
|
|
||||||
object KotlinNewProjectWizardBundle : AbstractKotlinBundle(BUNDLE) {
|
object KotlinNewProjectWizardBundle : AbstractBundle(BUNDLE) {
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any): String = getMessage(key, *params)
|
fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any): String = getMessage(key, *params)
|
||||||
}
|
}
|
||||||
+3
@@ -1,6 +1,9 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
|
||||||
interface EntitiesOwnerDescriptor {
|
interface EntitiesOwnerDescriptor {
|
||||||
|
@get:NonNls
|
||||||
val id: String
|
val id: String
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
-14
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||||
@@ -22,7 +23,7 @@ fun ParsingState.withSettings(newSettings: List<Pair<SettingReference<*, *>, Any
|
|||||||
typealias ParsingContext = ComputeContext<ParsingState>
|
typealias ParsingContext = ComputeContext<ParsingState>
|
||||||
|
|
||||||
abstract class Parser<out T : Any> {
|
abstract class Parser<out T : Any> {
|
||||||
abstract fun ParsingContext.parse(value: Any?, path: String): TaskResult<T>
|
abstract fun ParsingContext.parse(value: Any?, @NonNls path: String): TaskResult<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <T : Any> alwaysFailingParser(errorMessage: String) = object : Parser<T>() {
|
fun <T : Any> alwaysFailingParser(errorMessage: String) = object : Parser<T>() {
|
||||||
@@ -33,7 +34,7 @@ fun <T : Any> alwaysFailingParser(errorMessage: String) = object : Parser<T>() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fun <T : Any> Parser<T>.parse(context: ParsingContext, value: Any?, path: String) =
|
fun <T : Any> Parser<T>.parse(context: ParsingContext, value: Any?, @NonNls path: String) =
|
||||||
with(context) { parse(value, path) }
|
with(context) { parse(value, path) }
|
||||||
|
|
||||||
inline fun <reified E> enumParser(): Parser<E> where E : Enum<E>, E : DisplayableSettingItem = object : Parser<E>() {
|
inline fun <reified E> enumParser(): Parser<E> where E : Enum<E>, E : DisplayableSettingItem = object : Parser<E>() {
|
||||||
@@ -90,31 +91,31 @@ inline fun <reified T : Any> valueParser() = valueParser { value, path ->
|
|||||||
value.parseAs(path, T::class).get()
|
value.parseAs(path, T::class).get()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Any?.classMismatchError(path: String, expected: KClass<*>): ParseError {
|
fun Any?.classMismatchError(@NonNls path: String, expected: KClass<*>): ParseError {
|
||||||
val classpath = this?.let { it::class.simpleName } ?: "null"
|
val classpath = this?.let { it::class.simpleName } ?: "null"
|
||||||
return ParseError("Expected ${expected.simpleName!!} for `$path` but $classpath was found")
|
return ParseError("Expected ${expected.simpleName!!} for `$path` but $classpath was found")
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified V : Any> Any?.parseAs(path: String) =
|
inline fun <reified V : Any> Any?.parseAs(@NonNls path: String) =
|
||||||
safeAs<V>().toResult { classMismatchError(path, V::class) }
|
safeAs<V>().toResult { classMismatchError(path, V::class) }
|
||||||
|
|
||||||
|
|
||||||
inline fun <reified T : Any> Any?.parseAs(path: String, klass: KClass<T>): TaskResult<T> =
|
inline fun <reified T : Any> Any?.parseAs(@NonNls path: String, klass: KClass<T>): TaskResult<T> =
|
||||||
this?.takeIf { it::class.isSubclassOf(klass) }?.safeAs<T>()
|
this?.takeIf { it::class.isSubclassOf(klass) }?.safeAs<T>()
|
||||||
.toResult { classMismatchError(path, klass) }
|
.toResult { classMismatchError(path, klass) }
|
||||||
|
|
||||||
|
|
||||||
inline fun <reified V : Any> Map<*, *>.parseValue(path: String, name: String) =
|
inline fun <reified V : Any> Map<*, *>.parseValue(@NonNls path: String, @NonNls name: String) =
|
||||||
get(name).parseAs<V>("$path.$name")
|
get(name).parseAs<V>("$path.$name")
|
||||||
|
|
||||||
inline fun <reified V : Any> Map<*, *>.parseValue(path: String, name: String, defaultValue: (() -> V)) =
|
inline fun <reified V : Any> Map<*, *>.parseValue(@NonNls path: String, @NonNls name: String, defaultValue: (() -> V)) =
|
||||||
get(name)?.parseAs<V>("$path.$name") ?: defaultValue().asSuccess()
|
get(name)?.parseAs<V>("$path.$name") ?: defaultValue().asSuccess()
|
||||||
|
|
||||||
|
|
||||||
inline fun <reified V : Any, R : Any> Map<*, *>.parseValue(
|
inline fun <reified V : Any, R : Any> Map<*, *>.parseValue(
|
||||||
context: ParsingContext,
|
context: ParsingContext,
|
||||||
path: String,
|
@NonNls path: String,
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
crossinline parser: suspend ParsingContext.(V) -> TaskResult<R>
|
crossinline parser: suspend ParsingContext.(V) -> TaskResult<R>
|
||||||
) = with(context) {
|
) = with(context) {
|
||||||
computeM {
|
computeM {
|
||||||
@@ -124,16 +125,16 @@ inline fun <reified V : Any, R : Any> Map<*, *>.parseValue(
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T : Any> Map<*, *>.parseValue(
|
inline fun <reified T : Any> Map<*, *>.parseValue(
|
||||||
path: String,
|
@NonNls path: String,
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
klass: KClass<T>
|
klass: KClass<T>
|
||||||
) = get(path).parseAs("$path.$name", klass)
|
) = get(path).parseAs("$path.$name", klass)
|
||||||
|
|
||||||
|
|
||||||
fun <R : Any> Map<*, *>.parseValue(
|
fun <R : Any> Map<*, *>.parseValue(
|
||||||
context: ParsingContext,
|
context: ParsingContext,
|
||||||
path: String,
|
@NonNls path: String,
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
parser: Parser<R>,
|
parser: Parser<R>,
|
||||||
defaultValue: (() -> R)? = null
|
defaultValue: (() -> R)? = null
|
||||||
) = with(context) {
|
) = with(context) {
|
||||||
@@ -147,7 +148,7 @@ fun <R : Any> Map<*, *>.parseValue(
|
|||||||
|
|
||||||
inline fun <reified V : Any, R : Any> Any?.parseAs(
|
inline fun <reified V : Any, R : Any> Any?.parseAs(
|
||||||
context: ParsingContext,
|
context: ParsingContext,
|
||||||
path: String,
|
@NonNls path: String,
|
||||||
crossinline parser: suspend ParsingContext.(V) -> TaskResult<R>
|
crossinline parser: suspend ParsingContext.(V) -> TaskResult<R>
|
||||||
) = with(context) {
|
) = with(context) {
|
||||||
computeM {
|
computeM {
|
||||||
|
|||||||
+9
-5
@@ -1,5 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Failure
|
import org.jetbrains.kotlin.tools.projectWizard.core.Failure
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||||
@@ -25,7 +27,9 @@ fun <V> inValidatorContext(validator: Reader.(V) -> SettingValidator<V>) =
|
|||||||
|
|
||||||
object StringValidators {
|
object StringValidators {
|
||||||
fun shouldNotBeBlank(name: String) = settingValidator { value: String ->
|
fun shouldNotBeBlank(name: String) = settingValidator { value: String ->
|
||||||
if (value.isBlank()) ValidationResult.ValidationError("${name.capitalize()} should not be blank ")
|
if (value.isBlank()) ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message("validation.should.not.be.blank", name.capitalize())
|
||||||
|
)
|
||||||
else ValidationResult.OK
|
else ValidationResult.OK
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,10 +38,10 @@ object StringValidators {
|
|||||||
val allowedExtraSymbolsStringified = allowedExtraSymbols
|
val allowedExtraSymbolsStringified = allowedExtraSymbols
|
||||||
.takeIf { it.isNotEmpty() }
|
.takeIf { it.isNotEmpty() }
|
||||||
?.joinToString(separator = ", ") { char -> "'$char'" }
|
?.joinToString(separator = ", ") { char -> "'$char'" }
|
||||||
?.let { chars -> ", and symbols: $chars" }
|
?.let { chars -> KotlinNewProjectWizardBundle.message("validation.identifier.additional.symbols", chars) }
|
||||||
.orEmpty()
|
.orEmpty()
|
||||||
ValidationResult.ValidationError(
|
ValidationResult.ValidationError(
|
||||||
"${name.capitalize()} should consist only of letters, digits$allowedExtraSymbolsStringified"
|
KotlinNewProjectWizardBundle.message("validation.identifier", name.capitalize(), allowedExtraSymbolsStringified)
|
||||||
)
|
)
|
||||||
} else ValidationResult.OK
|
} else ValidationResult.OK
|
||||||
}
|
}
|
||||||
@@ -54,7 +58,7 @@ sealed class ValidationResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class ValidationError(val messages: List<String>, val target: Any? = null) : ValidationResult() {
|
data class ValidationError(val messages: List<String>, val target: Any? = null) : ValidationResult() {
|
||||||
constructor(message: String, target: Any? = null) : this(listOf(message), target)
|
constructor(@Nls message: String, target: Any? = null) : this(listOf(message), target)
|
||||||
|
|
||||||
override val isOk = false
|
override val isOk = false
|
||||||
}
|
}
|
||||||
@@ -66,7 +70,7 @@ sealed class ValidationResult {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun create(condition: Boolean, message: String) =
|
fun create(condition: Boolean, @Nls message: String) =
|
||||||
if (condition) OK else ValidationError(message)
|
if (condition) OK else ValidationError(message)
|
||||||
|
|
||||||
inline fun create(condition: Boolean, message: () -> String) =
|
inline fun create(condition: Boolean, message: () -> String) =
|
||||||
|
|||||||
+2
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import kotlin.reflect.KProperty1
|
import kotlin.reflect.KProperty1
|
||||||
@@ -47,6 +48,7 @@ data class PipelineTask(
|
|||||||
|
|
||||||
var isAvailable: Checker = ALWAYS_AVAILABLE_CHECKER
|
var isAvailable: Checker = ALWAYS_AVAILABLE_CHECKER
|
||||||
|
|
||||||
|
@Nls
|
||||||
var title: String? = null
|
var title: String? = null
|
||||||
|
|
||||||
fun withAction(action: Writer.() -> TaskResult<Unit>) {
|
fun withAction(action: Writer.() -> TaskResult<Unit>) {
|
||||||
|
|||||||
+2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
@@ -18,6 +19,7 @@ import kotlin.reflect.KProperty1
|
|||||||
|
|
||||||
|
|
||||||
sealed class SettingReference<out V : Any, out T : SettingType<V>> {
|
sealed class SettingReference<out V : Any, out T : SettingType<V>> {
|
||||||
|
@get:NonNls
|
||||||
abstract val path: String
|
abstract val path: String
|
||||||
abstract val type: KClass<out T>
|
abstract val type: KClass<out T>
|
||||||
|
|
||||||
|
|||||||
+10
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||||
@@ -198,7 +199,12 @@ object PathSettingType : SettingType<Path>() {
|
|||||||
init {
|
init {
|
||||||
validate { pathValue ->
|
validate { pathValue ->
|
||||||
if (pathValue.toString().isBlank())
|
if (pathValue.toString().isBlank())
|
||||||
ValidationResult.ValidationError("${title.capitalize()} should not be blank")
|
ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"validation.should.not.be.blank",
|
||||||
|
title.capitalize()
|
||||||
|
)
|
||||||
|
)
|
||||||
else ValidationResult.OK
|
else ValidationResult.OK
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -206,7 +212,9 @@ object PathSettingType : SettingType<Path>() {
|
|||||||
fun shouldExists() = validate { pathValue ->
|
fun shouldExists() = validate { pathValue ->
|
||||||
if (isUnitTestMode) return@validate ValidationResult.OK
|
if (isUnitTestMode) return@validate ValidationResult.OK
|
||||||
if (!Files.exists(pathValue))
|
if (!Files.exists(pathValue))
|
||||||
ValidationResult.ValidationError("File for ${title.capitalize()} should exists")
|
ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message("validation.file.should.exists", title.capitalize())
|
||||||
|
)
|
||||||
else ValidationResult.OK
|
else ValidationResult.OK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
|
|
||||||
fun ParsingContext.parseSettingsMap(
|
fun ParsingContext.parseSettingsMap(
|
||||||
@@ -18,7 +19,7 @@ fun ParsingContext.parseSettingsMap(
|
|||||||
setting.type.parse(this, settingValue, setting.path).map { listOf(settingReference to it) }
|
setting.type.parse(this, settingValue, setting.path).map { listOf(settingReference to it) }
|
||||||
}
|
}
|
||||||
setting.isRequired -> {
|
setting.isRequired -> {
|
||||||
fail(ParseError("No value was found for a key `$path.${setting.path}`"))
|
fail(ParseError(KotlinNewProjectWizardBundle.message("parse.error.no.value.for.key", "$path.${setting.path}")))
|
||||||
}
|
}
|
||||||
else -> success(emptyList())
|
else -> success(emptyList())
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-9
@@ -1,9 +1,13 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||||
|
|
||||||
abstract class Error {
|
abstract class Error {
|
||||||
|
@get:Nls
|
||||||
abstract val message: String
|
abstract val message: String
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -24,31 +28,32 @@ data class IOError(override val exception: IOException) : ExceptionError()
|
|||||||
|
|
||||||
data class ExceptionErrorImpl(override val exception: Exception) : ExceptionError()
|
data class ExceptionErrorImpl(override val exception: Exception) : ExceptionError()
|
||||||
|
|
||||||
data class ParseError(override val message: String) : Error()
|
data class ParseError(@Nls override val message: String) : Error()
|
||||||
|
|
||||||
data class TemplateNotFoundError(val id: String) : Error() {
|
data class TemplateNotFoundError(val id: String) : Error() {
|
||||||
override val message: String
|
override val message: String
|
||||||
get() = "Template with an id `$id` is not found"
|
get() = KotlinNewProjectWizardBundle.message("error.template.not.found", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class RequiredSettingsIsNotPresentError(val settingNames: List<String>) : Error() {
|
data class RequiredSettingsIsNotPresentError(val settingNames: List<String>) : Error() {
|
||||||
override val message: String
|
override val message: String
|
||||||
get() = buildString {
|
get() = buildString {
|
||||||
append("The following required settings is not present: \n")
|
append(KotlinNewProjectWizardBundle.message("error.required.settings.are.not.present") + '\n')
|
||||||
settingNames.joinTo(this, "\n") { " $it" }
|
settingNames.joinTo(this, "\n") { " $it" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class CircularTaskDependencyError(val taskName: String) : Error() {
|
data class CircularTaskDependencyError(@NonNls val taskName: String) : Error() {
|
||||||
|
@get:NonNls
|
||||||
override val message: String
|
override val message: String
|
||||||
get() = "$taskName task has circular dependencies"
|
get() = "$taskName task has circular dependencies"
|
||||||
}
|
}
|
||||||
|
|
||||||
data class BadSettingValueError(override val message: String) : Error()
|
data class BadSettingValueError(@Nls override val message: String) : Error()
|
||||||
|
|
||||||
data class ConfiguratorNotFoundError(val id: String) : Error() {
|
data class ConfiguratorNotFoundError(val id: String) : Error() {
|
||||||
override val message: String
|
override val message: String
|
||||||
get() = "Module type `$id` was not found"
|
get() = KotlinNewProjectWizardBundle.message("error.configurator.not.found", id)
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ValidationError(val validationMessage: String) : Error() {
|
data class ValidationError(val validationMessage: String) : Error() {
|
||||||
@@ -56,9 +61,9 @@ data class ValidationError(val validationMessage: String) : Error() {
|
|||||||
get() = validationMessage.capitalize()
|
get() = validationMessage.capitalize()
|
||||||
}
|
}
|
||||||
|
|
||||||
data class ProjectImportingError(override val message: String) : Error()
|
data class ProjectImportingError(@Nls override val message: String) : Error()
|
||||||
|
|
||||||
data class InvalidModuleDependencyError(val from: Module, val to: Module, val reason: String? = null) : Error() {
|
data class InvalidModuleDependencyError(val from: Module, val to: Module, @Nls val reason: String? = null) : Error() {
|
||||||
override val message: String
|
override val message: String
|
||||||
get() = "Invalid module dependency from module ${from.name} to ${to.name}" + reason?.let { ": $it" }
|
get() = KotlinNewProjectWizardBundle.message("error.invalid.module.dependency", from.name, to.name) + reason?.let { ": $it" }
|
||||||
}
|
}
|
||||||
+5
-4
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
@@ -26,19 +27,19 @@ inline infix fun <A : Any> ((A) -> A?).andThenNullable(crossinline then: (A) ->
|
|||||||
@Suppress("NOTHING_TO_INLINE")
|
@Suppress("NOTHING_TO_INLINE")
|
||||||
inline fun <T> idFunction(): (T) -> T = { it }
|
inline fun <T> idFunction(): (T) -> T = { it }
|
||||||
|
|
||||||
operator fun Path.div(other: String): Path =
|
operator fun Path.div(@NonNls other: String): Path =
|
||||||
resolve(other)
|
resolve(other)
|
||||||
|
|
||||||
operator fun Path.div(other: Path): Path =
|
operator fun Path.div(other: Path): Path =
|
||||||
resolve(other.toString())
|
resolve(other.toString())
|
||||||
|
|
||||||
operator fun String.div(other: Path): Path =
|
operator fun @receiver:NonNls String.div(other: Path): Path =
|
||||||
Paths.get(this).resolve(other)
|
Paths.get(this).resolve(other)
|
||||||
|
|
||||||
operator fun String.div(other: String): Path =
|
operator fun @receiver:NonNls String.div(@NonNls other: String): Path =
|
||||||
Paths.get(this).resolve(other)
|
Paths.get(this).resolve(other)
|
||||||
|
|
||||||
fun String.asPath(): Path = Paths.get(this)
|
fun @receiver:NonNls String.asPath(): Path = Paths.get(this)
|
||||||
|
|
||||||
fun <T : Any> safe(operation: () -> T): TaskResult<T> =
|
fun <T : Any> safe(operation: () -> T): TaskResult<T> =
|
||||||
try {
|
try {
|
||||||
|
|||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.ignore
|
import org.jetbrains.kotlin.tools.projectWizard.core.ignore
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
||||||
@@ -30,7 +31,7 @@ data class ApplicationPluginIR(val mainClass: String) : DefaultBuildSystemPlugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class GradleOnlyPluginByNameIR(val pluginId: String) : BuildSystemPluginIR, GradleIR {
|
data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemPluginIR, GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
call("id") { +pluginId.quotified }
|
call("id") { +pluginId.quotified }
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-11
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR
|
||||||
@@ -22,7 +23,7 @@ data class RawGradleIR(
|
|||||||
override fun GradlePrinter.renderGradle() = renderer()
|
override fun GradlePrinter.renderGradle() = renderer()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun rawIR(ir: String) = RawGradleIR { +ir }
|
fun rawIR(@NonNls ir: String) = RawGradleIR { +ir }
|
||||||
fun rawIR(ir: GradlePrinter.() -> String) = RawGradleIR { +ir() }
|
fun rawIR(ir: GradlePrinter.() -> String) = RawGradleIR { +ir() }
|
||||||
|
|
||||||
fun MutableList<BuildSystemIR>.addRawIR(ir: GradlePrinter.() -> String) {
|
fun MutableList<BuildSystemIR>.addRawIR(ir: GradlePrinter.() -> String) {
|
||||||
@@ -30,7 +31,7 @@ fun MutableList<BuildSystemIR>.addRawIR(ir: GradlePrinter.() -> String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class CreateGradleValueIR(val name: String, val body: GradleIR) : GradleIR {
|
class CreateGradleValueIR(@NonNls val name: String, val body: GradleIR) : GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
when (dsl) {
|
when (dsl) {
|
||||||
GradlePrinter.GradleDsl.KOTLIN -> {
|
GradlePrinter.GradleDsl.KOTLIN -> {
|
||||||
@@ -51,7 +52,7 @@ class CreateGradleValueIR(val name: String, val body: GradleIR) : GradleIR {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class GradleCallIr(
|
data class GradleCallIr(
|
||||||
val name: String,
|
@NonNls val name: String,
|
||||||
val parameters: List<BuildSystemIR> = emptyList(),
|
val parameters: List<BuildSystemIR> = emptyList(),
|
||||||
val isConstructorCall: Boolean = false,
|
val isConstructorCall: Boolean = false,
|
||||||
) : GradleIR {
|
) : GradleIR {
|
||||||
@@ -70,7 +71,7 @@ data class GradleCallIr(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class GradleNewInstanceCall(
|
data class GradleNewInstanceCall(
|
||||||
val name: String,
|
@NonNls val name: String,
|
||||||
val parameters: List<BuildSystemIR> = emptyList()
|
val parameters: List<BuildSystemIR> = emptyList()
|
||||||
) : GradleIR {
|
) : GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
@@ -85,7 +86,7 @@ data class GradleNewInstanceCall(
|
|||||||
|
|
||||||
|
|
||||||
data class GradleSectionIR(
|
data class GradleSectionIR(
|
||||||
val name: String,
|
@NonNls val name: String,
|
||||||
val body: BodyIR
|
val body: BodyIR
|
||||||
) : GradleIR, FreeIR {
|
) : GradleIR, FreeIR {
|
||||||
constructor(name: String, bodyBuilder: MutableList<BuildSystemIR>.() -> Unit) : this(
|
constructor(name: String, bodyBuilder: MutableList<BuildSystemIR>.() -> Unit) : this(
|
||||||
@@ -101,7 +102,7 @@ data class GradleSectionIR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class GradleAssignmentIR(
|
data class GradleAssignmentIR(
|
||||||
val target: String,
|
@NonNls val target: String,
|
||||||
val assignee: BuildSystemIR
|
val assignee: BuildSystemIR
|
||||||
) : GradleIR, FreeIR {
|
) : GradleIR, FreeIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
@@ -111,7 +112,7 @@ data class GradleAssignmentIR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class GradleStringConstIR(
|
data class GradleStringConstIR(
|
||||||
val text: String
|
@NonNls val text: String
|
||||||
) : GradleIR {
|
) : GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
+text.quotified
|
+text.quotified
|
||||||
@@ -119,9 +120,9 @@ data class GradleStringConstIR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class CompilationAccessIr(
|
data class CompilationAccessIr(
|
||||||
val targetName: String,
|
@NonNls val targetName: String,
|
||||||
val compilationName: String,
|
@NonNls val compilationName: String,
|
||||||
val property: String?
|
@NonNls val property: String?
|
||||||
) : GradleIR {
|
) : GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
when (dsl) {
|
when (dsl) {
|
||||||
@@ -132,7 +133,7 @@ data class CompilationAccessIr(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
data class GradleDynamicPropertyAccessIR(val qualifier: BuildSystemIR, val propertyName: String) : GradleIR {
|
data class GradleDynamicPropertyAccessIR(val qualifier: BuildSystemIR, @NonNls val propertyName: String) : GradleIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
qualifier.render(this)
|
qualifier.render(this)
|
||||||
when (dsl) {
|
when (dsl) {
|
||||||
|
|||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
||||||
@@ -26,7 +27,7 @@ data class GradleByNameTaskAccessIR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class GradleByClassTasksAccessIR(
|
data class GradleByClassTasksAccessIR(
|
||||||
val taskClass: String
|
@NonNls val taskClass: String
|
||||||
) : GradleTaskAccessIR {
|
) : GradleTaskAccessIR {
|
||||||
override fun GradlePrinter.renderGradle() {
|
override fun GradlePrinter.renderGradle() {
|
||||||
when (dsl) {
|
when (dsl) {
|
||||||
|
|||||||
+2
-1
@@ -6,11 +6,12 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle
|
||||||
|
|
||||||
import kotlinx.collections.immutable.PersistentList
|
import kotlinx.collections.immutable.PersistentList
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||||
|
|
||||||
data class SettingsGradleFileIR(
|
data class SettingsGradleFileIR(
|
||||||
val projectName: String,
|
@NonNls val projectName: String,
|
||||||
val subProjects: List<String>,
|
val subProjects: List<String>,
|
||||||
override val irs: PersistentList<BuildSystemIR>
|
override val irs: PersistentList<BuildSystemIR>
|
||||||
) : FileIR, GradleIR {
|
) : FileIR, GradleIR {
|
||||||
|
|||||||
+3
-2
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryWrapper
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryWrapper
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter
|
||||||
@@ -31,8 +32,8 @@ data class PluginRepositoryMavenIR(
|
|||||||
}
|
}
|
||||||
|
|
||||||
data class MavenPropertyIR(
|
data class MavenPropertyIR(
|
||||||
val name: String,
|
@NonNls val name: String,
|
||||||
val value: String
|
@NonNls val value: String
|
||||||
) : MavenIR {
|
) : MavenIR {
|
||||||
override fun MavenPrinter.renderMaven() {
|
override fun MavenPrinter.renderMaven() {
|
||||||
singleLineNode(name) { +value }
|
singleLineNode(name) { +value }
|
||||||
|
|||||||
+2
-1
@@ -5,10 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.*
|
||||||
|
|
||||||
fun runTaskIrs(mainClass: String, classPath: BuildSystemIR? = null) = buildList<BuildSystemIR> {
|
fun runTaskIrs(@NonNls mainClass: String, classPath: BuildSystemIR? = null) = buildList<BuildSystemIR> {
|
||||||
+ApplicationPluginIR(mainClass)
|
+ApplicationPluginIR(mainClass)
|
||||||
|
|
||||||
+GradleSectionIR("application", buildBody {
|
+GradleSectionIR("application", buildBody {
|
||||||
|
|||||||
+4
-3
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.library
|
package org.jetbrains.kotlin.tools.projectWizard.library
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
|
|
||||||
@@ -7,12 +8,12 @@ sealed class LibraryArtifact
|
|||||||
|
|
||||||
data class MavenArtifact(
|
data class MavenArtifact(
|
||||||
val repository: Repository,
|
val repository: Repository,
|
||||||
val groupId: String,
|
@NonNls val groupId: String,
|
||||||
val artifactId: String
|
@NonNls val artifactId: String
|
||||||
) : LibraryArtifact()
|
) : LibraryArtifact()
|
||||||
|
|
||||||
data class NpmArtifact(
|
data class NpmArtifact(
|
||||||
val name: String
|
@NonNls val name: String
|
||||||
) : LibraryArtifact()
|
) : LibraryArtifact()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+17
-6
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||||
@@ -41,8 +43,6 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
|||||||
|
|
||||||
override val moduleType: ModuleType
|
override val moduleType: ModuleType
|
||||||
get() = ModuleType.android
|
get() = ModuleType.android
|
||||||
override val greyText: String
|
|
||||||
get() = "Requires Android SDK"
|
|
||||||
|
|
||||||
override fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> =
|
override fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> =
|
||||||
listOf(AndroidPlugin::androidSdkPath.reference)
|
listOf(AndroidPlugin::androidSdkPath.reference)
|
||||||
@@ -128,6 +128,8 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
|||||||
override val moduleSubType = ModuleSubType.android
|
override val moduleSubType = ModuleSubType.android
|
||||||
override val moduleType = ModuleType.android
|
override val moduleType = ModuleType.android
|
||||||
|
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
|
||||||
|
|
||||||
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
|
override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin =
|
||||||
withSettingsOf(module) { androidPlugin.reference.settingValue }
|
withSettingsOf(module) { androidPlugin.reference.settingValue }
|
||||||
|
|
||||||
@@ -150,10 +152,19 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
val androidPlugin by enumSetting<AndroidGradlePlugin>("Android Library", neededAtPhase = GenerationPhase.PROJECT_GENERATION)
|
val androidPlugin by enumSetting<AndroidGradlePlugin>(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin"),
|
||||||
|
neededAtPhase = GenerationPhase.PROJECT_GENERATION
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class AndroidGradlePlugin(override val text: String, val pluginName: String) : DisplayableSettingItem {
|
enum class AndroidGradlePlugin(override val text: String, @NonNls val pluginName: String) : DisplayableSettingItem {
|
||||||
APPLICATION("Android Application", "com.android.application"),
|
APPLICATION(
|
||||||
LIBRARY("Android Library", "com.android.library")
|
KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin.application"),
|
||||||
|
"com.android.application"
|
||||||
|
),
|
||||||
|
LIBRARY(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin.library"),
|
||||||
|
"com.android.library"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+5
-2
@@ -1,7 +1,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||||
@@ -19,9 +20,11 @@ object AndroidSinglePlatformModuleConfigurator :
|
|||||||
SinglePlatformModuleConfigurator,
|
SinglePlatformModuleConfigurator,
|
||||||
AndroidModuleConfigurator {
|
AndroidModuleConfigurator {
|
||||||
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid
|
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid
|
||||||
|
@NonNls
|
||||||
override val id = "android"
|
override val id = "android"
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "android"
|
override val suggestedModuleName = "android"
|
||||||
override val text = "Android"
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.android")
|
||||||
|
|
||||||
override val requiresRootBuildFile: Boolean = true
|
override val requiresRootBuildFile: Boolean = true
|
||||||
|
|
||||||
|
|||||||
+10
-1
@@ -5,6 +5,8 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||||
@@ -14,10 +16,16 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor
|
|||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, ModuleConfiguratorSettings() {
|
object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, ModuleConfiguratorSettings() {
|
||||||
|
@NonNls
|
||||||
override val id = "IOS Module"
|
override val id = "IOS Module"
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "ios"
|
override val suggestedModuleName = "ios"
|
||||||
|
|
||||||
override val moduleKind: ModuleKind = ModuleKind.singleplatformJvm
|
override val moduleKind: ModuleKind = ModuleKind.singleplatformJvm
|
||||||
override val greyText = "Requires Apple Xcode"
|
override val greyText = KotlinNewProjectWizardBundle.message("module.configurator.ios.requires.xcode")
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.ios")
|
||||||
|
|
||||||
|
|
||||||
override val needCreateBuildFile: Boolean = false
|
override val needCreateBuildFile: Boolean = false
|
||||||
override val requiresRootBuildFile: Boolean = true
|
override val requiresRootBuildFile: Boolean = true
|
||||||
@@ -74,6 +82,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M
|
|||||||
.asPath()
|
.asPath()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@NonNls
|
||||||
private const val DEFAULT_APP_NAME = "appName"
|
private const val DEFAULT_APP_NAME = "appName"
|
||||||
|
|
||||||
val dependentModule by valueSetting<DependentModuleReference>(
|
val dependentModule by valueSetting<DependentModuleReference>(
|
||||||
|
|||||||
+7
-1
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
@@ -22,9 +24,13 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType {
|
|||||||
|
|
||||||
object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWithTests, SinglePlatformModuleConfigurator {
|
object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWithTests, SinglePlatformModuleConfigurator {
|
||||||
override val moduleKind = ModuleKind.singleplatformJs
|
override val moduleKind = ModuleKind.singleplatformJs
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "js"
|
override val suggestedModuleName = "js"
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val id = "jsSinglepaltform"
|
override val id = "jsSinglepaltform"
|
||||||
override val text = "JS for Browser"
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.js")
|
||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
||||||
|
|
||||||
|
|||||||
-2
@@ -199,8 +199,6 @@ fun Module.getConfiguratorSettings() = buildList<SettingReference<*, *>> {
|
|||||||
|
|
||||||
interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
||||||
val moduleKind: ModuleKind
|
val moduleKind: ModuleKind
|
||||||
override val text: String
|
|
||||||
get() = id
|
|
||||||
|
|
||||||
val suggestedModuleName: String? get() = null
|
val suggestedModuleName: String? get() = null
|
||||||
val canContainSubModules: Boolean get() = false
|
val canContainSubModules: Boolean get() = false
|
||||||
|
|||||||
+28
-6
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference
|
||||||
@@ -24,7 +26,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
|||||||
interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||||
companion object : ModuleConfiguratorSettings() {
|
companion object : ModuleConfiguratorSettings() {
|
||||||
val testFramework by enumSetting<KotlinTestFramework>(
|
val testFramework by enumSetting<KotlinTestFramework>(
|
||||||
"Test Framework",
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework"),
|
||||||
neededAtPhase = GenerationPhase.PROJECT_GENERATION
|
neededAtPhase = GenerationPhase.PROJECT_GENERATION
|
||||||
) {
|
) {
|
||||||
filter = filter@{ reference, kotlinTestFramework ->
|
filter = filter@{ reference, kotlinTestFramework ->
|
||||||
@@ -67,9 +69,29 @@ enum class KotlinTestFramework(
|
|||||||
val moduleType: ModuleType,
|
val moduleType: ModuleType,
|
||||||
val dependencyNames: List<String>
|
val dependencyNames: List<String>
|
||||||
) : DisplayableSettingItem {
|
) : DisplayableSettingItem {
|
||||||
JUNIT4("JUnit 4 Test Framework", ModuleType.jvm, listOf("test-junit")),
|
JUNIT4(
|
||||||
JUNIT5("JUnit 5 Test Framework", ModuleType.jvm, listOf("test-junit5")),
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit4"),
|
||||||
TEST_NG("Test NG Test Framework", ModuleType.jvm, listOf("test-testng")),
|
ModuleType.jvm,
|
||||||
JS("JavaScript Test Framework", ModuleType.js, listOf("test-js")),
|
listOf("test-junit")
|
||||||
COMMON("Common Test Framework", ModuleType.common, listOf("test-common", "test-annotations-common")),
|
),
|
||||||
|
JUNIT5(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit5"),
|
||||||
|
ModuleType.jvm,
|
||||||
|
listOf("test-junit5")
|
||||||
|
),
|
||||||
|
TEST_NG(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.test.ng"),
|
||||||
|
ModuleType.jvm,
|
||||||
|
listOf("test-testng")
|
||||||
|
),
|
||||||
|
JS(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.js"),
|
||||||
|
ModuleType.js,
|
||||||
|
listOf("test-js")
|
||||||
|
),
|
||||||
|
COMMON(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.common"),
|
||||||
|
ModuleType.common,
|
||||||
|
listOf("test-common", "test-annotations-common")
|
||||||
|
)
|
||||||
}
|
}
|
||||||
+8
-1
@@ -1,6 +1,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
@@ -20,6 +22,8 @@ interface NativeTargetConfigurator : TargetConfigurator
|
|||||||
class RealNativeTargetConfigurator private constructor(
|
class RealNativeTargetConfigurator private constructor(
|
||||||
override val moduleSubType: ModuleSubType
|
override val moduleSubType: ModuleSubType
|
||||||
) : NativeTargetConfigurator, SimpleTargetConfigurator {
|
) : NativeTargetConfigurator, SimpleTargetConfigurator {
|
||||||
|
override val text: String = moduleSubType.name.capitalize()
|
||||||
|
|
||||||
override fun createInnerTargetIrs(reader: Reader, module: Module): List<BuildSystemIR> = if (moduleSubType.isIOS) {
|
override fun createInnerTargetIrs(reader: Reader, module: Module): List<BuildSystemIR> = if (moduleSubType.isIOS) {
|
||||||
listOf(
|
listOf(
|
||||||
GradleSectionIR("binaries") {
|
GradleSectionIR("binaries") {
|
||||||
@@ -43,8 +47,11 @@ class RealNativeTargetConfigurator private constructor(
|
|||||||
|
|
||||||
object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator {
|
object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator {
|
||||||
override val moduleType = ModuleType.native
|
override val moduleType = ModuleType.native
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val id = "nativeForCurrentSystem"
|
override val id = "nativeForCurrentSystem"
|
||||||
override val text = "Your system"
|
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.native.for.current.system")
|
||||||
|
|
||||||
|
|
||||||
override fun Reader.createTargetIrs(
|
override fun Reader.createTargetIrs(
|
||||||
|
|||||||
+6
-5
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
|
|
||||||
@@ -15,7 +16,7 @@ object TargetConfigurationGroups {
|
|||||||
|
|
||||||
object NATIVE {
|
object NATIVE {
|
||||||
val LINUX = FinalTargetConfiguratorGroup(
|
val LINUX = FinalTargetConfiguratorGroup(
|
||||||
"Linux",
|
KotlinNewProjectWizardBundle.message("module.configuration.group.linux"),
|
||||||
ModuleType.native,
|
ModuleType.native,
|
||||||
listOf(
|
listOf(
|
||||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.linuxX64),
|
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.linuxX64),
|
||||||
@@ -26,7 +27,7 @@ object TargetConfigurationGroups {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val WINDOWS = FinalTargetConfiguratorGroup(
|
val WINDOWS = FinalTargetConfiguratorGroup(
|
||||||
"Windows (MinGW)",
|
KotlinNewProjectWizardBundle.message("module.configuration.group.windows.mingw"),
|
||||||
ModuleType.native,
|
ModuleType.native,
|
||||||
listOf(
|
listOf(
|
||||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.mingwX64),
|
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.mingwX64),
|
||||||
@@ -35,7 +36,7 @@ object TargetConfigurationGroups {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val MAC = FinalTargetConfiguratorGroup(
|
val MAC = FinalTargetConfiguratorGroup(
|
||||||
"macOS",
|
KotlinNewProjectWizardBundle.message("module.configuration.group.macos"),
|
||||||
ModuleType.native,
|
ModuleType.native,
|
||||||
listOf(
|
listOf(
|
||||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.macosX64)
|
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.macosX64)
|
||||||
@@ -43,7 +44,7 @@ object TargetConfigurationGroups {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val IOS = FinalTargetConfiguratorGroup(
|
val IOS = FinalTargetConfiguratorGroup(
|
||||||
"iOS",
|
KotlinNewProjectWizardBundle.message("module.configuration.group.ios"),
|
||||||
ModuleType.native,
|
ModuleType.native,
|
||||||
listOf(
|
listOf(
|
||||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosArm32),
|
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosArm32),
|
||||||
@@ -53,7 +54,7 @@ object TargetConfigurationGroups {
|
|||||||
)
|
)
|
||||||
|
|
||||||
val ANDROID_NATIVE = FinalTargetConfiguratorGroup(
|
val ANDROID_NATIVE = FinalTargetConfiguratorGroup(
|
||||||
"Android Native",
|
KotlinNewProjectWizardBundle.message("module.configuration.group.android.native"),
|
||||||
ModuleType.native,
|
ModuleType.native,
|
||||||
listOf(
|
listOf(
|
||||||
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.androidNativeArm64),
|
RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.androidNativeArm64),
|
||||||
|
|||||||
+19
-6
@@ -1,6 +1,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
import kotlinx.collections.immutable.toPersistentList
|
import kotlinx.collections.immutable.toPersistentList
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
@@ -41,7 +43,6 @@ interface SimpleTargetConfigurator : TargetConfigurator {
|
|||||||
val moduleSubType: ModuleSubType
|
val moduleSubType: ModuleSubType
|
||||||
override val moduleType get() = moduleSubType.moduleType
|
override val moduleType get() = moduleSubType.moduleType
|
||||||
override val id get() = "${moduleSubType.name}Target"
|
override val id get() = "${moduleSubType.name}Target"
|
||||||
override val text get() = moduleSubType.name.capitalize()
|
|
||||||
|
|
||||||
override val suggestedModuleName: String? get() = moduleSubType.name
|
override val suggestedModuleName: String? get() = moduleSubType.name
|
||||||
|
|
||||||
@@ -66,10 +67,15 @@ private fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) =
|
|||||||
interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexistenceTargetConfigurator
|
interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexistenceTargetConfigurator
|
||||||
|
|
||||||
object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests {
|
object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests {
|
||||||
|
@NonNls
|
||||||
override val id = "jsBrowser"
|
override val id = "jsBrowser"
|
||||||
override val text = "Browser"
|
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "browser"
|
override val suggestedModuleName = "browser"
|
||||||
|
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser")
|
||||||
|
|
||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS
|
||||||
|
|
||||||
override fun Reader.createTargetIrs(
|
override fun Reader.createTargetIrs(
|
||||||
@@ -87,10 +93,14 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit
|
|||||||
}
|
}
|
||||||
|
|
||||||
object JsNodeTargetConfigurator : JsTargetConfigurator {
|
object JsNodeTargetConfigurator : JsTargetConfigurator {
|
||||||
|
@NonNls
|
||||||
override val id = "jsNode"
|
override val id = "jsNode"
|
||||||
override val text = "Node.js"
|
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "nodeJs"
|
override val suggestedModuleName = "nodeJs"
|
||||||
|
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.node")
|
||||||
|
|
||||||
|
|
||||||
override fun Reader.createTargetIrs(
|
override fun Reader.createTargetIrs(
|
||||||
module: Module
|
module: Module
|
||||||
@@ -108,6 +118,7 @@ object JsNodeTargetConfigurator : JsTargetConfigurator {
|
|||||||
|
|
||||||
object CommonTargetConfigurator : TargetConfiguratorWithTests(), SimpleTargetConfigurator, SingleCoexistenceTargetConfigurator {
|
object CommonTargetConfigurator : TargetConfiguratorWithTests(), SimpleTargetConfigurator, SingleCoexistenceTargetConfigurator {
|
||||||
override val moduleSubType = ModuleSubType.common
|
override val moduleSubType = ModuleSubType.common
|
||||||
|
override val text: String = KotlinNewProjectWizardBundle.message("module.configurator.common")
|
||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.COMMON
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.COMMON
|
||||||
}
|
}
|
||||||
@@ -117,8 +128,7 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
|||||||
SimpleTargetConfigurator {
|
SimpleTargetConfigurator {
|
||||||
override val moduleSubType = ModuleSubType.jvm
|
override val moduleSubType = ModuleSubType.jvm
|
||||||
|
|
||||||
override val text: String
|
override val text: String = KotlinNewProjectWizardBundle.message("module.configurator.jvm")
|
||||||
get() = "JVM"
|
|
||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
||||||
|
|
||||||
@@ -149,7 +159,10 @@ object JvmTargetConfigurator : JvmModuleConfigurator,
|
|||||||
Settings.javaSupport
|
Settings.javaSupport
|
||||||
|
|
||||||
object Settings : ModuleConfiguratorSettings() {
|
object Settings : ModuleConfiguratorSettings() {
|
||||||
val javaSupport by booleanSetting("Java language support", GenerationPhase.PROJECT_GENERATION) {
|
val javaSupport by booleanSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.jvm.setting.java.support"),
|
||||||
|
GenerationPhase.PROJECT_GENERATION
|
||||||
|
) {
|
||||||
defaultValue = value(false)
|
defaultValue = value(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-6
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
|
|
||||||
@@ -9,22 +10,22 @@ interface DisplayableTargetConfiguratorGroup : TargetConfiguratorGroup, Displaya
|
|||||||
val moduleType: ModuleType
|
val moduleType: ModuleType
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TargetConfiguratorGroupWithSubItems: TargetConfiguratorGroup {
|
interface TargetConfiguratorGroupWithSubItems : TargetConfiguratorGroup {
|
||||||
val subItems: List<DisplayableSettingItem>
|
val subItems: List<DisplayableSettingItem>
|
||||||
}
|
}
|
||||||
|
|
||||||
data class StepTargetConfiguratorGroup(
|
data class StepTargetConfiguratorGroup(
|
||||||
override val text: String,
|
@Nls override val text: String,
|
||||||
override val moduleType: ModuleType,
|
override val moduleType: ModuleType,
|
||||||
override val subItems: List<DisplayableSettingItem>
|
override val subItems: List<DisplayableSettingItem>
|
||||||
): DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
||||||
|
|
||||||
data class FinalTargetConfiguratorGroup(
|
data class FinalTargetConfiguratorGroup(
|
||||||
override val text: String,
|
@Nls override val text: String,
|
||||||
override val moduleType: ModuleType,
|
override val moduleType: ModuleType,
|
||||||
override val subItems: List<DisplayableSettingItem>
|
override val subItems: List<DisplayableSettingItem>
|
||||||
): DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
||||||
|
|
||||||
data class FirstStepTargetConfiguratorGroup(
|
data class FirstStepTargetConfiguratorGroup(
|
||||||
override val subItems: List<DisplayableSettingItem>
|
override val subItems: List<DisplayableSettingItem>
|
||||||
): TargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
) : TargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems
|
||||||
+16
-8
@@ -1,6 +1,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting
|
||||||
@@ -20,7 +22,10 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
|||||||
|
|
||||||
interface JvmModuleConfigurator : ModuleConfiguratorWithTests {
|
interface JvmModuleConfigurator : ModuleConfiguratorWithTests {
|
||||||
companion object : ModuleConfiguratorSettings() {
|
companion object : ModuleConfiguratorSettings() {
|
||||||
val targetJvmVersion by enumSetting<TargetJvmVersion>("Target JVM Version", GenerationPhase.PROJECT_GENERATION) {
|
val targetJvmVersion by enumSetting<TargetJvmVersion>(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.configurator.jvm.setting.target.jvm.version"),
|
||||||
|
GenerationPhase.PROJECT_GENERATION
|
||||||
|
) {
|
||||||
defaultValue = value(TargetJvmVersion.JVM_1_8)
|
defaultValue = value(TargetJvmVersion.JVM_1_8)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -31,7 +36,7 @@ interface JvmModuleConfigurator : ModuleConfiguratorWithTests {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class TargetJvmVersion(val value: String) : DisplayableSettingItem {
|
enum class TargetJvmVersion(@NonNls val value: String) : DisplayableSettingItem {
|
||||||
JVM_1_6("1.6"),
|
JVM_1_6("1.6"),
|
||||||
JVM_1_8("1.8"),
|
JVM_1_8("1.8"),
|
||||||
JVM_9("9"),
|
JVM_9("9"),
|
||||||
@@ -54,9 +59,13 @@ val ModuleConfigurator.moduleType: ModuleType?
|
|||||||
|
|
||||||
object MppModuleConfigurator : ModuleConfigurator {
|
object MppModuleConfigurator : ModuleConfigurator {
|
||||||
override val moduleKind = ModuleKind.multiplatform
|
override val moduleKind = ModuleKind.multiplatform
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedModuleName = "shared"
|
override val suggestedModuleName = "shared"
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val id = "multiplatform"
|
override val id = "multiplatform"
|
||||||
override val text = "Multiplatform"
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.mpp")
|
||||||
override val canContainSubModules = true
|
override val canContainSubModules = true
|
||||||
|
|
||||||
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||||
@@ -76,8 +85,10 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
|||||||
ModuleConfiguratorWithModuleType {
|
ModuleConfiguratorWithModuleType {
|
||||||
override val moduleType get() = ModuleType.jvm
|
override val moduleType get() = ModuleType.jvm
|
||||||
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformJvm
|
override val moduleKind: ModuleKind get() = ModuleKind.singleplatformJvm
|
||||||
override val suggestedModuleName = "jvm"
|
@NonNls override val suggestedModuleName = "jvm"
|
||||||
override val id = "JVM Module"
|
@NonNls override val id = "JVM Module"
|
||||||
|
override val text = KotlinNewProjectWizardBundle.message("module.configurator.jvm")
|
||||||
|
|
||||||
|
|
||||||
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4
|
||||||
|
|
||||||
@@ -120,9 +131,6 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
val ModuleType.defaultTarget
|
val ModuleType.defaultTarget
|
||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
ModuleType.jvm -> JvmTargetConfigurator
|
ModuleType.jvm -> JvmTargetConfigurator
|
||||||
|
|||||||
+2
-1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||||
@@ -18,7 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules
|
|||||||
|
|
||||||
class AndroidPlugin(context: Context) : Plugin(context) {
|
class AndroidPlugin(context: Context) : Plugin(context) {
|
||||||
val androidSdkPath by pathSetting(
|
val androidSdkPath by pathSetting(
|
||||||
"Android SDK Path",
|
KotlinNewProjectWizardBundle.message("plugin.android.setting.sdk"),
|
||||||
neededAtPhase = GenerationPhase.PROJECT_GENERATION
|
neededAtPhase = GenerationPhase.PROJECT_GENERATION
|
||||||
) {
|
) {
|
||||||
isSavable = true
|
isSavable = true
|
||||||
|
|||||||
+25
-10
@@ -1,7 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
|
||||||
@@ -13,26 +13,41 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
|||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
|
|
||||||
class StructurePlugin(context: Context) : Plugin(context) {
|
class StructurePlugin(context: Context) : Plugin(context) {
|
||||||
val projectPath by pathSetting("Location", GenerationPhase.FIRST_STEP) {
|
val projectPath by pathSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.structure.setting.location"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
defaultValue = value(Paths.get("."))
|
defaultValue = value(Paths.get("."))
|
||||||
}
|
}
|
||||||
val name by stringSetting("Name", GenerationPhase.FIRST_STEP) {
|
val name by stringSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.structure.setting.name"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
shouldNotBeBlank()
|
shouldNotBeBlank()
|
||||||
validate(StringValidators.shouldBeValidIdentifier("Name", Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES))
|
validate(StringValidators.shouldBeValidIdentifier(title, Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES))
|
||||||
}
|
}
|
||||||
|
|
||||||
val groupId by stringSetting("Group ID", GenerationPhase.FIRST_STEP) {
|
val groupId by stringSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.structure.setting.group.id"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
isSavable = true
|
isSavable = true
|
||||||
shouldNotBeBlank()
|
shouldNotBeBlank()
|
||||||
validate(StringValidators.shouldBeValidIdentifier("Group ID", setOf('.', '_')))
|
validate(StringValidators.shouldBeValidIdentifier(title, setOf('.', '_')))
|
||||||
}
|
}
|
||||||
val artifactId by stringSetting("Artifact ID", GenerationPhase.FIRST_STEP) {
|
val artifactId by stringSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.structure.setting.artifact.id"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
shouldNotBeBlank()
|
shouldNotBeBlank()
|
||||||
validate(StringValidators.shouldBeValidIdentifier("Artifact ID", setOf('_')))
|
validate(StringValidators.shouldBeValidIdentifier(title, setOf('_')))
|
||||||
}
|
}
|
||||||
val version by stringSetting("Version", GenerationPhase.FIRST_STEP) {
|
val version by stringSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.structure.setting.version"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
shouldNotBeBlank()
|
shouldNotBeBlank()
|
||||||
validate(StringValidators.shouldBeValidIdentifier("Version", setOf('_', '-', '.')))
|
validate(StringValidators.shouldBeValidIdentifier(title, setOf('_', '-', '.')))
|
||||||
defaultValue = value("1.0-SNAPSHOT")
|
defaultValue = value("1.0-SNAPSHOT")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+22
-9
@@ -1,6 +1,9 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
|
||||||
@@ -22,7 +25,10 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
|
||||||
|
|
||||||
abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
|
abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
|
||||||
val type by enumSetting<BuildSystemType>("Build System", GenerationPhase.FIRST_STEP) {
|
val type by enumSetting<BuildSystemType>(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.buildsystem.setting.type"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
) {
|
||||||
isSavable = true
|
isSavable = true
|
||||||
filter = { _, type ->
|
filter = { _, type ->
|
||||||
val service = service<BuildSystemAvailabilityWizardService>()
|
val service = service<BuildSystemAvailabilityWizardService>()
|
||||||
@@ -33,8 +39,15 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) {
|
|||||||
if (!buildSystemType.isGradle
|
if (!buildSystemType.isGradle
|
||||||
&& KotlinPlugin::projectKind.reference.notRequiredSettingValue != ProjectKind.Singleplatform
|
&& KotlinPlugin::projectKind.reference.notRequiredSettingValue != ProjectKind.Singleplatform
|
||||||
) {
|
) {
|
||||||
val projectKind = KotlinPlugin::projectKind.reference.notRequiredSettingValue?.text?.capitalize() ?: "Project"
|
val projectKind = KotlinPlugin::projectKind.reference.notRequiredSettingValue?.text?.capitalize()
|
||||||
ValidationResult.ValidationError("$projectKind cannot be generated using ${buildSystemType.text}")
|
?: KotlinNewProjectWizardBundle.message("project")
|
||||||
|
ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"plugin.buildsystem.setting.type.error.wrong.project.kind",
|
||||||
|
projectKind,
|
||||||
|
buildSystemType.text
|
||||||
|
)
|
||||||
|
)
|
||||||
} else ValidationResult.OK
|
} else ValidationResult.OK
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -106,14 +119,14 @@ data class BuildSystemData(
|
|||||||
|
|
||||||
data class BuildFileData(
|
data class BuildFileData(
|
||||||
val createPrinter: () -> BuildFilePrinter,
|
val createPrinter: () -> BuildFilePrinter,
|
||||||
val buildFileName: String
|
@NonNls val buildFileName: String
|
||||||
)
|
)
|
||||||
|
|
||||||
enum class BuildSystemType(override val text: String) : DisplayableSettingItem {
|
enum class BuildSystemType(@Nls override val text: String) : DisplayableSettingItem {
|
||||||
GradleKotlinDsl("Gradle Kotlin"),
|
GradleKotlinDsl(KotlinNewProjectWizardBundle.message("buildsystem.type.gradle.kotlin")),
|
||||||
GradleGroovyDsl("Gradle Groovy"),
|
GradleGroovyDsl(KotlinNewProjectWizardBundle.message("buildsystem.type.gradle.groovy")),
|
||||||
Jps("IntelliJ"),
|
Jps(KotlinNewProjectWizardBundle.message("buildsystem.type.intellij")),
|
||||||
Maven("Maven")
|
Maven(KotlinNewProjectWizardBundle.message("buildsystem.type.maven"))
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
-2
@@ -3,8 +3,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||||
|
|
||||||
class JpsPlugin(context: Context) : BuildSystemPlugin(context) {
|
class JpsPlugin(context: Context) : BuildSystemPlugin(context) {
|
||||||
override val title: String = "IDEA"
|
|
||||||
|
|
||||||
val addBuildSystemData by addBuildSystemData(
|
val addBuildSystemData by addBuildSystemData(
|
||||||
BuildSystemData(
|
BuildSystemData(
|
||||||
type = BuildSystemType.Jps,
|
type = BuildSystemType.Jps,
|
||||||
|
|||||||
-2
@@ -13,8 +13,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles
|
||||||
|
|
||||||
class MavenPlugin(context: Context) : BuildSystemPlugin(context) {
|
class MavenPlugin(context: Context) : BuildSystemPlugin(context) {
|
||||||
override val title: String = "Maven"
|
|
||||||
|
|
||||||
private val isMaven = checker {
|
private val isMaven = checker {
|
||||||
BuildSystemPlugin::type.settingValue == BuildSystemType.Maven
|
BuildSystemPlugin::type.settingValue == BuildSystemType.Maven
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -7,8 +7,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||||
|
|
||||||
class GroovyDslPlugin(context: Context) : GradlePlugin(context) {
|
class GroovyDslPlugin(context: Context) : GradlePlugin(context) {
|
||||||
override val title: String = "Gradle (Groovy DSL)"
|
|
||||||
|
|
||||||
val addBuildSystemData by addBuildSystemData(
|
val addBuildSystemData by addBuildSystemData(
|
||||||
BuildSystemData(
|
BuildSystemData(
|
||||||
type = BuildSystemType.GradleGroovyDsl,
|
type = BuildSystemType.GradleGroovyDsl,
|
||||||
|
|||||||
-2
@@ -7,8 +7,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter
|
||||||
|
|
||||||
class KotlinDslPlugin(context: Context) : GradlePlugin(context) {
|
class KotlinDslPlugin(context: Context) : GradlePlugin(context) {
|
||||||
override val title: String = "Gradle (Kotlin DSL)"
|
|
||||||
|
|
||||||
val addBuildSystemData by addBuildSystemData(
|
val addBuildSystemData by addBuildSystemData(
|
||||||
BuildSystemData(
|
BuildSystemData(
|
||||||
type = BuildSystemType.GradleKotlinDsl,
|
type = BuildSystemType.GradleKotlinDsl,
|
||||||
|
|||||||
+32
-13
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||||
@@ -26,7 +27,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
val version by property(Versions.KOTLIN)
|
val version by property(Versions.KOTLIN)
|
||||||
|
|
||||||
val initKotlinVersions by pipelineTask(GenerationPhase.PREPARE_GENERATION) {
|
val initKotlinVersions by pipelineTask(GenerationPhase.PREPARE_GENERATION) {
|
||||||
title = "Downloading list of Kotlin versions"
|
title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions")
|
||||||
|
|
||||||
withAction {
|
withAction {
|
||||||
val version = service<KotlinVersionProviderService>().getKotlinVersion()
|
val version = service<KotlinVersionProviderService>().getKotlinVersion()
|
||||||
@@ -34,18 +35,29 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val projectKind by enumSetting<ProjectKind>("Project Kind", GenerationPhase.FIRST_STEP)
|
val projectKind by enumSetting<ProjectKind>(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.kotlin.setting.project.kind"),
|
||||||
|
GenerationPhase.FIRST_STEP
|
||||||
|
)
|
||||||
|
|
||||||
private fun List<Module>.findDuplicatesByName() =
|
private fun List<Module>.findDuplicatesByName() =
|
||||||
groupingBy { it.name }.eachCount().filter { it.value > 1 }
|
groupingBy { it.name }.eachCount().filter { it.value > 1 }
|
||||||
|
|
||||||
val modules by listSetting("Modules", GenerationPhase.SECOND_STEP, Module.parser) {
|
val modules by listSetting(
|
||||||
|
KotlinNewProjectWizardBundle.message("plugin.kotlin.setting.modules"),
|
||||||
|
GenerationPhase.SECOND_STEP,
|
||||||
|
Module.parser
|
||||||
|
) {
|
||||||
validate { value ->
|
validate { value ->
|
||||||
val allModules = value.withAllSubModules()
|
val allModules = value.withAllSubModules()
|
||||||
val duplicatedModules = allModules.findDuplicatesByName()
|
val duplicatedModules = allModules.findDuplicatesByName()
|
||||||
if (duplicatedModules.isEmpty()) ValidationResult.OK
|
if (duplicatedModules.isEmpty()) ValidationResult.OK
|
||||||
else ValidationResult.ValidationError(
|
else ValidationResult.ValidationError(
|
||||||
"There are ${duplicatedModules.values.first()} modules with name `${duplicatedModules.keys.first()}`"
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"plugin.kotlin.setting.modules.error.duplicated.modules",
|
||||||
|
duplicatedModules.values.first(),
|
||||||
|
duplicatedModules.keys.first()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -54,7 +66,11 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
val duplicatedModules = module.subModules.findDuplicatesByName()
|
val duplicatedModules = module.subModules.findDuplicatesByName()
|
||||||
if (duplicatedModules.isEmpty()) ValidationResult.OK
|
if (duplicatedModules.isEmpty()) ValidationResult.OK
|
||||||
else ValidationResult.ValidationError(
|
else ValidationResult.ValidationError(
|
||||||
"There are ${duplicatedModules.values.first()} targets for module `${module.name}` with name `${duplicatedModules.keys.first()}`"
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"plugin.kotlin.setting.modules.error.duplicated.targets",
|
||||||
|
duplicatedModules.values.first(),
|
||||||
|
duplicatedModules.keys.first()
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
@@ -119,9 +135,6 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
// TODO update default versions
|
|
||||||
private val DEFAULT_VERSION = Version.fromString("1.3.61")
|
|
||||||
|
|
||||||
private val moduleDependenciesValidator = settingValidator<List<Module>> { modules ->
|
private val moduleDependenciesValidator = settingValidator<List<Module>> { modules ->
|
||||||
val allModules = modules.withAllSubModules(includeSourcesets = true).toSet()
|
val allModules = modules.withAllSubModules(includeSourcesets = true).toSet()
|
||||||
val allModulePaths = allModules.map(Module::path).toSet()
|
val allModulePaths = allModules.map(Module::path).toSet()
|
||||||
@@ -131,7 +144,13 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
is ModuleReference.ByPath -> dependency.path in allModulePaths
|
is ModuleReference.ByPath -> dependency.path in allModulePaths
|
||||||
is ModuleReference.ByModule -> dependency.module in allModules
|
is ModuleReference.ByModule -> dependency.module in allModules
|
||||||
}
|
}
|
||||||
ValidationResult.create(isValidModule) { "Invalid module dependency $dependency of module ${module.path}" }
|
ValidationResult.create(isValidModule) {
|
||||||
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"plugin.kotlin.setting.modules.error.duplicated.modules",
|
||||||
|
dependency,
|
||||||
|
module.path
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
@@ -139,10 +158,10 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum class ProjectKind(override val text: String) : DisplayableSettingItem {
|
enum class ProjectKind(override val text: String) : DisplayableSettingItem {
|
||||||
Singleplatform("Singleplatform project"),
|
Singleplatform(KotlinNewProjectWizardBundle.message("project.kind.singleplatform")),
|
||||||
Multiplatform("Multiplatform project"),
|
Multiplatform(KotlinNewProjectWizardBundle.message("project.kind.multiplatform")),
|
||||||
Android("Android project"),
|
Android(KotlinNewProjectWizardBundle.message("project.kind.android")),
|
||||||
Js("Kotlin/JS project")
|
Js(KotlinNewProjectWizardBundle.message("project.kind.kotlin.js"))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
|
fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
|
||||||
|
|||||||
+7
-6
@@ -1,17 +1,18 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
//TODO maybe split into interfaces like it made with module configurators
|
//TODO maybe split into interfaces like it made with module configurators
|
||||||
@Suppress("EnumEntryName")
|
@Suppress("EnumEntryName")
|
||||||
enum class ModuleType(val projectTypeName: String) {
|
enum class ModuleType(val projectTypeName: String) {
|
||||||
jvm("Kotlin/JVM"),
|
jvm(KotlinNewProjectWizardBundle.message("module.type.jvm")),
|
||||||
js("Kotlin/JS"),
|
js(KotlinNewProjectWizardBundle.message("module.type.js")),
|
||||||
native("Kotlin/Native"),
|
native(KotlinNewProjectWizardBundle.message("module.type.native")),
|
||||||
common("Common"),
|
common(KotlinNewProjectWizardBundle.message("module.type.common")),
|
||||||
android("Android"),
|
android(KotlinNewProjectWizardBundle.message("module.type.android")),
|
||||||
// ios("iOS")
|
// ios(KotlinNewProjectWizardBundle.message("module.type.ios"))
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
||||||
|
|
||||||
@@ -25,7 +26,7 @@ abstract class BuildFilePrinter {
|
|||||||
builder.append(this)
|
builder.append(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
operator fun String.unaryPlus() {
|
operator fun @receiver:NonNls String.unaryPlus() {
|
||||||
builder.append(this)
|
builder.append(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-6
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
|
|
||||||
class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFilePrinter() {
|
class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFilePrinter() {
|
||||||
@@ -26,7 +27,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil
|
|||||||
GradleDsl.GROOVY -> "'$this'"
|
GradleDsl.GROOVY -> "'$this'"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun call(name: String, forceBrackets: Boolean = false, body: () -> Unit) {
|
fun call(@NonNls name: String, forceBrackets: Boolean = false, body: () -> Unit) {
|
||||||
+name
|
+name
|
||||||
when {
|
when {
|
||||||
dsl == GradleDsl.KOTLIN || forceBrackets -> {
|
dsl == GradleDsl.KOTLIN || forceBrackets -> {
|
||||||
@@ -39,7 +40,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun sectionCall(name: String, needIndent: Boolean = false, body: () -> Unit) {
|
fun sectionCall(@NonNls name: String, needIndent: Boolean = false, body: () -> Unit) {
|
||||||
+name
|
+name
|
||||||
+" "
|
+" "
|
||||||
inBrackets {
|
inBrackets {
|
||||||
@@ -49,7 +50,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun <I : BuildSystemIR> sectionCall(
|
fun <I : BuildSystemIR> sectionCall(
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
irs: List<I>,
|
irs: List<I>,
|
||||||
renderEmpty: Boolean = false
|
renderEmpty: Boolean = false
|
||||||
) {
|
) {
|
||||||
@@ -61,7 +62,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assignmentOrCall(target: String, assignee: () -> Unit) = when (dsl) {
|
fun assignmentOrCall(@NonNls target: String, assignee: () -> Unit) = when (dsl) {
|
||||||
GradleDsl.KOTLIN -> {
|
GradleDsl.KOTLIN -> {
|
||||||
+"$target = "
|
+"$target = "
|
||||||
assignee()
|
assignee()
|
||||||
@@ -69,13 +70,13 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil
|
|||||||
GradleDsl.GROOVY -> call(target, forceBrackets = false, body = assignee)
|
GradleDsl.GROOVY -> call(target, forceBrackets = false, body = assignee)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun assignment(target: String, assignee: () -> Unit) {
|
fun assignment(@NonNls target: String, assignee: () -> Unit) {
|
||||||
+"$target = "
|
+"$target = "
|
||||||
assignee()
|
assignee()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
inline fun getting(name: String, prefix: String?, body: () -> Unit = {}) {
|
inline fun getting(@NonNls name: String, @NonNls prefix: String?, body: () -> Unit = {}) {
|
||||||
when (dsl) {
|
when (dsl) {
|
||||||
GradleDsl.GROOVY -> {
|
GradleDsl.GROOVY -> {
|
||||||
prefix?.let { +it; +"." }
|
prefix?.let { +it; +"." }
|
||||||
|
|||||||
+3
-2
@@ -1,12 +1,13 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
package org.jetbrains.kotlin.tools.projectWizard.plugins.printer
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render
|
||||||
|
|
||||||
class
|
class
|
||||||
MavenPrinter(override val indent: Int = 4) : BuildFilePrinter() {
|
MavenPrinter(override val indent: Int = 4) : BuildFilePrinter() {
|
||||||
fun node(
|
fun node(
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
attributes: List<Pair<String, String>> = emptyList(),
|
attributes: List<Pair<String, String>> = emptyList(),
|
||||||
singleLine: Boolean = false,
|
singleLine: Boolean = false,
|
||||||
body: () -> Unit
|
body: () -> Unit
|
||||||
@@ -44,7 +45,7 @@ MavenPrinter(override val indent: Int = 4) : BuildFilePrinter() {
|
|||||||
get() = "\"$this\""
|
get() = "\"$this\""
|
||||||
|
|
||||||
fun singleLineNode(
|
fun singleLineNode(
|
||||||
name: String,
|
@NonNls name: String,
|
||||||
attributes: List<Pair<String, String>> = emptyList(),
|
attributes: List<Pair<String, String>> = emptyList(),
|
||||||
body: () -> Unit
|
body: () -> Unit
|
||||||
) = node(name, attributes, singleLine = true, body = body)
|
) = node(name, attributes, singleLine = true, body = body)
|
||||||
|
|||||||
+37
-21
@@ -1,5 +1,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.projectTemplates
|
package org.jetbrains.kotlin.tools.projectWizard.projectTemplates
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||||
@@ -133,8 +135,10 @@ private fun ModuleType.createDefaultTarget(
|
|||||||
) = MultiplatformTargetModule(name, defaultTarget, createDefaultSourcesets())
|
) = MultiplatformTargetModule(name, defaultTarget, createDefaultSourcesets())
|
||||||
|
|
||||||
object EmptySingleplatformProjectTemplate : ProjectTemplate() {
|
object EmptySingleplatformProjectTemplate : ProjectTemplate() {
|
||||||
override val title = "Backend Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.empty.singleplatform.title")
|
||||||
override val description = "Create a backend application with Kotlin/JVM."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.empty.singleplatform.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myKotlinJvmProject"
|
override val suggestedProjectName = "myKotlinJvmProject"
|
||||||
override val projectKind = ProjectKind.Singleplatform
|
override val projectKind = ProjectKind.Singleplatform
|
||||||
|
|
||||||
@@ -147,8 +151,10 @@ object EmptySingleplatformProjectTemplate : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object EmptyMultiplatformProjectTemplate : ProjectTemplate() {
|
object EmptyMultiplatformProjectTemplate : ProjectTemplate() {
|
||||||
override val title = "Multiplatform Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.empty.mpp.title")
|
||||||
override val description = "Create applications for different platforms that support sharing common code."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.empty.mpp.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myKotlinMultiplatformProject"
|
override val suggestedProjectName = "myKotlinMultiplatformProject"
|
||||||
override val projectKind = ProjectKind.Multiplatform
|
override val projectKind = ProjectKind.Multiplatform
|
||||||
|
|
||||||
@@ -161,8 +167,10 @@ object EmptyMultiplatformProjectTemplate : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object JvmConsoleApplication : ProjectTemplate() {
|
object JvmConsoleApplication : ProjectTemplate() {
|
||||||
override val title = "Console Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.empty.jvm.console.title")
|
||||||
override val description = "Create a console application with Kotlin/JVM. Use it for prototyping or testing purposes."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.empty.jvm.console.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myConsoleApplication"
|
override val suggestedProjectName = "myConsoleApplication"
|
||||||
override val projectKind = ProjectKind.Singleplatform
|
override val projectKind = ProjectKind.Singleplatform
|
||||||
|
|
||||||
@@ -180,8 +188,10 @@ object JvmConsoleApplication : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object MultiplatformLibrary : ProjectTemplate() {
|
object MultiplatformLibrary : ProjectTemplate() {
|
||||||
override val title = "Multiplatform Library"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.lib.title")
|
||||||
override val description = "Create a library for sharing common code among different platforms."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.lib.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myMultiplatformLibrary"
|
override val suggestedProjectName = "myMultiplatformLibrary"
|
||||||
override val projectKind = ProjectKind.Multiplatform
|
override val projectKind = ProjectKind.Multiplatform
|
||||||
|
|
||||||
@@ -202,9 +212,10 @@ object MultiplatformLibrary : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object JvmServerJsClient : ProjectTemplate() {
|
object JvmServerJsClient : ProjectTemplate() {
|
||||||
override val title: String = "Full-Stack Web Application"
|
override val title: String = KotlinNewProjectWizardBundle.message("project.template.full.stack.title")
|
||||||
override val description: String = "" +
|
override val description: String = KotlinNewProjectWizardBundle.message("project.template.full.stack.description")
|
||||||
"Create a fully-functional web application using Kotlin/JS for the frontend and Kotlin/JVM for the backend."
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName: String = "myFullStackApplication"
|
override val suggestedProjectName: String = "myFullStackApplication"
|
||||||
override val projectKind: ProjectKind = ProjectKind.Multiplatform
|
override val projectKind: ProjectKind = ProjectKind.Multiplatform
|
||||||
override val setsPluginSettings: List<SettingWithValue<*, *>> = listOf(
|
override val setsPluginSettings: List<SettingWithValue<*, *>> = listOf(
|
||||||
@@ -227,9 +238,10 @@ object JvmServerJsClient : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object NativeConsoleApplication : ProjectTemplate() {
|
object NativeConsoleApplication : ProjectTemplate() {
|
||||||
override val title = "Native Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.native.console.title")
|
||||||
override val description =
|
override val description = KotlinNewProjectWizardBundle.message("project.template.native.console.description")
|
||||||
"Create an application with Kotlin/Native that works as a standalone application under a specific platform."
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myNativeConsoleApp"
|
override val suggestedProjectName = "myNativeConsoleApp"
|
||||||
override val projectKind = ProjectKind.Multiplatform
|
override val projectKind = ProjectKind.Multiplatform
|
||||||
|
|
||||||
@@ -252,8 +264,10 @@ object NativeConsoleApplication : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object JsBrowserApplication : ProjectTemplate() {
|
object JsBrowserApplication : ProjectTemplate() {
|
||||||
override val title = "Frontend Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.frontend.title")
|
||||||
override val description = "Create a frontend application with Kotlin/JS if you already have a backend."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.frontend.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myKotlinJsApplication"
|
override val suggestedProjectName = "myKotlinJsApplication"
|
||||||
override val projectKind = ProjectKind.Js
|
override val projectKind = ProjectKind.Js
|
||||||
|
|
||||||
@@ -274,10 +288,10 @@ object JsBrowserApplication : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object MPPMobileApplication : ProjectTemplate() {
|
object MPPMobileApplication : ProjectTemplate() {
|
||||||
override val title = "Multiplatform Mobile Application"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.title")
|
||||||
|
override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.description")
|
||||||
|
|
||||||
override val description =
|
@NonNls
|
||||||
"Create mobile applications for iOS and Android with Kotlin Multiplatform Mobile, which supports sharing common code between platforms."
|
|
||||||
override val suggestedProjectName = "myIOSApplication"
|
override val suggestedProjectName = "myIOSApplication"
|
||||||
override val projectKind = ProjectKind.Multiplatform
|
override val projectKind = ProjectKind.Multiplatform
|
||||||
|
|
||||||
@@ -325,8 +339,10 @@ object MPPMobileApplication : ProjectTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object MultiplatformMobileLibrary : ProjectTemplate() {
|
object MultiplatformMobileLibrary : ProjectTemplate() {
|
||||||
override val title = "Multiplatform Mobile Library"
|
override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.lib.title")
|
||||||
override val description = "Create a library that supports sharing code between iOS and Android."
|
override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.lib.description")
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val suggestedProjectName = "myMppMobileLibrary"
|
override val suggestedProjectName = "myMppMobileLibrary"
|
||||||
override val projectKind = ProjectKind.Multiplatform
|
override val projectKind = ProjectKind.Multiplatform
|
||||||
|
|
||||||
|
|||||||
+5
@@ -1,7 +1,12 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.settings
|
package org.jetbrains.kotlin.tools.projectWizard.settings
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
|
||||||
interface DisplayableSettingItem {
|
interface DisplayableSettingItem {
|
||||||
|
@get:Nls
|
||||||
val text: String
|
val text: String
|
||||||
|
|
||||||
|
@get:Nls
|
||||||
val greyText: String?
|
val greyText: String?
|
||||||
get() = null
|
get() = null
|
||||||
}
|
}
|
||||||
|
|||||||
+29
-15
@@ -1,9 +1,11 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||||
|
|
||||||
import kotlinx.collections.immutable.PersistentList
|
import kotlinx.collections.immutable.PersistentList
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator
|
import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner
|
import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||||
@@ -29,7 +31,7 @@ enum class ModuleKind : DisplayableSettingItem {
|
|||||||
|
|
||||||
// TODO separate to classes
|
// TODO separate to classes
|
||||||
class Module(
|
class Module(
|
||||||
var name: String,
|
@NonNls var name: String,
|
||||||
val configurator: ModuleConfigurator,
|
val configurator: ModuleConfigurator,
|
||||||
var template: Template?,
|
var template: Template?,
|
||||||
val sourcesets: List<Sourceset>,
|
val sourcesets: List<Sourceset>,
|
||||||
@@ -62,12 +64,12 @@ class Module(
|
|||||||
override val text: String get() = name
|
override val text: String get() = name
|
||||||
override val greyText: String?
|
override val greyText: String?
|
||||||
get() = when {
|
get() = when {
|
||||||
kind == ModuleKind.target -> "${configurator.text} Target"
|
kind == ModuleKind.target -> configurator.text + KotlinNewProjectWizardBundle.message("module.kind.target")
|
||||||
configurator == MppModuleConfigurator -> "MPP Module"
|
configurator == MppModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.mpp.module")
|
||||||
configurator == AndroidSinglePlatformModuleConfigurator -> "Android Module"
|
configurator == AndroidSinglePlatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.android.module")
|
||||||
configurator == IOSSinglePlatformModuleConfigurator -> "IOS Module"
|
configurator == IOSSinglePlatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.ios.module")
|
||||||
configurator == JsSingleplatformModuleConfigurator -> "JS Module"
|
configurator == JsSingleplatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.js.module")
|
||||||
else -> "Module"
|
else -> KotlinNewProjectWizardBundle.message("module.kind.module")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun SettingsWriter.initDefaultValuesForSettings() {
|
fun SettingsWriter.initDefaultValuesForSettings() {
|
||||||
@@ -101,10 +103,12 @@ class Module(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val moduleNameValidator = settingValidator<Module> { module ->
|
private val moduleNameValidator = settingValidator<Module> { module ->
|
||||||
StringValidators.shouldNotBeBlank("Module name").validate(this, module.name)
|
StringValidators.shouldNotBeBlank(KotlinNewProjectWizardBundle.message("module.name")).validate(this, module.name)
|
||||||
} and settingValidator { module ->
|
} and settingValidator { module ->
|
||||||
StringValidators.shouldBeValidIdentifier("Module name `${module.name}`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)
|
StringValidators.shouldBeValidIdentifier(
|
||||||
.validate(this, module.name)
|
KotlinNewProjectWizardBundle.message("module.name", module.name),
|
||||||
|
ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
|
||||||
|
).validate(this, module.name)
|
||||||
}
|
}
|
||||||
|
|
||||||
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
val moduleConfiguratorValidator = settingValidator<Module> { module ->
|
||||||
@@ -117,7 +121,12 @@ class Module(
|
|||||||
}
|
}
|
||||||
val value = reference?.notRequiredSettingValue
|
val value = reference?.notRequiredSettingValue
|
||||||
?: reference?.savedOrDefaultValue
|
?: reference?.savedOrDefaultValue
|
||||||
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
?: return@map ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"validation.should.not.be.blank",
|
||||||
|
setting.title.capitalize()
|
||||||
|
)
|
||||||
|
)
|
||||||
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
@@ -129,7 +138,12 @@ class Module(
|
|||||||
template.settings.map { setting ->
|
template.settings.map { setting ->
|
||||||
val value = setting.reference.notRequiredSettingValue
|
val value = setting.reference.notRequiredSettingValue
|
||||||
?: setting.reference.savedOrDefaultValue
|
?: setting.reference.savedOrDefaultValue
|
||||||
?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank")
|
?: return@map ValidationResult.ValidationError(
|
||||||
|
KotlinNewProjectWizardBundle.message(
|
||||||
|
"validation.should.not.be.blank",
|
||||||
|
setting.title.capitalize()
|
||||||
|
)
|
||||||
|
)
|
||||||
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
(setting.validator as SettingValidator<Any>).validate(this@settingValidator, value)
|
||||||
}.fold()
|
}.fold()
|
||||||
}
|
}
|
||||||
@@ -157,7 +171,7 @@ val Module.isRootModule
|
|||||||
get() = parent == null
|
get() = parent == null
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
fun MultiplatformTargetModule(name: String, configurator: ModuleConfigurator, sourcesets: List<Sourceset>) =
|
fun MultiplatformTargetModule(@NonNls name: String, configurator: ModuleConfigurator, sourcesets: List<Sourceset>) =
|
||||||
Module(
|
Module(
|
||||||
name,
|
name,
|
||||||
configurator,
|
configurator,
|
||||||
@@ -167,7 +181,7 @@ fun MultiplatformTargetModule(name: String, configurator: ModuleConfigurator, so
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
fun MultiplatformModule(name: String, targets: List<Module> = emptyList()) =
|
fun MultiplatformModule(@NonNls name: String, targets: List<Module> = emptyList()) =
|
||||||
Module(
|
Module(
|
||||||
name,
|
name,
|
||||||
MppModuleConfigurator,
|
MppModuleConfigurator,
|
||||||
@@ -177,7 +191,7 @@ fun MultiplatformModule(name: String, targets: List<Module> = emptyList()) =
|
|||||||
)
|
)
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
fun SingleplatformModule(name: String, sourcesets: List<Sourceset>) =
|
fun SingleplatformModule(@NonNls name: String, sourcesets: List<Sourceset>) =
|
||||||
Module(
|
Module(
|
||||||
name,
|
name,
|
||||||
JvmSinglePlatformModuleConfigurator,
|
JvmSinglePlatformModuleConfigurator,
|
||||||
|
|||||||
+5
-3
@@ -1,18 +1,20 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.settings.version
|
package org.jetbrains.kotlin.tools.projectWizard.settings.version
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||||
|
|
||||||
data class Version(override val text: String) : DisplayableSettingItem {
|
data class Version(@NonNls override val text: String) : DisplayableSettingItem {
|
||||||
override fun toString(): String = text
|
override fun toString(): String = text
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun fromString(string: String) = Version(string)
|
fun fromString(@NonNls string: String) = Version(string)
|
||||||
|
|
||||||
val parser: Parser<Version> = valueParser { value, path ->
|
val parser: Parser<Version> = valueParser { value, path ->
|
||||||
val (stringVersion) = value.parseAs<String>(path)
|
val (stringVersion) = value.parseAs<String>(path)
|
||||||
safe { fromString(stringVersion) }.mapFailure {
|
safe { fromString(stringVersion) }.mapFailure {
|
||||||
ParseError("Bad version format for setting `$path`")
|
ParseError(KotlinNewProjectWizardBundle.message("version.error.bad.format", path))
|
||||||
}.get()
|
}.get()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-2
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Writer
|
import org.jetbrains.kotlin.tools.projectWizard.core.Writer
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
@@ -10,11 +11,15 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.runTaskIrs
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.runTaskIrs
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
|
|
||||||
class ConsoleJvmApplicationTemplate : Template() {
|
class ConsoleJvmApplicationTemplate : Template() {
|
||||||
|
@NonNls
|
||||||
override val id: String = "consoleJvmApp"
|
override val id: String = "consoleJvmApp"
|
||||||
override val title: String = "Console Application"
|
|
||||||
override val description: String = """Simple “Hello World!” Kotlin/JVM application that works in the console"""
|
override val title: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.title")
|
||||||
|
override val description: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.description")
|
||||||
|
|
||||||
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.jvm)
|
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.jvm)
|
||||||
|
|
||||||
override fun Writer.getIrsToAddToBuildFile(
|
override fun Writer.getIrsToAddToBuildFile(
|
||||||
|
|||||||
+2
-1
@@ -1,5 +1,6 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
@@ -8,7 +9,7 @@ import java.nio.file.Paths
|
|||||||
|
|
||||||
// Should be used to create any kind of files in the generated project
|
// Should be used to create any kind of files in the generated project
|
||||||
// Except build files as they will be generated using IR
|
// Except build files as they will be generated using IR
|
||||||
data class FileTemplateDescriptor(val templateId: String, val relativePath: Path) {
|
data class FileTemplateDescriptor(@NonNls val templateId: String, val relativePath: Path) {
|
||||||
constructor(templateId: String) : this(
|
constructor(templateId: String) : this(
|
||||||
templateId,
|
templateId,
|
||||||
Paths.get(templateId).fileName.toString().removeSuffix(".vm").asPath()
|
Paths.get(templateId).fileName.toString().removeSuffix(".vm").asPath()
|
||||||
|
|||||||
+23
-7
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Writer
|
import org.jetbrains.kotlin.tools.projectWizard.core.Writer
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||||
@@ -22,11 +23,14 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositorie
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint
|
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
|
|
||||||
class KtorServerTemplate : Template() {
|
class KtorServerTemplate : Template() {
|
||||||
override val title: String = "Ktor Server"
|
override val title: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.title")
|
||||||
override val description: String = "Configurable Ktor web server for building web applications"
|
override val description: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.description")
|
||||||
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.jvm)
|
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.jvm)
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val id: String = "ktorServer"
|
override val id: String = "ktorServer"
|
||||||
|
|
||||||
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> =
|
override fun Writer.getRequiredLibraries(module: ModuleIR): List<DependencyIR> =
|
||||||
@@ -55,7 +59,10 @@ class KtorServerTemplate : Template() {
|
|||||||
FileTemplateDescriptor("$id/server.kt.vm", "server.kt".asPath()) asSrcOf SourcesetType.main
|
FileTemplateDescriptor("$id/server.kt.vm", "server.kt".asPath()) asSrcOf SourcesetType.main
|
||||||
)
|
)
|
||||||
|
|
||||||
val serverEngine by enumSetting<KtorServerEngine>("Ktor Server Engine", GenerationPhase.PROJECT_GENERATION)
|
val serverEngine by enumSetting<KtorServerEngine>(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine"),
|
||||||
|
GenerationPhase.PROJECT_GENERATION
|
||||||
|
)
|
||||||
|
|
||||||
val imports = InterceptionPoint("imports", emptyList<String>())
|
val imports = InterceptionPoint("imports", emptyList<String>())
|
||||||
val routes = InterceptionPoint("routes", emptyList<String>())
|
val routes = InterceptionPoint("routes", emptyList<String>())
|
||||||
@@ -65,7 +72,7 @@ class KtorServerTemplate : Template() {
|
|||||||
override val settings: List<TemplateSetting<*, *>> = listOf(serverEngine)
|
override val settings: List<TemplateSetting<*, *>> = listOf(serverEngine)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ktorArtifactDependency(name: String) = ArtifactBasedLibraryDependencyIR(
|
private fun ktorArtifactDependency(@NonNls name: String) = ArtifactBasedLibraryDependencyIR(
|
||||||
MavenArtifact(Repositories.KTOR_BINTRAY, "io.ktor", name),
|
MavenArtifact(Repositories.KTOR_BINTRAY, "io.ktor", name),
|
||||||
Version.fromString("1.2.6"),
|
Version.fromString("1.2.6"),
|
||||||
DependencyType.MAIN
|
DependencyType.MAIN
|
||||||
@@ -74,9 +81,18 @@ private fun ktorArtifactDependency(name: String) = ArtifactBasedLibraryDependenc
|
|||||||
|
|
||||||
@Suppress("MemberVisibilityCanBePrivate")
|
@Suppress("MemberVisibilityCanBePrivate")
|
||||||
enum class KtorServerEngine(val engineName: String, val dependencyName: String) : DisplayableSettingItem {
|
enum class KtorServerEngine(val engineName: String, val dependencyName: String) : DisplayableSettingItem {
|
||||||
Netty("Netty", dependencyName = "ktor-server-netty"),
|
Netty(
|
||||||
Tomcat("Tomcat", dependencyName = "ktor-server-tomcat"),
|
KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.netty"),
|
||||||
Jetty("Jetty", dependencyName = "ktor-server-jetty");
|
dependencyName = "ktor-server-netty"
|
||||||
|
),
|
||||||
|
Tomcat(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.tomcat"),
|
||||||
|
dependencyName = "ktor-server-tomcat"
|
||||||
|
),
|
||||||
|
Jetty(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.jetty"),
|
||||||
|
dependencyName = "ktor-server-jetty"
|
||||||
|
);
|
||||||
|
|
||||||
override val text: String
|
override val text: String
|
||||||
get() = engineName.capitalize()
|
get() = engineName.capitalize()
|
||||||
|
|||||||
+4
-2
@@ -15,10 +15,12 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs
|
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
|
|
||||||
class NativeConsoleApplicationTemplate : Template() {
|
class NativeConsoleApplicationTemplate : Template() {
|
||||||
override val title: String = "Native Application"
|
override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title")
|
||||||
override val description: String = "Simple Kotlin/Native application for your operating system"
|
override val description: String = KotlinNewProjectWizardBundle.message("module.template.native.console.description")
|
||||||
|
|
||||||
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.native)
|
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.native)
|
||||||
override val id: String = "nativeConsoleApp"
|
override val id: String = "nativeConsoleApp"
|
||||||
|
|
||||||
|
|||||||
+23
-9
@@ -6,6 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||||
|
|
||||||
|
|
||||||
|
import org.jetbrains.annotations.Nls
|
||||||
|
import org.jetbrains.annotations.NonNls
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
|
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||||
@@ -25,18 +27,25 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
|||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor
|
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
|
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
|
||||||
|
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
|
||||||
|
|
||||||
class SimpleJsClientTemplate : Template() {
|
class SimpleJsClientTemplate : Template() {
|
||||||
override val title: String = "Frontend Application"
|
override val title: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.title")
|
||||||
override val description: String = "Configurable Kotlin/JS frontend application"
|
override val description: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.description")
|
||||||
|
|
||||||
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.js)
|
override val moduleTypes: Set<ModuleType> = setOf(ModuleType.js)
|
||||||
|
|
||||||
|
@NonNls
|
||||||
override val id: String = "simpleJsClient"
|
override val id: String = "simpleJsClient"
|
||||||
|
|
||||||
override fun isApplicableTo(module: Module): Boolean =
|
override fun isApplicableTo(module: Module): Boolean =
|
||||||
module.configurator == JsBrowserTargetConfigurator
|
module.configurator == JsBrowserTargetConfigurator
|
||||||
|| module.configurator == JsSingleplatformModuleConfigurator
|
|| module.configurator == JsSingleplatformModuleConfigurator
|
||||||
|
|
||||||
val renderEngine by enumSetting<RenderEngine>("Rendering engine", GenerationPhase.PROJECT_GENERATION) {
|
val renderEngine by enumSetting<RenderEngine>(
|
||||||
|
KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.engine"),
|
||||||
|
GenerationPhase.PROJECT_GENERATION
|
||||||
|
) {
|
||||||
defaultValue = value(RenderEngine.REACT_WITH_STYLED)
|
defaultValue = value(RenderEngine.REACT_WITH_STYLED)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,12 +54,12 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
override fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = buildList {
|
override fun Reader.createRunConfigurations(module: ModuleIR): List<WizardRunConfiguration> = buildList {
|
||||||
if (module.originalModule.kind == ModuleKind.singleplatformJs) {
|
if (module.originalModule.kind == ModuleKind.singleplatformJs) {
|
||||||
+WizardGradleRunConfiguration(
|
+WizardGradleRunConfiguration(
|
||||||
"BrowserDevelopmentRun in continuous mode",
|
KotlinNewProjectWizardBundle.message("module.template.js.simple.run.configuration.dev"),
|
||||||
"browserDevelopmentRun",
|
"browserDevelopmentRun",
|
||||||
listOf("--continuous")
|
listOf("--continuous")
|
||||||
)
|
)
|
||||||
+WizardGradleRunConfiguration(
|
+WizardGradleRunConfiguration(
|
||||||
"BrowserProductionRun in continuous mode",
|
KotlinNewProjectWizardBundle.message("module.template.js.simple.run.configuration.prod"),
|
||||||
"browserProductionRun",
|
"browserProductionRun",
|
||||||
listOf("--continuous")
|
listOf("--continuous")
|
||||||
)
|
)
|
||||||
@@ -221,8 +230,13 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
@NonNls
|
||||||
private const val JS_OUTPUT_FILE_NAME = "output.js"
|
private const val JS_OUTPUT_FILE_NAME = "output.js"
|
||||||
|
|
||||||
|
@NonNls
|
||||||
private const val WEBPACK_TASK_CLASS = "KotlinWebpack"
|
private const val WEBPACK_TASK_CLASS = "KotlinWebpack"
|
||||||
|
|
||||||
|
@NonNls
|
||||||
private const val WEBPACK_TASK_SUFFIX = "BrowserProductionWebpack"
|
private const val WEBPACK_TASK_SUFFIX = "BrowserProductionWebpack"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -270,9 +284,9 @@ class SimpleJsClientTemplate : Template() {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class RenderEngine(override val text: String) : DisplayableSettingItem {
|
enum class RenderEngine(@Nls override val text: String) : DisplayableSettingItem {
|
||||||
KOTLINX_HTML("Use statically typed Kotlinx.html DSL"),
|
KOTLINX_HTML(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.kotlinx.html")),
|
||||||
REACT("Use Kotlin-wrapped React library"),
|
REACT(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react")),
|
||||||
REACT_WITH_STYLED("Use Kotlin-wrapped React framework together with Styled Components"),
|
REACT_WITH_STYLED(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react.styled"))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-1
@@ -5,7 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors
|
package org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors
|
||||||
|
|
||||||
data class InterceptionPoint<out T: Any>(val name: String, val initialValue: T)
|
import org.jetbrains.annotations.NonNls
|
||||||
|
|
||||||
|
data class InterceptionPoint<out T: Any>(@NonNls val name: String, val initialValue: T)
|
||||||
|
|
||||||
data class InterceptionPointModifier<out T : Any>(
|
data class InterceptionPointModifier<out T : Any>(
|
||||||
val point: InterceptionPoint<@UnsafeVariance T>,
|
val point: InterceptionPoint<@UnsafeVariance T>,
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package tasks
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.runTaskIrs
|
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
|
||||||
|
|
||||||
interface Task {
|
|
||||||
val name: String
|
|
||||||
fun createTaskIRs(moduleIR: ModuleIR, buildSystemType: BuildSystemType): List<BuildSystemIR>
|
|
||||||
}
|
|
||||||
|
|
||||||
class JvmRunTask(private val mainClass: String) : Task {
|
|
||||||
override val name: String = "Run task"
|
|
||||||
|
|
||||||
override fun createTaskIRs(moduleIR: ModuleIR, buildSystemType: BuildSystemType): List<BuildSystemIR> = buildList {
|
|
||||||
+runTaskIrs(mainClass)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user