mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[gradle] allow to choose *.gradle.kts file in "attach project" action IDEA-193640
This commit is contained in:
@@ -22,9 +22,9 @@ import com.intellij.openapi.externalSystem.util.ExternalSystemConstants;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptor;
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory;
|
||||
import com.intellij.openapi.fileChooser.FileTypeDescriptor;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.io.FileFilters;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.util.containers.ContainerUtilRt;
|
||||
import com.intellij.util.containers.Stack;
|
||||
import org.gradle.tooling.model.GradleProject;
|
||||
@@ -47,6 +47,10 @@ import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
import java.util.Properties;
|
||||
|
||||
import static com.intellij.openapi.util.text.StringUtil.*;
|
||||
import static org.jetbrains.plugins.gradle.util.GradleConstants.EXTENSION;
|
||||
import static org.jetbrains.plugins.gradle.util.GradleConstants.KOTLIN_DSL_SCRIPT_EXTENSION;
|
||||
|
||||
/**
|
||||
* Holds miscellaneous utility methods.
|
||||
*
|
||||
@@ -67,7 +71,10 @@ public class GradleUtil {
|
||||
*/
|
||||
@NotNull
|
||||
public static FileChooserDescriptor getGradleProjectFileChooserDescriptor() {
|
||||
return FileChooserDescriptorFactory.createSingleFileDescriptor(GradleConstants.EXTENSION);
|
||||
return new FileChooserDescriptor(true, false, false, false, false, false)
|
||||
.withFileFilter(file -> SystemInfo.isFileSystemCaseSensitive
|
||||
? endsWith(file.getName(), "." + EXTENSION) || endsWith(file.getName(), "." + KOTLIN_DSL_SCRIPT_EXTENSION)
|
||||
: endsWithIgnoreCase(file.getName(), "." + EXTENSION) || endsWithIgnoreCase(file.getName(), "." + KOTLIN_DSL_SCRIPT_EXTENSION));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -98,17 +105,17 @@ public class GradleUtil {
|
||||
reader = new BufferedReader(new FileReader(wrapperPropertiesFile));
|
||||
props.load(reader);
|
||||
String distributionUrl = props.getProperty(WrapperExecutor.DISTRIBUTION_URL_PROPERTY);
|
||||
if(StringUtil.isEmpty(distributionUrl)) {
|
||||
if(isEmpty(distributionUrl)) {
|
||||
throw new ExternalSystemException("Wrapper 'distributionUrl' property does not exist!");
|
||||
} else {
|
||||
wrapperConfiguration.setDistribution(prepareDistributionUri(distributionUrl, wrapperPropertiesFile));
|
||||
}
|
||||
String distributionPath = props.getProperty(WrapperExecutor.DISTRIBUTION_PATH_PROPERTY);
|
||||
if(!StringUtil.isEmpty(distributionPath)) {
|
||||
if(!isEmpty(distributionPath)) {
|
||||
wrapperConfiguration.setDistributionPath(distributionPath);
|
||||
}
|
||||
String distPathBase = props.getProperty(WrapperExecutor.DISTRIBUTION_BASE_PROPERTY);
|
||||
if(!StringUtil.isEmpty(distPathBase)) {
|
||||
if(!isEmpty(distPathBase)) {
|
||||
wrapperConfiguration.setDistributionBase(distPathBase);
|
||||
}
|
||||
return wrapperConfiguration;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package org.jetbrains.plugins.gradle.util
|
||||
|
||||
import com.intellij.mock.MockVirtualFile
|
||||
import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.testFramework.UsefulTestCase
|
||||
import org.junit.Before
|
||||
@@ -51,4 +52,12 @@ class GradleUtilTest: UsefulTestCase() {
|
||||
val projectFile = File(rootDir, "build.gradle").apply { writeText("// empty project file") }
|
||||
assertEquals(rootDir.absolutePath, GradleUtil.determineRootProject(projectFile.absolutePath))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test file chooser descriptor accepts kotlin scripts`() {
|
||||
val chooserDescriptor = GradleUtil.getGradleProjectFileChooserDescriptor()
|
||||
|
||||
assertTrue("gradle groovy script should be selectable", chooserDescriptor.isFileSelectable(MockVirtualFile("build.gradle")))
|
||||
assertTrue("gradle kotlin script should be selectable", chooserDescriptor.isFileSelectable(MockVirtualFile("build.gradle.kts")))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user