Skip to content

Commit 6c3bce3

Browse files
committed
Introduce 2.8.0-alpha
- Add support to TSV format - Add support for key-to-file and vice versa - Add support for exporting files for customers - Add support for download custom paths - Include file name in upload requests - Include a file path in upload requests (must be turned on explicitly)
1 parent 35b4451 commit 6c3bce3

File tree

12 files changed

+60
-14
lines changed

12 files changed

+60
-14
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<modelVersion>4.0.0</modelVersion>
55
<groupId>io.simplelocalize</groupId>
66
<artifactId>simplelocalize-cli</artifactId>
7-
<version>2.7.0</version>
7+
<version>2.8.0-alpha</version>
88
<packaging>jar</packaging>
99
<name>simplelocalize-cli</name>
1010
<description>Official SimpleLocalize Command Line Interface</description>

src/main/java/io/simplelocalize/cli/TemplateKeys.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ public class TemplateKeys
55

66
public static final String LANGUAGE_TEMPLATE_KEY = "{lang}";
77
public static final String NAMESPACE_TEMPLATE_KEY = "{ns}";
8+
public static final String CUSTOMER_KEY_TEMPLATE_KEY = "{customer}";
9+
public static final String TRANSLATION_KEY_TEMPLATE_KEY = "{translationKey}";
10+
public static final String REMOTE_PATH = "{remotePath}";
811

