Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved CLI argument handling using picocli #1534

Merged
merged 31 commits into from
Mar 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c3c43b2
Migrated Lff.java from Apache Commons CLI to Picocli and created a te…
patilatharva Jan 10, 2023
7a76a70
Minor extra comments.
patilatharva Jan 10, 2023
60da2a3
Added custom IO support to standard help options' output - all CLI te…
patilatharva Jan 11, 2023
2fa97c0
Re-added member variable toolName in CliBase.
patilatharva Jan 11, 2023
e3a3d61
Refactored runTool into runTool and formatAllFiles for readability.
patilatharva Jan 11, 2023
ca74ddf
First draft for Lfc using Picocli - not handling bool options correct…
patilatharva Jan 11, 2023
4641829
Added support for boolean options + refactored runTool in Lfc.java.
patilatharva Jan 11, 2023
9cdfed1
Replaced CliBase.java with its picocli version.
patilatharva Jan 11, 2023
490f891
Better commenting + stylistic fixes.
patilatharva Jan 11, 2023
e7a0743
Removed all references to Apache Commons CLI.
patilatharva Jan 11, 2023
37ee4ed
Minor comment fixes.
patilatharva Jan 12, 2023
7b7f720
Minor formatting fix.
patilatharva Jan 12, 2023
32751ae
Refactoring: abstracted away path parsing/validation functionality.
patilatharva Jan 12, 2023
aba6e79
Options are types as Path where necessary + path parsing refactoring.
patilatharva Jan 12, 2023
66b5435
Merge branch 'master' into picocli
lhstrh Jan 12, 2023
c9027fa
Fixed filterPassOnProps algorithm.
patilatharva Jan 13, 2023
e68d0c2
Merge branch 'picocli' of https://github.com/lf-lang/lingua-franca in…
patilatharva Jan 13, 2023
1698adc
Fixed --threading flag data type.
patilatharva Jan 24, 2023
76d1bf4
Removed unnecessary option annotation attributes.
patilatharva Jan 25, 2023
62db624
Merge branch 'master' into picocli
patilatharva Jan 25, 2023
421a299
Changed option 'workers' to int type.
patilatharva Jan 30, 2023
b5f8349
Changed visibility of method invokeGenerator to private.
Feb 20, 2023
ddf7d18
Merge master into picocli
lhstrh Mar 2, 2023
2d0662d
Version info is now sourced from org.lflang.LocalStrings.
Mar 2, 2023
7756ce0
Merge branch 'picocli' of https://github.com/lf-lang/lingua-franca in…
Mar 2, 2023
d6b0c44
Javadoc for run method in CliBase.
Mar 2, 2023
2b362e3
Moved method filterPassOnProps to Lfc.java.
Mar 2, 2023
19e94a6
Fixed files option description.
Mar 2, 2023
1c5bd3d
Represented the external runtime path option as a Path.
Mar 2, 2023
453b25f
Javadoc for VersionProvider class.
Mar 2, 2023
4768d34
Improved VersionProvider javadoc.
Mar 3, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ subprojects {
implementation platform("org.eclipse.xtext:xtext-dev-bom:${xtextVersion}")
// https://mvnrepository.com/artifact/com.google.inject/guice
implementation group: 'com.google.inject', name: 'guice', version: guiceVersion
// https://mvnrepository.com/artifact/commons-cli/commons-cli
implementation group: 'commons-cli', name: 'commons-cli', version: commonsCliVersion
// https://picocli.info/
implementation group: 'info.picocli', name: 'picocli', version: picocliVersion
}
dependencies {
implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: kotlinVersion
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ group=org.lflang
version=0.4.1-SNAPSHOT

[versions]
commonsCliVersion=1.4
picocliVersion=4.7.0
googleJavaFormatVersion=1.15.0
guiceVersion=5.1.0
jacocoVersion=0.8.7
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
Expand Down Expand Up @@ -113,7 +114,7 @@ public void checkOk() {
}

public void checkFailed() {
assertEquals(1, exitCode);
assertTrue(exitCode > 0);
}

public void checkNoErrorOutput() {
Expand Down
5 changes: 2 additions & 3 deletions org.lflang.tests/src/org/lflang/tests/cli/LfcCliTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ public void testHelpArg() {
.verify(result -> {
result.checkOk();
result.checkNoErrorOutput();
result.checkStdOut(containsString("usage: lfc"));
result.checkStdOut(containsString("Usage: lfc"));
});
}

Expand All @@ -81,8 +81,7 @@ public void testVersion() {
public void testWrongCliArg() {
lfcTester.run("--notanargument", "File.lf")
.verify(result -> {
result.checkStdErr(containsString("Unrecognized option: --notanargument"));
result.checkStdErr(containsString("fatal error"));
result.checkStdErr(containsString("Unknown option: '--notanargument'"));
result.checkFailed();
});
}
Expand Down
5 changes: 2 additions & 3 deletions org.lflang.tests/src/org/lflang/tests/cli/LffCliTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ public void testHelpArg() {
ExecutionResult result = lffTester.run("--help", "--version");
result.checkOk();
result.checkNoErrorOutput();
result.checkStdOut(containsString("usage: lff"));
result.checkStdOut(containsString("Usage: lff"));
}

@Test
Expand All @@ -83,8 +83,7 @@ public void testVersion() {
@Test
public void testWrongCliArg() {
ExecutionResult result = lffTester.run("--notanargument", "File.lf");
result.checkStdErr(containsString("Unrecognized option: --notanargument"));
result.checkStdErr(containsString("fatal error"));
result.checkStdErr(containsString("Unknown option: '--notanargument'"));
result.checkFailed();
}

Expand Down
1 change: 0 additions & 1 deletion org.lflang/build.properties
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,5 @@ additional.bundles = org.eclipse.xtext.xbase,\
org.eclipse.emf.mwe2.launch,\
org.eclipse.emf.mwe2.lib,\
org.objectweb.asm,\
org.apache.commons.logging,\
org.apache.log4j,\
com.ibm.icu
Loading