Skip to content

Commit e68bec0

Browse files
authoredDec 4, 2024··
fix: file lookup w/o extension (#870)
1 parent 53f4acd commit e68bec0

File tree

5 files changed

+39
-7
lines changed

5 files changed

+39
-7
lines changed
 

‎src/main/java/com/crowdin/cli/commands/actions/FileUploadAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void act(Outputter out, ProjectProperties properties, ProjectClient clien
8383
fileFullPath = (nonNull(branchName) ? branchName + Utils.PATH_SEPARATOR : "") + filePath;
8484
fileDestName = fileFullPath.substring(fileFullPath.lastIndexOf(Utils.PATH_SEPARATOR) + 1);
8585
Map<String, FileInfo> paths = ProjectFilesUtils.buildFilePaths(project.getDirectories(), project.getBranches(), project.getFileInfos());
86-
FileInfo projectFile = paths.get(fileFullPath);
86+
FileInfo projectFile = ProjectFilesUtils.fileLookup(fileFullPath, paths);
8787

8888
if (nonNull(projectFile)) {
8989
if (!autoUpdate) {

‎src/main/java/com/crowdin/cli/commands/actions/UploadSourcesAction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public void act(Outputter out, PropertiesWithFiles pb, ProjectClient client) {
180180
uploadedSources.add(fileFullPath);
181181
}
182182

183-
FileInfo projectFile = !isStringsBasedProject ? finalPaths.get(fileFullPath) : null;
183+
FileInfo projectFile = !isStringsBasedProject ? ProjectFilesUtils.fileLookup(fileFullPath, finalPaths) : null;
184184
if (!isStringsBasedProject && autoUpdate && projectFile != null) {
185185
final UpdateFileRequest request = new UpdateFileRequest();
186186
request.setExportOptions(buildExportOptions(sourceFile, file, pb.getBasePath()));

‎src/main/java/com/crowdin/cli/commands/actions/UploadTranslationsAction.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ public void act(Outputter out, PropertiesWithFiles pb, ProjectClient client) {
112112
? PropertiesBeanUtils.prepareDest(file.getDest(), StringUtils.removeStart(source, pb.getBasePath()), placeholderUtil)
113113
: StringUtils.removeStart(source, pb.getBasePath() + commonPath));
114114

115-
if (!paths.containsKey(filePath)) {
115+
var sourceFile = ProjectFilesUtils.fileLookup(filePath, paths);
116+
if (sourceFile == null) {
116117
containsErrors.set(true);
117118
if (!plainView) {
118119
out.println(ERROR.withIcon(String.format(
@@ -121,7 +122,7 @@ public void act(Outputter out, PropertiesWithFiles pb, ProjectClient client) {
121122
}
122123
return;
123124
}
124-
Long fileId = paths.get(filePath).getId();
125+
Long fileId = sourceFile.getId();
125126

126127
// build filePath to each source and project language
127128
String fileSource = StringUtils.removeStart(source, pb.getBasePath());

‎src/main/java/com/crowdin/cli/commands/functionality/ProjectFilesUtils.java

+22
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@ public static <T extends FileInfo> Map<String, T> buildFilePaths(
3535
return filePathsToId;
3636
}
3737

38+
public static <T> T fileLookup(String filePath, Map<String, T> files) {
39+
if (files.containsKey(filePath)) {
40+
return files.get(filePath);
41+
}
42+
43+
for (var entry : files.entrySet()) {
44+
if (ProjectFilesUtils.equalsIgnoreExtension(filePath, entry.getKey())) {
45+
return entry.getValue();
46+
}
47+
}
48+
49+
return null;
50+
}
51+
52+
public static boolean equalsIgnoreExtension(String file1, String file2) {
53+
return removeExtension(file1).equals(removeExtension(file2));
54+
}
55+
56+
public static String removeExtension(String file) {
57+
return file.substring(0, file.lastIndexOf('.'));
58+
}
59+
3860
public static <T extends FileInfo> Map<String, T> buildFilePaths(
3961
Map<Long, Directory> directories, List<T> files
4062
) {

‎src/test/java/com/crowdin/cli/commands/functionality/ProjectFilesUtilsTest.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@
1313

1414
import java.util.Arrays;
1515
import java.util.List;
16+
import java.util.Map;
1617
import java.util.stream.Stream;
1718

18-
import static org.junit.jupiter.api.Assertions.assertEquals;
19-
import static org.junit.jupiter.api.Assertions.assertFalse;
20-
import static org.junit.jupiter.api.Assertions.assertTrue;
19+
import static org.junit.jupiter.api.Assertions.*;
2120
import static org.junit.jupiter.params.provider.Arguments.arguments;
2221

2322
public class ProjectFilesUtilsTest {
@@ -77,4 +76,14 @@ private static Stream<Arguments> isProjectFileSatisfiesThePatternsTest() {
7776
);
7877
}
7978

79+
@Test
80+
public void testFileLookup() {
81+
String file1 = "path/to/file.json";
82+
String file2 = "path/to/file.txt";
83+
String file3 = "path/to/test.txt";
84+
85+
assertEquals(file1, ProjectFilesUtils.fileLookup(file1, Map.of(file1, file1, file2, file2)));
86+
assertEquals(file2, ProjectFilesUtils.fileLookup(file1, Map.of(file2, file2, file3, file3)));
87+
assertNull(ProjectFilesUtils.fileLookup(file3, Map.of(file1, file1, file2, file2)));
88+
}
8089
}

0 commit comments

Comments
 (0)
Please sign in to comment.