mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-76898: Some characters in archive names are replaced by underscore
This commit is contained in:
@@ -33,6 +33,7 @@ import com.intellij.packaging.artifacts.ArtifactProperties;
|
||||
import com.intellij.packaging.artifacts.ArtifactType;
|
||||
import com.intellij.packaging.elements.*;
|
||||
import com.intellij.packaging.impl.elements.*;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -554,5 +555,9 @@ public class ArtifactUtil {
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static String suggestArtifactFileName(String artifactName) {
|
||||
return PathUtil.suggestFileName(artifactName, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
*/
|
||||
package com.intellij.packaging.impl.artifacts;
|
||||
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.packaging.artifacts.ArtifactTemplate;
|
||||
import com.intellij.packaging.artifacts.ArtifactType;
|
||||
import com.intellij.packaging.elements.CompositePackagingElement;
|
||||
import com.intellij.packaging.elements.PackagingElementOutputKind;
|
||||
import com.intellij.packaging.elements.PackagingElementResolvingContext;
|
||||
import com.intellij.packaging.impl.elements.ArchivePackagingElement;
|
||||
import com.intellij.util.PathUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -54,7 +54,7 @@ public class JarArtifactType extends ArtifactType {
|
||||
@NotNull
|
||||
@Override
|
||||
public CompositePackagingElement<?> createRootElement(@NotNull String artifactName) {
|
||||
return new ArchivePackagingElement(FileUtil.sanitizeFileName(artifactName) + ".jar");
|
||||
return new ArchivePackagingElement(ArtifactUtil.suggestArtifactFileName(artifactName) + ".jar");
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
+1
-2
@@ -24,7 +24,6 @@ import com.intellij.openapi.roots.OrderRootType;
|
||||
import com.intellij.openapi.roots.ProjectRootManager;
|
||||
import com.intellij.openapi.roots.libraries.Library;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.packaging.artifacts.ArtifactTemplate;
|
||||
@@ -94,7 +93,7 @@ public class JarFromModulesTemplate extends ArtifactTemplate {
|
||||
String name = modules.length == 1 ? modules[0].getName() : project.getName();
|
||||
|
||||
final PackagingElementFactory factory = PackagingElementFactory.getInstance();
|
||||
final CompositePackagingElement<?> archive = factory.createArchive(FileUtil.sanitizeFileName(name) + ".jar");
|
||||
final CompositePackagingElement<?> archive = factory.createArchive(ArtifactUtil.suggestArtifactFileName(name) + ".jar");
|
||||
|
||||
OrderEnumerator orderEnumerator = ProjectRootManager.getInstance(project).orderEntries(Arrays.asList(modules));
|
||||
|
||||
|
||||
+2
-2
@@ -429,14 +429,14 @@ public class ArtifactEditorImpl implements ArtifactEditorEx {
|
||||
setOutputPath(ArtifactUtil.getDefaultArtifactOutputPath(newArtifactName, myProject));
|
||||
final CompositePackagingElement<?> root = getRootElement();
|
||||
if (root instanceof ArchivePackagingElement) {
|
||||
String oldFileName = FileUtil.sanitizeFileName(oldArtifactName);
|
||||
String oldFileName = ArtifactUtil.suggestArtifactFileName(oldArtifactName);
|
||||
final String name = ((ArchivePackagingElement)root).getArchiveFileName();
|
||||
final String fileName = FileUtil.getNameWithoutExtension(name);
|
||||
final String extension = FileUtil.getExtension(name);
|
||||
if (fileName.equals(oldFileName) && extension.length() > 0) {
|
||||
myLayoutTreeComponent.editLayout(new Runnable() {
|
||||
public void run() {
|
||||
((ArchivePackagingElement)getRootElement()).setArchiveFileName(FileUtil.sanitizeFileName(newArtifactName) + "." + extension);
|
||||
((ArchivePackagingElement)getRootElement()).setArchiveFileName(ArtifactUtil.suggestArtifactFileName(newArtifactName) + "." + extension);
|
||||
}
|
||||
});
|
||||
myLayoutTreeComponent.updateRootNode();
|
||||
|
||||
@@ -101,10 +101,15 @@ public class PathUtil {
|
||||
|
||||
@NotNull
|
||||
public static String suggestFileName(@NotNull String text) {
|
||||
return suggestFileName(text, false, false);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String suggestFileName(@NotNull String text, final boolean allowDots, final boolean allowSpaces) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (int i = 0; i < text.length(); i++) {
|
||||
char c = text.charAt(i);
|
||||
if (!isValidFileNameChar(c) || c == '.' || Character.isWhitespace(c)) {
|
||||
if (!isValidFileNameChar(c) || (!allowDots && c == '.') || (!allowSpaces && Character.isWhitespace(c))) {
|
||||
result.append('_');
|
||||
}
|
||||
else {
|
||||
|
||||
Reference in New Issue
Block a user