Skip to content

Commit

Permalink
add initial support for build.gradle.kts
Browse files Browse the repository at this point in the history
  • Loading branch information
VISTALL committed Dec 24, 2024
1 parent 5f9e9c1 commit 981f0e3
Show file tree
Hide file tree
Showing 7 changed files with 120 additions and 23 deletions.
41 changes: 21 additions & 20 deletions gradle-api/src/main/java/consulo/gradle/GradleConstants.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,31 +12,32 @@
* @since 8/1/11 3:10 PM
*/
public class GradleConstants {
@Nonnull
public static final ProjectSystemId SYSTEM_ID = new ProjectSystemId("GRADLE", GradleLocalize.gradleName());

@Nonnull
public static final ProjectSystemId SYSTEM_ID = new ProjectSystemId("GRADLE", GradleLocalize.gradleName());
public static final String EXTENSION = "gradle";
public static final String DEFAULT_SCRIPT_NAME = "build.gradle";
public static final String KOTLIN_DSL_SCRIPT_NAME = "build.gradle.kts";
public static final String SETTINGS_FILE_NAME = "settings.gradle";

@Nonnull
public static final String EXTENSION = "gradle";
@Nonnull
public static final String DEFAULT_SCRIPT_NAME = "build.gradle";
@Nonnull
public static final String SETTINGS_FILE_NAME = "settings.gradle";
public static final String SYSTEM_DIRECTORY_PATH_KEY = "GRADLE_USER_HOME";

@Nonnull
public static final String SYSTEM_DIRECTORY_PATH_KEY = "GRADLE_USER_HOME";
public static final String TOOL_WINDOW_TOOLBAR_PLACE = "GRADLE_SYNC_CHANGES_TOOLBAR";

@Nonnull
public static final String TOOL_WINDOW_TOOLBAR_PLACE = "GRADLE_SYNC_CHANGES_TOOLBAR";
public static final String HELP_TOPIC_TOOL_WINDOW = "reference.toolwindows.gradle";

@Nonnull
public static final String HELP_TOPIC_TOOL_WINDOW = "reference.toolwindows.gradle";
public static final String OFFLINE_MODE_CMD_OPTION = "--offline";
public static final String INIT_SCRIPT_CMD_OPTION = "--init-script";

@Nonnull
public static final String OFFLINE_MODE_CMD_OPTION = "--offline";
@Nonnull
public static final String INIT_SCRIPT_CMD_OPTION = "--init-script";
public static final String KOTLIN_DSL_SETTINGS_FILE_NAME = "settings.gradle.kts";
public static final String DECLARATIVE_EXTENSION = "gradle.dcl";

private GradleConstants() {
}
public static final String KOTLIN_DSL_SCRIPT_EXTENSION = "gradle.kts";

public static final String[] BUILD_FILE_EXTENSIONS = {
EXTENSION, KOTLIN_DSL_SCRIPT_EXTENSION, DECLARATIVE_EXTENSION
};

private GradleConstants() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -58,18 +58,28 @@ public Image getIcon() {
@Override
public boolean canImport(@Nonnull File fileOrDirectory) {
if (fileOrDirectory.isDirectory()) {
return new File(fileOrDirectory, GradleConstants.DEFAULT_SCRIPT_NAME).exists();
File file = new File(fileOrDirectory, GradleConstants.DEFAULT_SCRIPT_NAME);
if (file.exists()) {
return true;
}

file = new File(fileOrDirectory, GradleConstants.KOTLIN_DSL_SCRIPT_NAME);
if (file.exists()) {
return true;
}

return false;
}
else {
String extension = FileUtil.getExtension(fileOrDirectory.getName());
return GradleConstants.EXTENSION.equalsIgnoreCase(extension);
return extension.equalsIgnoreCase(GradleConstants.EXTENSION) || extension.equalsIgnoreCase(GradleConstants.KOTLIN_DSL_SCRIPT_EXTENSION);
}
}

@Nonnull
@Override
public String getFileSample() {
return "<b>Gradle</b> build script (*.gradle)";
return "<b>Gradle</b> build script (*.gradle &amp; *.gradle.kts)";
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.jetbrains.plugins.gradle.kotlin;

import consulo.gradle.icon.GradleIconGroup;
import consulo.language.file.LanguageFileType;
import consulo.language.plain.PlainTextLanguage;
import consulo.localize.LocalizeValue;
import consulo.ui.image.Image;
import jakarta.annotation.Nonnull;

/**
* @author VISTALL
* @since 2024-12-24
*/
public class KotlinScriptGradleFileType extends LanguageFileType {
public static final KotlinScriptGradleFileType INSTANCE = new KotlinScriptGradleFileType();

public KotlinScriptGradleFileType() {
super(PlainTextLanguage.INSTANCE);
}

@Nonnull
@Override
public String getId() {
return "KOTLIN_GRADLE";
}

@Nonnull
@Override
public LocalizeValue getDescription() {
return LocalizeValue.of("Kotlin Gradle File");
}

@Nonnull
@Override
public Image getIcon() {
return GradleIconGroup.kotlingradlescript();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package org.jetbrains.plugins.gradle.kotlin;

import consulo.annotation.component.ExtensionImpl;
import consulo.gradle.GradleConstants;
import consulo.virtualFileSystem.fileType.FileNameMatcherFactory;
import consulo.virtualFileSystem.fileType.FileTypeConsumer;
import consulo.virtualFileSystem.fileType.FileTypeFactory;
import jakarta.annotation.Nonnull;
import jakarta.inject.Inject;

/**
* @author VISTALL
* @since 2024-12-24
*/
@ExtensionImpl
public class KotlinScriptGradleFileTypeFactory extends FileTypeFactory {
private final FileNameMatcherFactory myFileNameMatcherFactory;

@Inject
public KotlinScriptGradleFileTypeFactory(FileNameMatcherFactory fileNameMatcherFactory) {
myFileNameMatcherFactory = fileNameMatcherFactory;
}

@Override
public void createFileTypes(@Nonnull FileTypeConsumer fileTypeConsumer) {
fileTypeConsumer.consume(KotlinScriptGradleFileType.INSTANCE,
myFileNameMatcherFactory.createExactFileNameMatcher(GradleConstants.KOTLIN_DSL_SCRIPT_NAME));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ public VirtualFile adjust(@Nonnull VirtualFile configPath) {
return result;
}

result = configPath.findChild(GradleConstants.KOTLIN_DSL_SCRIPT_NAME);
if (result != null) {
return result;
}

for (VirtualFile child : configPath.getChildren()) {
String name = child.getName();
if (!name.endsWith(GradleConstants.EXTENSION)) {
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 981f0e3

Please sign in to comment.