Wizard: add module dependencies to modules from jvm -> jvm dependencies
This commit is contained in:
+2
-5
@@ -11,10 +11,7 @@ import com.intellij.openapi.projectRoots.SimpleJavaSdkType
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.PlatformTestCase
|
||||
import org.jetbrains.kotlin.test.testFramework.runWriteAction
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.BuildSystem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.TestWizardService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.assertSuccess
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.Services
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
@@ -64,7 +61,7 @@ abstract class AbstractNewWizardProjectImportTest : PlatformTestCase() {
|
||||
private fun doTest(directoryPath: String, buildSystem: BuildSystem) {
|
||||
val directory = Paths.get(directoryPath)
|
||||
|
||||
val parameters = ProjectImportingTestParameters.fromTestDataOrDefault(directory)
|
||||
val parameters = DefaultTestParameters.fromTestDataOrDefault(directory)
|
||||
if (!parameters.runForMaven && buildSystem == BuildSystem.MAVEN) return
|
||||
|
||||
val tempDirectory = Files.createTempDirectory(null)
|
||||
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.wizard
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.cli.TestParameters
|
||||
import java.nio.file.Path
|
||||
|
||||
data class ProjectImportingTestParameters(val runForMaven: Boolean = false) : TestParameters {
|
||||
companion object {
|
||||
fun fromTestDataOrDefault(directory: Path): ProjectImportingTestParameters =
|
||||
TestParameters.fromTestDataOrDefault(directory, PARAMETERS_FILE_NAME)
|
||||
|
||||
private const val PARAMETERS_FILE_NAME = "importParameters.txt"
|
||||
}
|
||||
}
|
||||
+30
@@ -50,6 +50,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependency")
|
||||
public void testJvmToJvmDependency() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
@@ -108,6 +118,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependency")
|
||||
public void testJvmToJvmDependency() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
@@ -166,6 +186,16 @@ public class YamlNewWizardProjectImportTestGenerated extends AbstractYamlNewWiza
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependency")
|
||||
public void testJvmToJvmDependency() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation project(':b')
|
||||
implementation project(':c')
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation(project(":b"))
|
||||
implementation(project(":c"))
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>a</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>a</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<artifactId>b</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>c</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation project(':c')
|
||||
implementation project(':d')
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation(project(":c"))
|
||||
implementation(project(":d"))
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>b</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>b</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<artifactId>c</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<artifactId>d</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>c</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>c</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation project(':a')
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation(project(":a"))
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>d</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>d</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<artifactId>a</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+31
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>testArtifactId</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>generatedProject</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<modules>
|
||||
<module>a</module>
|
||||
<module>b</module>
|
||||
<module>c</module>
|
||||
<module>d</module>
|
||||
</modules>
|
||||
</project>
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
rootProject.name = 'generatedProject'
|
||||
|
||||
|
||||
include(':a')
|
||||
include(':b')
|
||||
include(':c')
|
||||
include(':d')
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
|
||||
rootProject.name = "generatedProject"
|
||||
|
||||
|
||||
include(":a")
|
||||
include(":b")
|
||||
include(":c")
|
||||
include(":d")
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
// runForMaven true
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
kotlin:
|
||||
projectKind: Singleplatform
|
||||
modules:
|
||||
- type: JVM Module
|
||||
name: a
|
||||
dependencies:
|
||||
- b
|
||||
- c
|
||||
- type: JVM Module
|
||||
name: b
|
||||
dependencies:
|
||||
- c
|
||||
- d
|
||||
- type: JVM Module
|
||||
name: c
|
||||
- type: JVM Module
|
||||
name: d
|
||||
dependencies:
|
||||
- a
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
rootProject
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
rootProject
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation project(':b')
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm")
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
implementation(project(":b"))
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>c</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>c</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<artifactId>b</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>b</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>b</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<artifactId>a</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
|
||||
}
|
||||
group = 'testGroupId'
|
||||
version = '1.0-SNAPSHOT'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
testImplementation 'org.jetbrains.kotlin:kotlin-test-junit'
|
||||
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
|
||||
}
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.70"
|
||||
}
|
||||
group = "testGroupId"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
testImplementation(kotlin("test-junit"))
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
}
|
||||
tasks.withType<KotlinCompile>() {
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<artifactId>a</artifactId>
|
||||
<groupId>testGroupId</groupId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<name>a</name>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<kotlin.code.style>official</kotlin.code.style>
|
||||
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>mavenCentral</id>
|
||||
<url>https://repo1.maven.org/maven2/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<build>
|
||||
<sourceDirectory>src/main/kotlin</sourceDirectory>
|
||||
<testSourceDirectory>src/test/kotlin</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-maven-plugin</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>compile</id>
|
||||
<phase>compile</phase>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<phase>test-compile</phase>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-test-junit</artifactId>
|
||||
<version>1.3.70</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jetbrains.kotlin</groupId>
|
||||
<artifactId>kotlin-stdlib-jdk8</artifactId>
|
||||
<version>1.3.70</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
|
||||
rootProject.name = 'generatedProject'
|
||||
|
||||
|
||||
include(':b:c')
|
||||
include(':b')
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
|
||||
rootProject.name = "generatedProject"
|
||||
|
||||
|
||||
include(":b:c")
|
||||
include(":b")
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
// runForMaven true
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
kotlin:
|
||||
projectKind: Singleplatform
|
||||
modules:
|
||||
- type: JVM Module
|
||||
name: a
|
||||
subModules:
|
||||
- type: JVM Module
|
||||
name: b
|
||||
dependencies:
|
||||
- a
|
||||
subModules:
|
||||
- type: JVM Module
|
||||
name: c
|
||||
dependencies:
|
||||
- a.b
|
||||
+11
-6
@@ -19,12 +19,17 @@ abstract class AbstractBuildFileGenerationTest : UsefulTestCase() {
|
||||
|
||||
fun doTest(directoryPath: String) {
|
||||
val directory = Paths.get(directoryPath)
|
||||
val expectedDirectory = expectedDirectory(directory)
|
||||
|
||||
for (buildSystem in BuildSystem.values()) {
|
||||
if (Files.exists(expectedDirectory / buildSystem.buildFileName)) {
|
||||
doTest(directory, buildSystem)
|
||||
}
|
||||
val testParameters = DefaultTestParameters.fromTestDataOrDefault(directory)
|
||||
|
||||
val buildSystemsToRunFor = listOfNotNull(
|
||||
BuildSystem.GRADLE_KOTLIN_DSL,
|
||||
BuildSystem.GRADLE_GROOVY_DSL,
|
||||
if (testParameters.runForMaven) BuildSystem.MAVEN else null
|
||||
)
|
||||
|
||||
for (buildSystem in buildSystemsToRunFor) {
|
||||
doTest(directory, buildSystem)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +41,7 @@ abstract class AbstractBuildFileGenerationTest : UsefulTestCase() {
|
||||
|
||||
val expectedDirectory = expectedDirectory(directory)
|
||||
|
||||
compareFiles(
|
||||
compareFilesAndGenerateMissing(
|
||||
expectedDirectory.allBuildFiles(buildSystem), expectedDirectory,
|
||||
tempDirectory.allBuildFiles(buildSystem), tempDirectory
|
||||
)
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.cli
|
||||
|
||||
import java.nio.file.Path
|
||||
|
||||
data class DefaultTestParameters(val runForMaven: Boolean = false) : TestParameters {
|
||||
companion object {
|
||||
fun fromTestDataOrDefault(directory: Path): DefaultTestParameters =
|
||||
TestParameters.fromTestDataOrDefault(directory, PARAMETERS_FILE_NAME)
|
||||
|
||||
private const val PARAMETERS_FILE_NAME = "parameters.txt"
|
||||
}
|
||||
}
|
||||
+10
@@ -48,6 +48,16 @@ public class YamlBuildFileGenerationTestGenerated extends AbstractYamlBuildFileG
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmTargetWithJava/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependency")
|
||||
public void testJvmToJvmDependency() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependency/");
|
||||
}
|
||||
|
||||
@TestMetadata("jvmToJvmDependencyWithSingleRoot")
|
||||
public void testJvmToJvmDependencyWithSingleRoot() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/jvmToJvmDependencyWithSingleRoot/");
|
||||
}
|
||||
|
||||
@TestMetadata("kotlinJvm")
|
||||
public void testKotlinJvm() throws Exception {
|
||||
runTest("libraries/tools/new-project-wizard/new-project-wizard-cli/testData/buildFileGeneration/kotlinJvm/");
|
||||
|
||||
+14
-5
@@ -10,9 +10,11 @@ import org.hamcrest.core.Is
|
||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ExceptionError
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.div
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.onFailure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.junit.Assert.assertThat
|
||||
import org.junit.Assert.fail
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
import java.util.stream.Collectors
|
||||
@@ -24,17 +26,24 @@ internal fun Path.listFiles(filter: (Path) -> Boolean) =
|
||||
Files.isRegularFile(path) && filter(path)
|
||||
}.collect(Collectors.toList()).sorted()
|
||||
|
||||
internal fun compareFiles(
|
||||
internal fun compareFilesAndGenerateMissing(
|
||||
expectedFiles: List<Path>, expectedDir: Path,
|
||||
actualFiles: List<Path>, actualDir: Path
|
||||
) {
|
||||
val expectedFilesSorted = expectedFiles.sorted()
|
||||
val actualFilesSorted = actualFiles.sorted()
|
||||
|
||||
assertThat(
|
||||
actualFilesSorted.map { actualDir.relativize(it) },
|
||||
Is.`is`(expectedFilesSorted.map { expectedDir.relativize(it) })
|
||||
)
|
||||
val missingFiles =
|
||||
actualFiles.map(actualDir::relativize).toSet() - expectedFiles.map(expectedDir::relativize).toSet()
|
||||
|
||||
if (missingFiles.isNotEmpty()) {
|
||||
missingFiles.forEach { missingFile ->
|
||||
val targetFile = expectedDir / missingFile
|
||||
Files.createDirectories(targetFile.parent)
|
||||
Files.copy(actualDir / missingFile, targetFile)
|
||||
}
|
||||
fail("The following files was missed: $missingFiles and thus was generated")
|
||||
}
|
||||
|
||||
for ((actualFile, expectedFile) in actualFilesSorted zip expectedFilesSorted) {
|
||||
KotlinTestUtils.assertEqualsToFile(expectedFile.toFile(), actualFile.readFile())
|
||||
|
||||
+3
-1
@@ -23,7 +23,6 @@ fun <V> inValidatorContext(validator: Reader.(V) -> SettingValidator<V>) =
|
||||
}
|
||||
|
||||
|
||||
|
||||
object StringValidators {
|
||||
fun shouldNotBeBlank(name: String) = settingValidator { value: String ->
|
||||
if (value.isBlank()) ValidationResult.ValidationError("${name.capitalize()} should not be blank ")
|
||||
@@ -69,6 +68,9 @@ sealed class ValidationResult {
|
||||
companion object {
|
||||
fun create(condition: Boolean, message: String) =
|
||||
if (condition) OK else ValidationError(message)
|
||||
|
||||
inline fun create(condition: Boolean, message: () -> String) =
|
||||
if (condition) OK else ValidationError(message())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+7
-1
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
|
||||
import java.io.IOException
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
|
||||
abstract class Error {
|
||||
abstract val message: String
|
||||
@@ -55,4 +56,9 @@ data class ValidationError(val validationMessage: String) : Error() {
|
||||
get() = validationMessage.capitalize()
|
||||
}
|
||||
|
||||
data class ProjectImportingError(override val message: String) : Error()
|
||||
data class ProjectImportingError(override val message: String) : Error()
|
||||
|
||||
data class InvalidModuleDependencyError(val from: Module, val to: Module) : Error() {
|
||||
override val message: String
|
||||
get() = "Invalid module dependency from module ${from.name} to ${to.name}"
|
||||
}
|
||||
+5
-5
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.AndroidPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
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.templates.TemplatesPlugin
|
||||
@@ -49,7 +49,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+GradleOnlyPluginByNameIR(reader.createAndroidPlugin(module).pluginName)
|
||||
@@ -73,7 +73,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
|
||||
override fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
buildList {
|
||||
@@ -85,7 +85,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator,
|
||||
}
|
||||
|
||||
|
||||
override fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? =
|
||||
override fun createStdlibType(configurationData: ModulesToIrConversionData, module: Module): StdlibType? =
|
||||
StdlibType.StdlibJdk7
|
||||
|
||||
object FileTemplateDescriptors {
|
||||
@@ -137,7 +137,7 @@ object AndroidTargetConfigurator : TargetConfigurator,
|
||||
}
|
||||
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = computeM {
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
@@ -27,7 +27,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+super<AndroidModuleConfigurator>.createBuildFileIRs(reader, configurationData, module)
|
||||
@@ -47,7 +47,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
|
||||
override fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
) = buildList<BuildSystemIR> {
|
||||
+super<AndroidModuleConfigurator>.createModuleIRs(reader, configurationData, module)
|
||||
@@ -66,7 +66,7 @@ object AndroidSinglePlatformModuleConfigurator :
|
||||
}
|
||||
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = computeM {
|
||||
|
||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
@@ -26,7 +26,7 @@ object IOSSinglePlatformModuleConfigurator :
|
||||
override val requiresRootBuildFile: Boolean = true
|
||||
|
||||
override fun Writer.runArbitraryTask(
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> {
|
||||
|
||||
+3
-3
@@ -11,7 +11,7 @@ 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.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
@@ -30,7 +30,7 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
||||
|
||||
override val canContainSubModules = false
|
||||
|
||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
KotlinBuildSystemPluginIR(
|
||||
KotlinBuildSystemPluginIR.Type.js,
|
||||
version = configurationData.kotlinVersion
|
||||
@@ -38,7 +38,7 @@ object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWi
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
+RawGradleIR {
|
||||
|
||||
+7
-7
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.correspondingStdlib
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
@@ -206,27 +206,27 @@ interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor {
|
||||
|
||||
fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
emptyList()
|
||||
|
||||
fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
emptyList()
|
||||
|
||||
fun createStdlibType(configurationData: ModuleConfigurationData, module: Module): StdlibType? =
|
||||
fun createStdlibType(configurationData: ModulesToIrConversionData, module: Module): StdlibType? =
|
||||
safeAs<ModuleConfiguratorWithModuleType>()?.moduleType?.correspondingStdlib()
|
||||
|
||||
fun createRootBuildFileIrs(configurationData: ModuleConfigurationData): List<BuildSystemIR> = emptyList()
|
||||
fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
fun createRootBuildFileIrs(configurationData: ModulesToIrConversionData): List<BuildSystemIR> = emptyList()
|
||||
fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
null
|
||||
|
||||
fun Writer.runArbitraryTask(
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module,
|
||||
modulePath: Path
|
||||
): TaskResult<Unit> = UNIT_SUCCESS
|
||||
|
||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinArbitraryDependencyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
@@ -40,7 +40,7 @@ interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings {
|
||||
|
||||
override fun createModuleIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
withSettingsOf(module) {
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleImpo
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.RawGradleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.NonDefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
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.printer.GradlePrinter
|
||||
@@ -80,7 +80,7 @@ object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenc
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> = buildList {
|
||||
if (configurationData.buildSystemType == BuildSystemType.GradleGroovyDsl) {
|
||||
|
||||
+4
-4
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven.MavenProper
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurationData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
@@ -59,7 +59,7 @@ object MppModuleConfigurator : ModuleConfigurator {
|
||||
override val text = "Multiplatform"
|
||||
override val canContainSubModules = true
|
||||
|
||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
KotlinBuildSystemPluginIR(
|
||||
KotlinBuildSystemPluginIR.Type.multiplatform,
|
||||
version = configurationData.kotlinVersion
|
||||
@@ -83,7 +83,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
||||
|
||||
override val canContainSubModules = true
|
||||
|
||||
override fun createKotlinPluginIR(configurationData: ModuleConfigurationData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? =
|
||||
KotlinBuildSystemPluginIR(
|
||||
KotlinBuildSystemPluginIR.Type.jvm,
|
||||
version = configurationData.kotlinVersion
|
||||
@@ -92,7 +92,7 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator,
|
||||
|
||||
override fun createBuildFileIRs(
|
||||
reader: Reader,
|
||||
configurationData: ModuleConfigurationData,
|
||||
configurationData: ModulesToIrConversionData,
|
||||
module: Module
|
||||
): List<BuildSystemIR> =
|
||||
buildList {
|
||||
|
||||
+17
-1
@@ -4,6 +4,7 @@ import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.fold
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.kotlinVersionKind
|
||||
@@ -57,6 +58,8 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
)
|
||||
}.fold()
|
||||
}
|
||||
|
||||
validate(moduleDependenciesValidator)
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +106,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
private fun Writer.createBuildFiles(modules: List<Module>): TaskResult<List<BuildFileIR>> =
|
||||
with(
|
||||
ModulesToIRsConverter(
|
||||
ModuleConfigurationData(
|
||||
ModulesToIrConversionData(
|
||||
modules,
|
||||
projectPath,
|
||||
StructurePlugin::name.settingValue,
|
||||
@@ -120,6 +123,19 @@ class KotlinPlugin(context: Context) : Plugin(context) {
|
||||
// TODO update default versions
|
||||
private val DEFAULT_VERSION = Version.fromString("1.3.61")
|
||||
|
||||
private val moduleDependenciesValidator = settingValidator<List<Module>> { modules ->
|
||||
val allModules = modules.withAllSubModules(includeSourcesets = true).toSet()
|
||||
val allModulePaths = allModules.map(Module::path).toSet()
|
||||
allModules.flatMap { module ->
|
||||
module.dependencies.map { dependency ->
|
||||
val isValidModule = when (dependency) {
|
||||
is ModuleReference.ByPath -> dependency.path in allModulePaths
|
||||
is ModuleReference.ByModule -> dependency.module in allModules
|
||||
}
|
||||
ValidationResult.create(isValidModule) { "Invalid module dependency $dependency of module ${module.path}" }
|
||||
}
|
||||
}.fold()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+25
-37
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import java.nio.file.Path
|
||||
|
||||
data class ModuleConfigurationData(
|
||||
data class ModulesToIrConversionData(
|
||||
val rootModules: List<Module>,
|
||||
val projectPath: Path,
|
||||
val projectName: String,
|
||||
@@ -24,6 +24,9 @@ data class ModuleConfigurationData(
|
||||
val writer: Writer
|
||||
) {
|
||||
val allModules = rootModules.withAllSubModules()
|
||||
val isSingleRootModuleMode = rootModules.size == 1
|
||||
|
||||
val moduleByPath = rootModules.withAllSubModules(includeSourcesets = true).associateBy(Module::path)
|
||||
}
|
||||
|
||||
private data class ModulesToIrsState(
|
||||
@@ -38,9 +41,8 @@ private fun ModulesToIrsState.stateForSubModule(currentModulePath: Path) =
|
||||
)
|
||||
|
||||
class ModulesToIRsConverter(
|
||||
val data: ModuleConfigurationData
|
||||
val data: ModulesToIrConversionData
|
||||
) {
|
||||
private val isSingleRootModuleMode = data.rootModules.size == 1
|
||||
|
||||
// TODO get rid of mutable state
|
||||
private val rootBuildFileIrs = mutableListOf<BuildSystemIR>()
|
||||
@@ -53,7 +55,7 @@ class ModulesToIRsConverter(
|
||||
if ( // We want to have root build file for android or ios projects
|
||||
data.allModules.any { it.configurator.requiresRootBuildFile }
|
||||
) return false
|
||||
return isSingleRootModuleMode
|
||||
return data.isSingleRootModuleMode
|
||||
}
|
||||
|
||||
private fun calculatePathForModule(module: Module, rootPath: Path) = when {
|
||||
@@ -99,22 +101,26 @@ class ModulesToIRsConverter(
|
||||
module: Module,
|
||||
configurator: SinglePlatformModuleConfigurator,
|
||||
state: ModulesToIrsState
|
||||
): TaskResult<List<BuildFileIR>> = with(data) {
|
||||
): TaskResult<List<BuildFileIR>> = computeM {
|
||||
val modulePath = calculatePathForModule(module, state.parentPath)
|
||||
writer.mutateProjectStructureByModuleConfigurator(module, modulePath)
|
||||
val (moduleDependencies) = module.dependencies.mapCompute { dependency ->
|
||||
val to = data.moduleByPath.getValue(dependency.path)
|
||||
val (dependencyType) = ModuleDependencyType.getPossibleDependencyType(module, to)
|
||||
.toResult { InvalidModuleDependencyError(module, to) }
|
||||
dependencyType.createDependencyIrs(module, to, data)
|
||||
}.sequence()
|
||||
data.writer.mutateProjectStructureByModuleConfigurator(module, modulePath)
|
||||
val buildFileIR = run {
|
||||
if (!configurator.needCreateBuildFile) return@run null
|
||||
val dependenciesIRs = buildPersistenceList<BuildSystemIR> {
|
||||
+module.sourcesets.flatMap { sourceset ->
|
||||
sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }
|
||||
}
|
||||
+moduleDependencies
|
||||
with(configurator) { +createModuleIRs(this@createSinglePlatformModule, data, module) }
|
||||
addIfNotNull(
|
||||
configurator.createStdlibType(data, module)?.let { stdlibType ->
|
||||
KotlinStdlibDependencyIR(
|
||||
type = stdlibType,
|
||||
isInMppModule = false,
|
||||
version = kotlinVersion,
|
||||
version = data.kotlinVersion,
|
||||
dependencyType = DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
@@ -122,7 +128,7 @@ class ModulesToIRsConverter(
|
||||
}
|
||||
|
||||
val moduleIr = SingleplatformModuleIR(
|
||||
if (modulePath == projectPath) projectName else module.name,
|
||||
if (modulePath == data.projectPath) data.projectName else module.name,
|
||||
modulePath,
|
||||
dependenciesIRs,
|
||||
module.template,
|
||||
@@ -131,7 +137,7 @@ class ModulesToIRsConverter(
|
||||
SingleplatformSourcesetIR(
|
||||
sourceset.sourcesetType,
|
||||
modulePath / Defaults.SRC_DIR / sourceset.sourcesetType.name,
|
||||
sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }.toPersistentList(),
|
||||
persistentListOf(),
|
||||
sourceset
|
||||
)
|
||||
}
|
||||
@@ -143,17 +149,17 @@ class ModulesToIRsConverter(
|
||||
moduleIr,
|
||||
persistentListOf()
|
||||
),
|
||||
pomIr.copy(artifactId = module.name),
|
||||
data.pomIr.copy(artifactId = module.name),
|
||||
createBuildFileIRs(module, state)
|
||||
)
|
||||
}
|
||||
|
||||
return module.subModules.mapSequence { subModule ->
|
||||
createBuildFileForModule(
|
||||
subModule,
|
||||
state.stateForSubModule(modulePath)
|
||||
)
|
||||
}.map { it.flatten() }
|
||||
module.subModules.mapSequence { subModule ->
|
||||
createBuildFileForModule(
|
||||
subModule,
|
||||
state.stateForSubModule(modulePath)
|
||||
)
|
||||
}.map { it.flatten() }
|
||||
.map { children ->
|
||||
buildFileIR?.let { children + it } ?: children
|
||||
}
|
||||
@@ -194,7 +200,6 @@ class ModulesToIRsConverter(
|
||||
val sourcesetss = target.sourcesets.map { sourceset ->
|
||||
val sourcesetName = target.name + sourceset.sourcesetType.name.capitalize()
|
||||
val sourcesetIrs = buildList<BuildSystemIR> {
|
||||
+sourceset.dependencies.map { it.toIR(sourceset.sourcesetType.toDependencyType()) }
|
||||
if (sourceset.sourcesetType == SourcesetType.main) {
|
||||
addIfNotNull(
|
||||
target.configurator.createStdlibType(data, target)?.let { stdlibType ->
|
||||
@@ -257,21 +262,4 @@ class ModulesToIRsConverter(
|
||||
addIfNotNull(kotlinPlugin)
|
||||
+with(module.configurator) { createBuildFileIRs(this@createBuildFileIRs, data, module) }
|
||||
}
|
||||
|
||||
private fun SourcesetDependency.toIR(type: DependencyType): DependencyIR = with(data) {
|
||||
val path = when (this@toIR) {
|
||||
is ModuleBasedSourcesetDependency -> module.path
|
||||
is PathBasedSourcesetDependency -> path
|
||||
}
|
||||
val modulePomIr = when (this@toIR) {
|
||||
is ModuleBasedSourcesetDependency -> pomIr.copy(artifactId = module.name)
|
||||
is PathBasedSourcesetDependency -> pomIr.copy(artifactId = path.parts.last())
|
||||
}
|
||||
return when {
|
||||
isSingleRootModuleMode
|
||||
&& path.parts.singleOrNull() == rootModules.single().name
|
||||
&& buildSystemType.isGradle -> GradleRootProjectDependencyIR(type)
|
||||
else -> ModuleDependencyIR(path, modulePomIr, type)
|
||||
}
|
||||
}
|
||||
}
|
||||
+13
-1
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||
|
||||
import kotlinx.collections.immutable.PersistentList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner
|
||||
@@ -33,6 +34,7 @@ class Module(
|
||||
var template: Template?,
|
||||
val sourcesets: List<Sourceset>,
|
||||
subModules: List<Module>,
|
||||
val dependencies: MutableList<ModuleReference> = mutableListOf(),
|
||||
var parent: Module? = null,
|
||||
override val identificator: Identificator = GeneratedIdentificator(name)
|
||||
) : DisplayableSettingItem, Validatable<Module>, IdentificatorOwner {
|
||||
@@ -86,7 +88,16 @@ class Module(
|
||||
}.nullableValue()
|
||||
val sourcesets = listOf(Sourceset(SourcesetType.main), Sourceset(SourcesetType.test))
|
||||
val (submodules) = map.parseValue(this, path, "subModules", listParser(Module.parser)) { emptyList() }
|
||||
Module(name, configurator, template, sourcesets, submodules, identificator = identificator)
|
||||
val (dependencies) = map.parseValue(this, path, "dependencies", listParser(ModuleReference.ByPath.parser)) { emptyList() }
|
||||
Module(
|
||||
name,
|
||||
configurator,
|
||||
template,
|
||||
sourcesets,
|
||||
submodules,
|
||||
dependencies = dependencies.toMutableList(),
|
||||
identificator = identificator
|
||||
)
|
||||
}
|
||||
|
||||
private val moduleNameValidator = settingValidator<Module> { module ->
|
||||
@@ -138,6 +149,7 @@ val Module.path
|
||||
.asReversed()
|
||||
.let(::ModulePath)
|
||||
|
||||
|
||||
val Sourceset.path
|
||||
get() = ModulePath(parent?.path?.parts.orEmpty() + sourcesetType.name)
|
||||
|
||||
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.GradleRootProjectDependencyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleDependencyIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JvmSinglePlatformModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
sealed class ModuleDependencyType(
|
||||
val from: KClass<out ModuleConfigurator>,
|
||||
val to: KClass<out ModuleConfigurator>
|
||||
) {
|
||||
fun accepts(from: Module, to: Module) =
|
||||
this.from.isInstance(from.configurator) && this.to.isInstance(to.configurator)
|
||||
|
||||
open fun createDependencyIrs(from: Module, to: Module, data: ModulesToIrConversionData): BuildSystemIR {
|
||||
val path = to.path
|
||||
val modulePomIr = data.pomIr.copy(artifactId = to.name)
|
||||
return when {
|
||||
data.isSingleRootModuleMode
|
||||
&& to.path.parts.singleOrNull() == data.rootModules.single().name
|
||||
&& data.buildSystemType.isGradle -> GradleRootProjectDependencyIR(DependencyType.MAIN)
|
||||
else -> ModuleDependencyIR(
|
||||
path.considerSingleRootModuleMode(data.isSingleRootModuleMode),
|
||||
modulePomIr,
|
||||
DependencyType.MAIN
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
object JVMSinglePlatformToJVMSinglePlatform : ModuleDependencyType(
|
||||
from = JvmSinglePlatformModuleConfigurator::class,
|
||||
to = JvmSinglePlatformModuleConfigurator::class
|
||||
)
|
||||
|
||||
companion object {
|
||||
private val ALL = listOf(
|
||||
JVMSinglePlatformToJVMSinglePlatform
|
||||
)
|
||||
|
||||
fun getPossibleDependencyType(from: Module, to: Module): ModuleDependencyType? =
|
||||
ALL.firstOrNull { it.accepts(from, to) }
|
||||
}
|
||||
}
|
||||
+29
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.parse
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.valueParser
|
||||
|
||||
sealed class ModuleReference {
|
||||
abstract val path: ModulePath
|
||||
|
||||
data class ByPath(override val path: ModulePath) : ModuleReference() {
|
||||
companion object {
|
||||
val parser = valueParser { value, path ->
|
||||
val (modulePath) = ModulePath.parser.parse(this, value, path)
|
||||
ByPath(modulePath)
|
||||
}
|
||||
}
|
||||
|
||||
override fun toString(): String = path.toString()
|
||||
}
|
||||
|
||||
data class ByModule(val module: Module) : ModuleReference() {
|
||||
override val path: ModulePath get() = module.path
|
||||
override fun toString(): String = module.name
|
||||
}
|
||||
}
|
||||
+15
-1
@@ -11,8 +11,22 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemP
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
|
||||
inline class ModulePath(val parts: List<String>) {
|
||||
constructor(path: String) : this(path.trim().split('.'))
|
||||
|
||||
fun asString(separator: String = ".") = parts.joinToString(separator)
|
||||
override fun toString(): String = asString()
|
||||
|
||||
companion object {
|
||||
val parser = valueParser { value, path ->
|
||||
val (stringPath) = value.parseAs<String>(path)
|
||||
ModulePath(stringPath)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun ModulePath.considerSingleRootModuleMode(isSingleRootMode: Boolean) = when {
|
||||
isSingleRootMode && parts.size > 1 -> ModulePath(parts.subList(1, parts.size))
|
||||
else -> this
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +69,7 @@ class Sourceset(
|
||||
}
|
||||
|
||||
@Suppress("EnumEntryName")
|
||||
enum class SourcesetType: DisplayableSettingItem {
|
||||
enum class SourcesetType : DisplayableSettingItem {
|
||||
main, test;
|
||||
|
||||
override val text: String
|
||||
|
||||
Reference in New Issue
Block a user