912
private TemplateKeys()
1013
{

src/main/java/io/simplelocalize/cli/Version.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
public class Version
44
{
55

6-
public static final String NUMBER = "2.7.0";
6+
public static final String NUMBER = "2.8.0-alpha";
77

88
private Version()
99
{

src/main/java/io/simplelocalize/cli/client/SimpleLocalizeClient.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@
2626
import java.util.Objects;
2727
import java.util.Optional;
2828

29-
import static io.simplelocalize.cli.TemplateKeys.LANGUAGE_TEMPLATE_KEY;
30-
import static io.simplelocalize.cli.TemplateKeys.NAMESPACE_TEMPLATE_KEY;
29+
import static io.simplelocalize.cli.TemplateKeys.*;
3130

3231
public class SimpleLocalizeClient
3332
{
@@ -91,7 +90,10 @@ public void downloadFile(DownloadableFile downloadableFile, String downloadPathT
9190
Optional<DownloadableFile> optionalDownloadableFile = Optional.of(downloadableFile);
9291
String downloadPath = downloadPathTemplate
9392
.replace(NAMESPACE_TEMPLATE_KEY, optionalDownloadableFile.map(DownloadableFile::namespace).orElse(""))
94-
.replace(LANGUAGE_TEMPLATE_KEY, optionalDownloadableFile.map(DownloadableFile::language).orElse(""));
93+
.replace(LANGUAGE_TEMPLATE_KEY, optionalDownloadableFile.map(DownloadableFile::language).orElse(""))
94+
.replace(CUSTOMER_KEY_TEMPLATE_KEY, optionalDownloadableFile.map(DownloadableFile::customer).orElse(""))
95+
.replace(TRANSLATION_KEY_TEMPLATE_KEY, optionalDownloadableFile.map(DownloadableFile::translationKey).orElse(""))
96+
.replace(REMOTE_PATH, optionalDownloadableFile.map(DownloadableFile::remotePath).orElse(""));
9597
String url = downloadableFile.url();
9698
Path savePath = Path.of(downloadPath);
9799
downloadFile(url, savePath);

src/main/java/io/simplelocalize/cli/client/SimpleLocalizeUriFactory.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import io.simplelocalize.cli.util.StringUtils;
66

77
import java.net.URI;
8+
import java.nio.file.Path;
89
import java.util.List;
910

1011
public class SimpleLocalizeUriFactory
@@ -81,6 +82,29 @@ URI buildUploadUri(UploadRequest uploadRequest)
8182
endpointUrl += "&customerId=" + customerId;
8283
}
8384

85+
String translationKey = uploadRequest.translationKey();
86+
if (StringUtils.isNotEmpty(translationKey))
87+
{
88+
if (translationKey.length() > 500)
89+
{
90+
throw new IllegalArgumentException("Translation key is too long. Max length is 500 characters");
91+
}
92+
endpointUrl += "&translationKey=" + translationKey;
93+
}
94+
95+
Path filePath = uploadRequest.path();
96+
String fileName = filePath.getFileName().toString();
97+
if (StringUtils.isNotEmpty(fileName))
98+
{
99+
endpointUrl += "&fileName=" + fileName;
100+
}
101+
102+
boolean includeFilePath = uploadOptions.contains("INCLUDE_FILE_PATH");
103+
if (includeFilePath)
104+
{
105+
endpointUrl += "&path=" + filePath;
106+
}
107+
84108
return URI.create(endpointUrl);
85109
}
86110

src/main/java/io/simplelocalize/cli/client/dto/FileToUpload.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
import java.nio.file.Path;
77

88
@Builder(setterPrefix = "with")
9-
public record FileToUpload(Path path, String language, String namespace)
9+
public record FileToUpload(Path path, String language, String namespace, String translationKey)
1010
{
1111
}

src/main/java/io/simplelocalize/cli/client/dto/UploadRequest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ public record UploadRequest(
1212
String format,
1313
List<String> options,
1414
String namespace,
15-
String customerId
15+
String customerId,
16+
String translationKey
1617
)
1718
{
1819
}

src/main/java/io/simplelocalize/cli/client/dto/proxy/DownloadableFile.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@
55

66
@NativeProxy
77
@Builder(setterPrefix = "with")
8-
public record DownloadableFile(String url, String namespace, String language)
8+
public record DownloadableFile(String url, String namespace, String language, String customer, String translationKey, String remotePath)
99
{
1010
}

src/main/java/io/simplelocalize/cli/command/DownloadCommand.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,11 @@ public void invoke() throws IOException, InterruptedException
7373
downloadOptions.add("SPLIT_BY_LANGUAGES");
7474
}
7575

76+
if (downloadPath.contains(TemplateKeys.CUSTOMER_KEY_TEMPLATE_KEY))
77+
{
78+
downloadOptions.add("SPLIT_BY_CUSTOMERS");
79+
}
80+
7681
if (!downloadOptions.isEmpty())
7782
{
7883
log.info("Options: {}", downloadOptions);

src/main/java/io/simplelocalize/cli/command/UploadCommand.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,11 @@ public void invoke() throws IOException, InterruptedException
104104
final String fileNamespace = fileToUpload.namespace();
105105
final String effectiveNamespace = hasDefinedNamespace ? uploadNamespace : fileNamespace;
106106

107+
final String translationKey = fileToUpload.translationKey();
108+
107109
final UploadRequest uploadRequest = UploadRequest.builder()
108110
.withPath(path)
111+
.withTranslationKey(translationKey)
109112
.withFormat(uploadFormat)
110113
.withLanguageKey(effectiveLanguageKey)
111114
.withNamespace(effectiveNamespace)
@@ -132,6 +135,11 @@ public void invoke() throws IOException, InterruptedException
132135
logMessage += " (namespace: " + fileNamespace + ")";
133136
}
134137

138+
if (StringUtils.isNotEmpty(translationKey))
139+
{
140+
logMessage += " (translation key: " + translationKey + ")";
141+
}
142+
135143
log.info(logMessage, path);
136144
if (isDryRun)
137145
{
@@ -180,7 +188,7 @@ private void validateConfiguration(Configuration configuration)
180188

181189
private boolean isMultiLanguage(Configuration configuration)
182190
{
183-
final List<String> multiLanguageFileFormats = List.of("multi-language-json", "excel", "csv-translations", "localizable-xcstrings");
191+
final List<String> multiLanguageFileFormats = List.of("multi-language-json", "excel", "csv-translations", "tsv", "localizable-xcstrings");
184192
for (String uploadFormat : multiLanguageFileFormats)
185193
{
186194
if (uploadFormat.equalsIgnoreCase(configuration.getUploadFormat()))

0 commit comments

Comments
 (0)