Merge Android Studio 4.1 into IntelliJ
authorAndrei Kuznetsov <andrei.kuznetsov@jetbrains.com>
Tue, 27 Oct 2020 16:51:00 +0000 (19:51 +0300)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Tue, 27 Oct 2020 23:37:51 +0000 (23:37 +0000)
GitOrigin-RevId: ddec61ac9affc9605ef3a3f8254198f2e5051823

1  2 
plugins/gradle-dsl-impl/src/com/android/tools/idea/gradle/dsl/GradleDslBuildScriptUtil.java
plugins/gradle-dsl-impl/src/com/android/tools/idea/gradle/dsl/GradleUtil.java
plugins/gradle-dsl-impl/src/com/android/tools/idea/gradle/dsl/UpToDateChecker.java
plugins/gradle-dsl-impl/src/com/android/tools/idea/gradle/dsl/parser/GradleDslConverterFactory.java
plugins/gradle-dsl/src/com/android/tools/idea/gradle/dsl/api/BuildModelErrorReporter.java

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..cab1f4745616b196a3b5c5a2aff8bb67b91fa272
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,34 @@@
++// Copyright 2000-2020 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 com.android.tools.idea.gradle.dsl;
++
++import org.jetbrains.annotations.NotNull;
++
++import java.io.File;
++
++/*
++This class use some methods from com.android.utils.BuildScriptUtil
++To be removed in future
++ */
++public class GradleDslBuildScriptUtil {
++  public static File findGradleSettingsFile(@NotNull File dirPath) {
++    File groovySettingsFile = new File(dirPath, "settings.gradle");
++    if (groovySettingsFile.isFile()) {
++      return groovySettingsFile;
++    }
++    else {
++      File kotlinSettingsFile = new File(dirPath, "settings.gradle.kts");
++      return kotlinSettingsFile.isFile() ? kotlinSettingsFile : groovySettingsFile;
++    }
++  }
++
++  public static File findGradleBuildFile(@NotNull File dirPath) {
++    File groovyBuildFile = new File(dirPath, "build.gradle");
++    if (groovyBuildFile.isFile()) {
++      return groovyBuildFile;
++    }
++    else {
++      File kotlinBuildFile = new File(dirPath, "build.gradle.kts");
++      return kotlinBuildFile.isFile() ? kotlinBuildFile : groovyBuildFile;
++    }
++  }
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..3e267d1be8ed46eb8e533f3ea963d97e4da88b8b
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,78 @@@
++// Copyright 2000-2020 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 com.android.tools.idea.gradle.dsl;
++
++import com.google.common.base.Strings;
++import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil;
++import com.intellij.openapi.module.Module;
++import com.intellij.openapi.project.Project;
++import com.intellij.openapi.util.io.FileUtil;
++import com.intellij.openapi.vfs.VfsUtil;
++import com.intellij.openapi.vfs.VirtualFile;
++import com.intellij.util.PathUtil;
++import org.jetbrains.annotations.NotNull;
++import org.jetbrains.annotations.Nullable;
++import org.jetbrains.annotations.SystemIndependent;
++import java.io.File;
++import java.util.List;
++import java.util.Objects;
++
++import static com.google.common.base.Splitter.on;
++import static com.intellij.openapi.vfs.VfsUtil.findFileByIoFile;
++
++public class GradleUtil {
++
++  public static final String GRADLE_PATH_SEPARATOR = ":";
++  public static final String FN_GRADLE_PROPERTIES = "gradle.properties";
++
++  @Nullable
++  public static VirtualFile getGradleSettingsFile(@NotNull File dirPath) {
++    File gradleSettingsFilePath = GradleDslBuildScriptUtil.findGradleSettingsFile(dirPath);
++    VirtualFile result = findFileByIoFile(gradleSettingsFilePath, false);
++    return (result != null && result.isValid()) ? result : null;
++  }
++
++  @Nullable
++  public static VirtualFile getGradleBuildFile(@NotNull File dirPath) {
++    File gradleBuildFilePath = GradleDslBuildScriptUtil.findGradleBuildFile(dirPath);
++    VirtualFile result = findFileByIoFile(gradleBuildFilePath, false);
++    return (result != null && result.isValid()) ? result : null;
++  }
++
++  @NotNull
++  public static File getBaseDirPath(@NotNull Project project) {
++    if (project.isDefault()) {
++      return new File("");
++    }
++    return new File(Objects.requireNonNull(FileUtil.toCanonicalPath(project.getBasePath())));
++  }
++
++  @Nullable
++  public static VirtualFile getGradleBuildFile(@NotNull Module module) {
++    File moduleRoot = findModuleRootFolderPath(module);
++    return moduleRoot != null ? getGradleBuildFile(moduleRoot) : null;
++  }
++
++  @Nullable
++  private static File findModuleRootFolderPath(@NotNull Module module) {
++    @SystemIndependent String path = getModuleDirPath(module);
++    if (path == null) return null;
++    return new File(PathUtil.toSystemDependentName(path));
++  }
++
++  @Nullable
++  @SystemIndependent
++  public static String getModuleDirPath(@NotNull Module module) {
++    String linkedProjectPath = ExternalSystemApiUtil.getExternalProjectPath(module);
++    if (!Strings.isNullOrEmpty(linkedProjectPath)) {
++      return linkedProjectPath;
++    }
++    @SystemIndependent String moduleFilePath = module.getModuleFilePath();
++    return VfsUtil.getParentDir(moduleFilePath);
++  }
++
++  @NotNull
++  public static List<String> getPathSegments(@NotNull String gradlePath) {
++    return on(GRADLE_PATH_SEPARATOR).omitEmptyStrings().splitToList(gradlePath);
++  }
++
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..5dbb73b7ca51d88f88fa5e050d5313d2d9dc0a34
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,16 @@@
++// Copyright 2000-2020 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 com.android.tools.idea.gradle.dsl;
++
++import com.intellij.openapi.extensions.ExtensionPointName;
++import com.intellij.openapi.project.Project;
++import org.jetbrains.annotations.ApiStatus;
++
++@ApiStatus.Experimental
++public interface UpToDateChecker {
++  ExtensionPointName<UpToDateChecker>
++    EXTENSION_POINT_NAME = ExtensionPointName.create("org.jetbrains.idea.gradle.dsl.upToDateChecker");
++
++  boolean checkUpToDate(Project project);
++
++  void setUpToDate(Project project);
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..52b89e6d34eab8893241a66d0c1dcc6f263cfb0d
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,17 @@@
++// Copyright 2000-2020 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 com.android.tools.idea.gradle.dsl.parser;
++
++
++import com.android.tools.idea.gradle.dsl.parser.files.GradleDslFile;
++import com.intellij.openapi.extensions.ExtensionPointName;
++import com.intellij.psi.PsiFile;
++
++public interface GradleDslConverterFactory {
++  ExtensionPointName<GradleDslConverterFactory> EXTENSION_POINT_NAME = ExtensionPointName.create("org.jetbrains.idea.gradle.dsl.parserFactory");
++
++  boolean canConvert(PsiFile psiFile);
++
++  GradleDslWriter createWriter();
++
++  GradleDslParser createParser(PsiFile psiFile, GradleDslFile gradleDslFile);
++}
index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..7894f21211422ff399c2953bdd5f7c9341c6775c
new file mode 100644 (file)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,0 +1,19 @@@
++// Copyright 2000-2020 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 com.android.tools.idea.gradle.dsl.api;
++
++import com.intellij.openapi.components.ServiceManager;
++
++/*
++ * the purpose of this class - to decouple google AS error reporting from Gradle DSL
++ */
++public interface BuildModelErrorReporter {
++  void report(Throwable e);
++
++  static BuildModelErrorReporter getInstance() {return ServiceManager.getService(BuildModelErrorReporter.class);}
++
++
++  class Dummy implements BuildModelErrorReporter{
++    @Override
++    public void report(Throwable e) {}
++  }
++}