mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[platform] making ConfigImportSettings the sole source of directory prefixes (IJPL-198038 preparation)
GitOrigin-RevId: 8878ff635a871b05a87084c736659bab840961db
This commit is contained in:
committed by
intellij-monorepo-bot
parent
691497979c
commit
c3c74cb81f
@@ -169,8 +169,7 @@ public final class ConfigImportHelper {
|
||||
return;
|
||||
}
|
||||
|
||||
var otherProductPrefixes = settings != null ? settings.getProductsToImportFrom(args) : List.<String>of();
|
||||
var guessedOldConfigDirs = findConfigDirectories(newConfigDir, settings, otherProductPrefixes);
|
||||
var guessedOldConfigDirs = findConfigDirectories(newConfigDir, settings, args);
|
||||
var tempBackup = (Path)null;
|
||||
var vmOptionFileChanged = false;
|
||||
var vmOptionsLines = (List<String>)null;
|
||||
@@ -302,7 +301,8 @@ public final class ConfigImportHelper {
|
||||
}
|
||||
|
||||
if (settings != null) {
|
||||
settings.importFinished(newConfigDir, otherProductPrefixes);
|
||||
var oldConfigDir = oldConfigDirAndOldIdePath != null ? oldConfigDirAndOldIdePath.first : null;
|
||||
settings.importFinished(newConfigDir, oldConfigDir);
|
||||
}
|
||||
|
||||
ImportOldConfigsUsagesCollector.INSTANCE.reportImportScenario(importScenarioStatistics);
|
||||
@@ -578,10 +578,6 @@ public final class ConfigImportHelper {
|
||||
}
|
||||
}
|
||||
|
||||
static @NotNull ConfigDirsSearchResult findConfigDirectories(@NotNull Path newConfigDir) {
|
||||
return findConfigDirectories(newConfigDir, null, List.of());
|
||||
}
|
||||
|
||||
public static @Nullable FileTime getConfigLastModifiedTime(@NotNull Path configDir) {
|
||||
var max = (FileTime)null;
|
||||
for (var name : OPTIONS) {
|
||||
@@ -596,12 +592,13 @@ public final class ConfigImportHelper {
|
||||
return max;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
public static @NotNull ConfigDirsSearchResult findConfigDirectories(
|
||||
@NotNull Path newConfigDir,
|
||||
@Nullable ConfigImportSettings settings,
|
||||
@NotNull List<String> otherProductPrefixes
|
||||
@NotNull List<String> args
|
||||
) {
|
||||
var otherProductPrefixes = settings != null ? settings.getProductsToImportFrom(args) : List.<String>of();
|
||||
|
||||
var homes = new HashSet<Path>(); // looking for existing config directories ...
|
||||
homes.add(newConfigDir.getParent()); // ... in the vicinity of the new config directory
|
||||
homes.add(newConfigDir.getFileSystem().getPath(PathManager.getDefaultConfigPathFor("X")).getParent()); // ... in the default location
|
||||
|
||||
+2
-2
@@ -16,9 +16,9 @@ import java.util.Set;
|
||||
public interface ConfigImportSettings {
|
||||
/**
|
||||
* Called after configuration import is finished, even when there was nothing to import from.
|
||||
* In the latter case, {@link ConfigImportHelper#isConfigImported()} returns {@code false}.
|
||||
* In the latter case, {@code oldConfigDir} is {@code null} and {@link ConfigImportHelper#isConfigImported()} returns {@code false}.
|
||||
*/
|
||||
default void importFinished(@NotNull Path newConfigPath, @NotNull List<String> otherProductPrefixes) { }
|
||||
default void importFinished(@NotNull Path newConfigDir, @Nullable Path oldConfigDir) { }
|
||||
|
||||
/**
|
||||
* If there are no configs for previous versions of this product,
|
||||
|
||||
+1
-1
@@ -94,7 +94,7 @@ public final class OldDirectoryCleaner {
|
||||
|
||||
@RequiresBackgroundThread
|
||||
public void seekAndDestroy(@Nullable Project project, @Nullable ProgressIndicator indicator) {
|
||||
var result = ConfigImportHelper.findConfigDirectories(PathManager.getConfigDir());
|
||||
var result = ConfigImportHelper.findConfigDirectories(PathManager.getConfigDir(), null, List.of());
|
||||
var groups = collectDirectoryData(result, indicator);
|
||||
if (myLogger.isDebugEnabled()) {
|
||||
myLogger.debug("configs: " + result.getPaths());
|
||||
|
||||
+2
-2
@@ -40,8 +40,8 @@ abstract class ConfigImportHelperBaseTest : BareTestFixtureTestCase() {
|
||||
Files.setLastModifiedTime(file, FileTime.from(lastModified.toInstant(ZoneOffset.UTC)))
|
||||
}
|
||||
|
||||
protected fun findConfigDirectories(newConfigPath: Path): List<Path> =
|
||||
ConfigImportHelper.findConfigDirectories(newConfigPath, null, emptyList()).paths
|
||||
protected fun findConfigDirectories(newConfigPath: Path): ConfigImportHelper.ConfigDirsSearchResult =
|
||||
ConfigImportHelper.findConfigDirectories(newConfigPath, ConfigImportHelper.findCustomConfigImportSettings(), /*args =*/ emptyList())
|
||||
|
||||
// disables broken plugins fetcher from the Marketplace by default
|
||||
class ConfigImportMarketplaceStub : ExternalResource() {
|
||||
|
||||
+12
-13
@@ -74,7 +74,7 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
@Test fun `find pre-migration config directory`() {
|
||||
val cfg201 = createConfigDir("2020.1", modern = false)
|
||||
val newConfigPath = createConfigDir("2020.1", modern = true)
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(cfg201)
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(cfg201)
|
||||
}
|
||||
|
||||
@Test fun `find both historic and current config directories`() {
|
||||
@@ -83,7 +83,7 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
val cfg201 = createConfigDir("2020.1", storageTS = LocalDateTime.of(2020, 4, 1, 10, 0))
|
||||
|
||||
val newConfigPath = createConfigDir("2020.2")
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(cfg201, cfg193, cfg15)
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(cfg201, cfg193, cfg15)
|
||||
}
|
||||
|
||||
@Test fun `find recent config directory`() {
|
||||
@@ -93,10 +93,10 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
val cfg221 = createConfigDir("2022.1", storageTS = now.minusSeconds(1))
|
||||
|
||||
val newConfigPath = createConfigDir("2022.3")
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(cfg221, cfg211, cfg201)
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(cfg221, cfg211, cfg201)
|
||||
|
||||
writeStorageFile(cfg211, now)
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(cfg211, cfg221, cfg201)
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(cfg211, cfg221, cfg201)
|
||||
}
|
||||
|
||||
@Test fun `sort if no anchor files`() {
|
||||
@@ -105,7 +105,7 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
val cfg221 = createConfigDir("2022.1")
|
||||
|
||||
val newConfigPath = createConfigDir("2022.3")
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(cfg221, cfg211, cfg201)
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(cfg221, cfg211, cfg201)
|
||||
}
|
||||
|
||||
@Test fun `sort some real historic config dirs`() {
|
||||
@@ -122,7 +122,7 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
val cfg173 = createConfigDir("2017.3", product = "DataGrip", storageTS = LocalDateTime.of(2019, 2, 2, 8, 52))
|
||||
|
||||
val newConfigPath = createConfigDir("2020.1", product = "DataGrip")
|
||||
assertThat(findConfigDirectories(newConfigPath)).containsExactly(
|
||||
assertThat(findConfigDirectories(newConfigPath).paths).containsExactly(
|
||||
cfg173, cfg191, cfg182, cfg183, cfg181, cfg163, cfg172, cfg171, cfg161, cfg162, cfg10)
|
||||
}
|
||||
|
||||
@@ -469,7 +469,7 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
}
|
||||
|
||||
val current = createConfigDir("2021.2")
|
||||
val result = ConfigImportHelper.findConfigDirectories(current, null, emptyList())
|
||||
val result = findConfigDirectories(current)
|
||||
assertThat(result.paths).containsExactlyInAnyOrder(cfg191, cfg192, cfg193, cfg201, cfg202, cfg203)
|
||||
|
||||
val related = result.paths.map { result.findRelatedDirectories(it, false) }
|
||||
@@ -485,34 +485,33 @@ class ConfigImportHelperTest : ConfigImportHelperBaseTest() {
|
||||
val defaultProjectPath = "${SystemProperties.getUserHome()}/PhpstormProjects"
|
||||
Files.createDirectories(memoryFs.fs.getPath(defaultProjectPath))
|
||||
val current = createConfigDir("2021.2", product = "PhpStorm")
|
||||
val result = ConfigImportHelper.findConfigDirectories(current, null, emptyList())
|
||||
assertThat(result.paths).isEmpty()
|
||||
assertThat(findConfigDirectories(current).paths).isEmpty()
|
||||
}
|
||||
|
||||
@Test fun `suffix-less directories are excluded`() {
|
||||
createConfigDir(product = "Rider", version = "", modern = true)
|
||||
val current = createConfigDir(product = "Rider", version = "2022.1")
|
||||
assertThat(findConfigDirectories(current)).isEmpty()
|
||||
assertThat(findConfigDirectories(current).paths).isEmpty()
|
||||
}
|
||||
|
||||
@Test fun `suffix-less directories are excluded case-insensitively`() {
|
||||
createConfigDir(product = "RIDER", version = "", modern = true)
|
||||
val current = createConfigDir(product = "Rider", version = "2022.1")
|
||||
assertThat(findConfigDirectories(current)).isEmpty()
|
||||
assertThat(findConfigDirectories(current).paths).isEmpty()
|
||||
}
|
||||
|
||||
@Test fun `non-versioned directories are excluded_Rider`() {
|
||||
createConfigDir(product = "RiderFlow", version = "", modern = true)
|
||||
createConfigDir(product = "RiderRemoteDebugger", version = "", modern = true)
|
||||
val current = createConfigDir(product = "Rider", version = "2023.2")
|
||||
assertThat(findConfigDirectories(current)).isEmpty()
|
||||
assertThat(findConfigDirectories(current).paths).isEmpty()
|
||||
}
|
||||
|
||||
@Test fun `non-versioned directories are excluded_CLion`() {
|
||||
createConfigDir(product = ".clion-vcpkg", version = "", modern = false) // was created at the user dir by older versions
|
||||
createConfigDir(product = "CLionNova", version = "2023.2", modern = true) // "CLion" + RADLER_SUFFIX = "CLionNova"
|
||||
val current = createConfigDir(product = "CLion", version = "2023.2")
|
||||
assertThat(findConfigDirectories(current)).isEmpty()
|
||||
assertThat(findConfigDirectories(current).paths).isEmpty()
|
||||
}
|
||||
|
||||
@Test fun `merging VM options`() {
|
||||
|
||||
Reference in New Issue
Block a user