From 32a73027e87155d3792b97d88cb1eb242f2d1f70 Mon Sep 17 00:00:00 2001 From: Yevheniy Oliynyk Date: Fri, 18 Oct 2024 19:15:38 +0200 Subject: [PATCH 1/2] feat: add bundle extra options --- src/main/java/com/crowdin/cli/commands/Actions.java | 2 +- .../com/crowdin/cli/commands/actions/BundleAddAction.java | 6 ++++++ .../java/com/crowdin/cli/commands/actions/CliActions.java | 4 ++-- .../crowdin/cli/commands/picocli/BundleAddSubcommand.java | 8 +++++++- src/main/resources/messages/messages.properties | 2 ++ .../crowdin/cli/commands/picocli/PicocliTestUtils.java | 2 +- 6 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/crowdin/cli/commands/Actions.java b/src/main/java/com/crowdin/cli/commands/Actions.java index 2fbe45c73..4deb2063a 100644 --- a/src/main/java/com/crowdin/cli/commands/Actions.java +++ b/src/main/java/com/crowdin/cli/commands/Actions.java @@ -104,7 +104,7 @@ NewAction taskAdd( NewAction bundleList(boolean plainView, boolean isVerbose); - NewAction bundleAdd(String name, String format, List source, List ignore, String translation, List labels, boolean plainView); + NewAction bundleAdd(String name, String format, List source, List ignore, String translation, List labels, boolean plainView, boolean includeProjectSourceLanguage, boolean isMultilingual); NewAction checkNewVersion(); diff --git a/src/main/java/com/crowdin/cli/commands/actions/BundleAddAction.java b/src/main/java/com/crowdin/cli/commands/actions/BundleAddAction.java index c296e6baf..3d2f212a6 100644 --- a/src/main/java/com/crowdin/cli/commands/actions/BundleAddAction.java +++ b/src/main/java/com/crowdin/cli/commands/actions/BundleAddAction.java @@ -32,6 +32,10 @@ class BundleAddAction implements NewAction { private boolean plainView; + private boolean includeProjectSourceLanguage; + + private boolean isMultilingual; + @Override public void act(Outputter out, ProjectProperties pb, ClientBundle client) { Bundle bundle; @@ -41,6 +45,8 @@ public void act(Outputter out, ProjectProperties pb, ClientBundle client) { Optional.ofNullable(source).ifPresent(addBundleRequest::setSourcePatterns); Optional.ofNullable(ignore).ifPresent(addBundleRequest::setIgnorePatterns); Optional.ofNullable(translation).ifPresent(addBundleRequest::setExportPattern); + addBundleRequest.setIncludeProjectSourceLanguage(includeProjectSourceLanguage); + addBundleRequest.setIsMultilingual(isMultilingual); Optional.ofNullable(labels).ifPresent(addBundleRequest::setLabelIds); diff --git a/src/main/java/com/crowdin/cli/commands/actions/CliActions.java b/src/main/java/com/crowdin/cli/commands/actions/CliActions.java index c2ec2e19b..287058bd2 100644 --- a/src/main/java/com/crowdin/cli/commands/actions/CliActions.java +++ b/src/main/java/com/crowdin/cli/commands/actions/CliActions.java @@ -211,8 +211,8 @@ public NewAction bundleList(boolean plainView, } @Override - public NewAction bundleAdd(String name, String format, List source, List ignore, String translation, List labels, boolean plainView) { - return new BundleAddAction(name, format, source, ignore, translation, labels, plainView); + public NewAction bundleAdd(String name, String format, List source, List ignore, String translation, List labels, boolean plainView, boolean includeProjectSourceLanguage, boolean isMultilingual) { + return new BundleAddAction(name, format, source, ignore, translation, labels, plainView, includeProjectSourceLanguage, isMultilingual); } @Override diff --git a/src/main/java/com/crowdin/cli/commands/picocli/BundleAddSubcommand.java b/src/main/java/com/crowdin/cli/commands/picocli/BundleAddSubcommand.java index ffd8a2cf0..a56a562f2 100644 --- a/src/main/java/com/crowdin/cli/commands/picocli/BundleAddSubcommand.java +++ b/src/main/java/com/crowdin/cli/commands/picocli/BundleAddSubcommand.java @@ -36,6 +36,12 @@ class BundleAddSubcommand extends ActCommandBundle { @CommandLine.Option(names = {"--plain"}, descriptionKey = "crowdin.list.usage.plain") protected boolean plainView; + @CommandLine.Option(names = {"--include-source-language"}, paramLabel = "...", descriptionKey = "crowdin.bundle.add.includeProjectSourceLanguage", order = -2) + protected boolean includeProjectSourceLanguage; + + @CommandLine.Option(names = {"--multilingual"}, paramLabel = "...", descriptionKey = "crowdin.bundle.add.isMultilingual", order = -2) + protected boolean isMultilingual; + @Override protected final boolean isAnsi() { return super.isAnsi() && !plainView; @@ -43,7 +49,7 @@ protected final boolean isAnsi() { @Override protected NewAction getAction(Actions actions) { - return actions.bundleAdd(name, format, source, ignore, translation, labels, plainView); + return actions.bundleAdd(name, format, source, ignore, translation, labels, plainView, includeProjectSourceLanguage, isMultilingual); } @Override diff --git a/src/main/resources/messages/messages.properties b/src/main/resources/messages/messages.properties index 8453f2a6a..34162ad3f 100755 --- a/src/main/resources/messages/messages.properties +++ b/src/main/resources/messages/messages.properties @@ -341,6 +341,8 @@ crowdin.bundle.add.source=Source pattern. Could be specified multiple times crowdin.bundle.add.ignore=Ignore pattern. Could be specified multiple times crowdin.bundle.add.translation=Bundle export pattern. Defines bundle name in resulting translations bundle crowdin.bundle.add.label=Label identifier. Could be specified multiple times +crowdin.bundle.add.includeProjectSourceLanguage=Add project source language to bundle +crowdin.bundle.add.isMultilingual=Export translations in multilingual file # CROWDIN BUNDLE DOWNLOAD COMMAND crowdin.bundle.download.usage.description=Download bundle diff --git a/src/test/java/com/crowdin/cli/commands/picocli/PicocliTestUtils.java b/src/test/java/com/crowdin/cli/commands/picocli/PicocliTestUtils.java index 3832ac66a..03e128b0e 100644 --- a/src/test/java/com/crowdin/cli/commands/picocli/PicocliTestUtils.java +++ b/src/test/java/com/crowdin/cli/commands/picocli/PicocliTestUtils.java @@ -102,7 +102,7 @@ void mockActions() { .thenReturn(actionMock); when(actionsMock.bundleList(anyBoolean(), anyBoolean())) .thenReturn(actionMock); - when(actionsMock.bundleAdd(any(), any(), any(), any(), any(), any(), anyBoolean())) + when(actionsMock.bundleAdd(any(), any(), any(), any(), any(), any(), anyBoolean(), anyBoolean(), anyBoolean())) .thenReturn(actionMock); when(actionsMock.preTranslate(any(), any(), any(), any(), any(), any(), any(), any(), any(), any(), anyBoolean(), anyBoolean(), any(), any())) .thenReturn(actionMock); From 4779ba5ca2d2b0803e11e64a3c76306c5d99591e Mon Sep 17 00:00:00 2001 From: Yevheniy Oliynyk Date: Fri, 18 Oct 2024 19:19:17 +0200 Subject: [PATCH 2/2] fix --- .../crowdin/cli/commands/actions/BundleAddActionTest.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/crowdin/cli/commands/actions/BundleAddActionTest.java b/src/test/java/com/crowdin/cli/commands/actions/BundleAddActionTest.java index 0c6977828..1acdaca28 100644 --- a/src/test/java/com/crowdin/cli/commands/actions/BundleAddActionTest.java +++ b/src/test/java/com/crowdin/cli/commands/actions/BundleAddActionTest.java @@ -44,6 +44,8 @@ public void testBundleAdd(String name, String format, List source, List< request.setLabelIds(labels); request.setIgnorePatterns(ignore); request.setSourcePatterns(source); + request.setIncludeProjectSourceLanguage(false); + request.setIsMultilingual(false); ClientBundle client = mock(ClientBundle.class); when(client.addBundle(request)) @@ -55,7 +57,7 @@ public void testBundleAdd(String name, String format, List source, List< setIgnorePatterns(request.getIgnorePatterns()); setSourcePatterns(request.getSourcePatterns()); }}); - action = new BundleAddAction(name, format, source, ignore, translation, labels, false); + action = new BundleAddAction(name, format, source, ignore, translation, labels, false, false, false); action.act(Outputter.getDefault(), pb, client); verify(client).addBundle(request); verifyNoMoreInteractions(client); @@ -82,11 +84,13 @@ public void testAddBundleThrows() { request.setLabelIds(null); request.setIgnorePatterns(null); request.setSourcePatterns(null); + request.setIsMultilingual(false); + request.setIncludeProjectSourceLanguage(false); when(client.addBundle(request)) .thenThrow(new RuntimeException("Whoops")); - action = new BundleAddAction("", "", null, null, null, null, false); + action = new BundleAddAction("", "", null, null, null, null, false, false, false); assertThrows(RuntimeException.class, () -> action.act(Outputter.getDefault(), pb, client)); verify(client).addBundle(request);