mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[platform] guess project name from the base directory, not from store parent
GitOrigin-RevId: ab007154993a116b4b2b3f6a8d8d9e66f6cfbdf0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
61f14e59e0
commit
7006eabbce
@@ -94,13 +94,16 @@ public final class Utils {
|
||||
}
|
||||
else {
|
||||
Path directoryBased;
|
||||
String rawName;
|
||||
if (rootFile.endsWith(PathMacroUtil.DIRECTORY_STORE_NAME)) {
|
||||
directoryBased = rootFile;
|
||||
rawName = JpsProjectConfigurationLoading.getDirectoryBaseProjectName(rootFile.getParent(), directoryBased);
|
||||
}
|
||||
else {
|
||||
directoryBased = rootFile.resolve(PathMacroUtil.DIRECTORY_STORE_NAME);
|
||||
rawName = JpsProjectConfigurationLoading.getDirectoryBaseProjectName(rootFile, directoryBased);
|
||||
}
|
||||
name = PathUtilRt.suggestFileName(JpsProjectConfigurationLoading.getDirectoryBaseProjectName(directoryBased));
|
||||
name = PathUtilRt.suggestFileName(rawName);
|
||||
locationHash = hashFunction.apply(directoryBased.toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -97,16 +97,4 @@ public final class JpsPathUtil {
|
||||
}
|
||||
|
||||
private static final String UNNAMED_PROJECT = "<unnamed>";
|
||||
|
||||
@ApiStatus.Internal
|
||||
public static @NotNull String getDefaultProjectName(@NotNull Path projectDir) {
|
||||
Path parent = projectDir.getParent();
|
||||
if (parent != null) {
|
||||
Path name = parent.getFileName(); // `null` when parent is a Windows disk root
|
||||
return name != null ? name.toString() : parent.toString();
|
||||
}
|
||||
else {
|
||||
return UNNAMED_PROJECT;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,16 +4,17 @@ package org.jetbrains.jps.model.serialization;
|
||||
import com.intellij.openapi.util.JDOMUtil;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.openapi.util.io.NioFiles;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.annotations.Unmodifiable;
|
||||
import org.jetbrains.jps.model.serialization.impl.TimingLog;
|
||||
import org.jetbrains.jps.model.JpsProject;
|
||||
import org.jetbrains.jps.model.serialization.artifact.JpsArtifactSerializer;
|
||||
import org.jetbrains.jps.model.serialization.impl.JpsProjectSerializationDataExtensionImpl;
|
||||
import org.jetbrains.jps.model.serialization.impl.TimingLog;
|
||||
import org.jetbrains.jps.model.serialization.runConfigurations.JpsRunConfigurationSerializer;
|
||||
import org.jetbrains.jps.util.JpsPathUtil;
|
||||
|
||||
@@ -48,9 +49,9 @@ public final class JpsProjectConfigurationLoading {
|
||||
? Path.of(externalProjectConfigDir) : null;
|
||||
}
|
||||
|
||||
public static @NotNull String getDirectoryBaseProjectName(@NotNull Path dir) {
|
||||
String name = JpsPathUtil.readProjectName(dir);
|
||||
return name != null ? name : JpsPathUtil.getDefaultProjectName(dir);
|
||||
public static @NotNull String getDirectoryBaseProjectName(@NotNull Path basePath, @NotNull Path storeDir) {
|
||||
String name = JpsPathUtil.readProjectName(storeDir);
|
||||
return name != null ? name : NioFiles.getFileName(basePath);
|
||||
}
|
||||
|
||||
public static void loadRunConfigurationsFromDirectory(@NotNull JpsProject project,
|
||||
|
||||
@@ -11,7 +11,6 @@ import org.jdom.Element;
|
||||
import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jps.model.serialization.impl.TimingLog;
|
||||
import org.jetbrains.jps.model.JpsDummyElement;
|
||||
import org.jetbrains.jps.model.JpsElement;
|
||||
import org.jetbrains.jps.model.JpsElementFactory;
|
||||
@@ -22,6 +21,7 @@ import org.jetbrains.jps.model.module.JpsModule;
|
||||
import org.jetbrains.jps.model.serialization.facet.JpsFacetSerializer;
|
||||
import org.jetbrains.jps.model.serialization.impl.JpsModuleSerializationDataExtensionImpl;
|
||||
import org.jetbrains.jps.model.serialization.impl.JpsSerializationFormatException;
|
||||
import org.jetbrains.jps.model.serialization.impl.TimingLog;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsLibraryTableSerializer;
|
||||
import org.jetbrains.jps.model.serialization.library.JpsSdkTableSerializer;
|
||||
import org.jetbrains.jps.model.serialization.module.JpsModuleClasspathSerializer;
|
||||
@@ -140,7 +140,7 @@ public final class JpsProjectLoader {
|
||||
}
|
||||
|
||||
private void loadFromDirectory(@NotNull Path dir, @NotNull Executor executor) {
|
||||
myProject.setName(JpsProjectConfigurationLoading.getDirectoryBaseProjectName(dir));
|
||||
myProject.setName(JpsProjectConfigurationLoading.getDirectoryBaseProjectName(dir.getParent(), dir));
|
||||
Path defaultConfigFile = dir.resolve("misc.xml");
|
||||
JpsSdkType<?> projectSdkType = loadProjectRoot(myComponentLoader.loadRootElement(defaultConfigFile));
|
||||
for (JpsModelSerializerExtension extension : JpsModelSerializerExtension.getExtensions()) {
|
||||
|
||||
@@ -122,7 +122,7 @@ open class ProjectStoreImpl(final override val project: Project) : ComponentStor
|
||||
}
|
||||
}
|
||||
else {
|
||||
val dotIdea = file.resolve(Project.DIRECTORY_STORE_FOLDER)
|
||||
val dotIdea = ProjectCoreUtil.getProjectStoreDirectory(file)
|
||||
this.dotIdea = dotIdea
|
||||
|
||||
// PROJECT_CONFIG_DIR must be the first macro
|
||||
@@ -307,14 +307,13 @@ open class ProjectStoreImpl(final override val project: Project) : ComponentStor
|
||||
return storageManager.expandMacro(PROJECT_FILE).fileName.toString().removeSuffix(ProjectFileType.DOT_DEFAULT_EXTENSION)
|
||||
}
|
||||
|
||||
val projectDir = directoryStorePath!!
|
||||
val storedName = JpsPathUtil.readProjectName(projectDir)
|
||||
val storedName = JpsPathUtil.readProjectName(directoryStorePath!!)
|
||||
if (storedName != null) {
|
||||
lastSavedProjectName = storedName
|
||||
return storedName
|
||||
}
|
||||
|
||||
return JpsPathUtil.getDefaultProjectName(projectDir)
|
||||
return NioFiles.getFileName(projectBasePath)
|
||||
}
|
||||
|
||||
private suspend fun saveProjectName() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.intellij.openapi.util.io.FileUtil
|
||||
import com.intellij.platform.workspace.jps.JpsProjectConfigLocation
|
||||
import com.intellij.platform.workspace.jps.JpsProjectFileEntitySource
|
||||
import com.intellij.platform.workspace.jps.UnloadedModulesNameHolder
|
||||
import com.intellij.platform.workspace.jps.bridge.JpsModuleExtensionBridge
|
||||
import com.intellij.platform.workspace.jps.bridge.impl.JpsModelBridge
|
||||
import com.intellij.platform.workspace.jps.bridge.impl.JpsProjectAdditionalData
|
||||
import com.intellij.platform.workspace.jps.bridge.impl.JpsProjectBridge
|
||||
@@ -14,7 +15,6 @@ import com.intellij.platform.workspace.jps.bridge.impl.module.JpsModuleBridge
|
||||
import com.intellij.platform.workspace.jps.entities.SdkId
|
||||
import com.intellij.platform.workspace.jps.entities.customImlData
|
||||
import com.intellij.platform.workspace.jps.entities.exModuleOptions
|
||||
import com.intellij.platform.workspace.jps.bridge.JpsModuleExtensionBridge
|
||||
import com.intellij.platform.workspace.jps.serialization.impl.*
|
||||
import com.intellij.platform.workspace.storage.EntityStorage
|
||||
import com.intellij.platform.workspace.storage.MutableEntityStorage
|
||||
@@ -32,7 +32,6 @@ import org.jetbrains.jps.model.serialization.*
|
||||
import org.jetbrains.jps.model.serialization.JpsProjectConfigurationLoading.*
|
||||
import org.jetbrains.jps.model.serialization.impl.JpsModuleSerializationDataExtensionImpl
|
||||
import org.jetbrains.jps.model.serialization.impl.JpsSerializationViaWorkspaceModel
|
||||
import org.jetbrains.jps.plugin.JpsPluginManager
|
||||
import org.jetbrains.jps.service.JpsServiceManager
|
||||
import java.nio.file.Path
|
||||
import kotlin.io.path.invariantSeparatorsPathString
|
||||
@@ -106,7 +105,8 @@ internal class JpsSerializationViaWorkspaceModelImpl : JpsSerializationViaWorksp
|
||||
componentLoader: JpsComponentLoader,
|
||||
): JpsProjectAdditionalData {
|
||||
val projectName = when (configLocation) {
|
||||
is JpsProjectConfigLocation.DirectoryBased -> getDirectoryBaseProjectName(configLocation.ideaFolder.toPath())
|
||||
is JpsProjectConfigLocation.DirectoryBased -> getDirectoryBaseProjectName(configLocation.projectDir.toPath(),
|
||||
configLocation.ideaFolder.toPath())
|
||||
is JpsProjectConfigLocation.FileBased -> FileUtil.getNameWithoutExtension(configLocation.iprFile.fileName)
|
||||
}
|
||||
val projectRootComponentFileElement = when (configLocation) {
|
||||
|
||||
Reference in New Issue
Block a user