Don't show pre-1.1.0 version of Kotlin in version chooser when configuring JS projects

#KT-16400 Fixed
This commit is contained in:
Dmitry Jemerov
2017-03-10 17:59:17 +01:00
parent 8e26d5257f
commit b1a65e4c74
7 changed files with 22 additions and 21 deletions
@@ -44,6 +44,8 @@ class KotlinJavascriptMavenConfigurator : KotlinMavenConfigurator(null, false, K
override val targetPlatform: TargetPlatform override val targetPlatform: TargetPlatform
get() = JsPlatform get() = JsPlatform
override fun getMinimumSupportedVersion() = "1.1.0"
companion object { companion object {
private val NAME = "js maven" private val NAME = "js maven"
private val PRESENTABLE_TEXT = "JavaScript Maven" private val PRESENTABLE_TEXT = "JavaScript Maven"
@@ -97,7 +97,7 @@ abstract class KotlinMavenConfigurator
} }
override fun configure(project: Project, excludeModules: Collection<Module>) { override fun configure(project: Project, excludeModules: Collection<Module>) {
val dialog = ConfigureDialogWithModulesAndVersion(project, this, excludeModules) val dialog = ConfigureDialogWithModulesAndVersion(project, this, excludeModules, getMinimumSupportedVersion())
dialog.show() dialog.show()
if (!dialog.isOK) return if (!dialog.isOK) return
@@ -118,6 +118,8 @@ abstract class KotlinMavenConfigurator
} }
} }
protected open fun getMinimumSupportedVersion() = "1.0.0"
protected abstract fun isKotlinModule(module: Module): Boolean protected abstract fun isKotlinModule(module: Module): Boolean
protected abstract fun isRelevantGoal(goalName: String): Boolean protected abstract fun isRelevantGoal(goalName: String): Boolean
@@ -27,6 +27,7 @@ class KotlinJsGradleModuleConfigurator : KotlinWithGradleConfigurator() {
override val targetPlatform: TargetPlatform = JsPlatform override val targetPlatform: TargetPlatform = JsPlatform
override val applyPluginDirective: String = APPLY_KOTLIN_JS override val applyPluginDirective: String = APPLY_KOTLIN_JS
override fun getMinimumSupportedVersion() = "1.1.0"
override fun getDependencyDirective(sdk: Sdk?, version: String): String { override fun getDependencyDirective(sdk: Sdk?, version: String): String {
return KotlinWithGradleConfigurator.getDependencySnippet(MAVEN_JS_STDLIB_ID) return KotlinWithGradleConfigurator.getDependencySnippet(MAVEN_JS_STDLIB_ID)
@@ -76,6 +76,8 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
return KotlinPluginUtil.isGradleModule(module) && !KotlinPluginUtil.isAndroidGradleModule(module) return KotlinPluginUtil.isGradleModule(module) && !KotlinPluginUtil.isAndroidGradleModule(module)
} }
protected open fun getMinimumSupportedVersion() = "1.0.0"
private fun isFileConfigured(projectGradleFile: GroovyFile): Boolean { private fun isFileConfigured(projectGradleFile: GroovyFile): Boolean {
val fileText = projectGradleFile.text val fileText = projectGradleFile.text
return containsDirective(fileText, applyPluginDirective) && return containsDirective(fileText, applyPluginDirective) &&
@@ -85,7 +87,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
@JvmSuppressWildcards @JvmSuppressWildcards
override fun configure(project: Project, excludeModules: Collection<Module>) { override fun configure(project: Project, excludeModules: Collection<Module>) {
val dialog = ConfigureDialogWithModulesAndVersion(project, this, excludeModules) val dialog = ConfigureDialogWithModulesAndVersion(project, this, excludeModules, getMinimumSupportedVersion())
dialog.show() dialog.show()
if (!dialog.isOK) return if (!dialog.isOK) return
@@ -57,6 +57,7 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper {
private static final String EAP_VERSIONS_URL = private static final String EAP_VERSIONS_URL =
"https://bintray.com/kotlin/kotlin-eap/kotlin/"; "https://bintray.com/kotlin/kotlin-eap/kotlin/";
@NotNull private final String minimumVersion;
private final ChooseModulePanel chooseModulePanel; private final ChooseModulePanel chooseModulePanel;
@@ -70,12 +71,14 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper {
public ConfigureDialogWithModulesAndVersion( public ConfigureDialogWithModulesAndVersion(
@NotNull Project project, @NotNull Project project,
@NotNull KotlinProjectConfigurator configurator, @NotNull KotlinProjectConfigurator configurator,
@NotNull Collection<Module> excludeModules @NotNull Collection<Module> excludeModules,
@NotNull String minimumVersion
) { ) {
super(project); super(project);
setTitle("Configure Kotlin in Project"); setTitle("Configure Kotlin in Project");
this.minimumVersion = minimumVersion;
init(); init();
ProgressManager.getInstance().run(new Task.Backgroundable(project, "Find Kotlin Maven plugin versions", false) { ProgressManager.getInstance().run(new Task.Backgroundable(project, "Find Kotlin Maven plugin versions", false) {
@@ -121,7 +124,7 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper {
private void loadKotlinVersions() { private void loadKotlinVersions() {
Collection<String> items; Collection<String> items;
try { try {
items = loadVersions(); items = loadVersions(minimumVersion);
hideLoader(); hideLoader();
} }
catch (Throwable t) { catch (Throwable t) {
@@ -169,7 +172,7 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper {
} }
@NotNull @NotNull
protected static Collection<String> loadVersions() throws Exception { protected static Collection<String> loadVersions(String minimumVersion) throws Exception {
List<String> versions = Lists.newArrayList(); List<String> versions = Lists.newArrayList();
String bundledRuntimeVersion = KotlinRuntimeLibraryUtilKt.bundledRuntimeVersion(); String bundledRuntimeVersion = KotlinRuntimeLibraryUtilKt.bundledRuntimeVersion();
@@ -204,7 +207,7 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper {
for (JsonElement element : docsElements) { for (JsonElement element : docsElements) {
String versionNumber = element.getAsJsonObject().get("v").getAsString(); String versionNumber = element.getAsJsonObject().get("v").getAsString();
if (VersionComparatorUtil.compare("1.0.0", versionNumber) <= 0) { if (VersionComparatorUtil.compare(minimumVersion, versionNumber) <= 0) {
versions.add(versionNumber); versions.add(versionNumber);
} }
} }
@@ -17,10 +17,7 @@
package org.jetbrains.kotlin.idea.configuration; package org.jetbrains.kotlin.idea.configuration;
import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.framework.library.LibraryVersionProperties;
import com.intellij.openapi.application.PathMacros;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments;
@@ -30,7 +27,6 @@ import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider;
import org.jetbrains.kotlin.idea.framework.KotlinLibraryUtilKt; import org.jetbrains.kotlin.idea.framework.KotlinLibraryUtilKt;
import org.jetbrains.kotlin.idea.project.PlatformKt; import org.jetbrains.kotlin.idea.project.PlatformKt;
import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt; import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt;
import org.jetbrains.kotlin.utils.PathUtil;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -174,15 +170,6 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest {
assertEquals("1.0.6", properties.getVersionString()); assertEquals("1.0.6", properties.getVersionString());
} }
private void doTestConfigureModulesWithNonDefaultSetup(KotlinWithLibraryConfigurator configurator) {
assertNoFilesInDefaultPaths();
Module[] modules = getModules();
for (Module module : modules) {
assertNotConfigured(module, configurator);
}
}
@SuppressWarnings("ConstantConditions") @SuppressWarnings("ConstantConditions")
public void testJvmProjectWithV1FacetConfig() { public void testJvmProjectWithV1FacetConfig() {
KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getSettings(getModule()); KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getSettings(getModule());
@@ -17,12 +17,16 @@
package org.jetbrains.kotlin.idea.framework.ui; package org.jetbrains.kotlin.idea.framework.ui;
import com.intellij.testFramework.LightIdeaTestCase; import com.intellij.testFramework.LightIdeaTestCase;
import com.intellij.util.text.VersionComparatorUtil;
import java.util.Collection; import java.util.Collection;
public class LoadVersionsFromMavenTest extends LightIdeaTestCase { public class LoadVersionsFromMavenTest extends LightIdeaTestCase {
public void testDownload() throws Exception { public void testDownload() throws Exception {
Collection<String> versions = ConfigureDialogWithModulesAndVersion.loadVersions(); Collection<String> versions = ConfigureDialogWithModulesAndVersion.loadVersions("1.0.0");
assert versions.size() > 0; assertTrue(versions.size() > 0);
for (String version : versions) {
assertTrue(VersionComparatorUtil.compare(version, "1.0.0") >= 0);
}
} }
} }