Skip to content

Commit ee1593c

Browse files
committed
copied command line support from OHDM here.
1 parent 14b7329 commit ee1593c

File tree

3 files changed

+69
-1
lines changed

3 files changed

+69
-1
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package net.sharksystem.utils;
2+
3+
import java.util.HashMap;
4+
5+
public class Commandline {
6+
public static HashMap<String, String> parametersToMap(String args[], boolean valueRequired, String helpMessage) {
7+
if(valueRequired && args.length % 2 != 0) {
8+
System.err.println("malformed parameter list: each parameter needs a value. ");
9+
System.err.println(helpMessage);
10+
return null;
11+
}
12+
13+
HashMap<String, String> argumentMap = new HashMap<>();
14+
15+
int i = 0;
16+
while(i < args.length) {
17+
// key is followed by value. Key starts with -
18+
if(!args[i].startsWith("-")) {
19+
/* found parameter that does not start with '-'
20+
maybe shell parameters. Leave it alone. We are done here
21+
*/
22+
return argumentMap;
23+
}
24+
25+
// value can be empty
26+
if(args.length > i+1 && !args[i+1].startsWith("-")) {
27+
// it is a value
28+
argumentMap.put(args[i], args[i+1]);
29+
i += 2;
30+
} else {
31+
// no value - next parameter
32+
argumentMap.put(args[i], null);
33+
i += 1;
34+
}
35+
}
36+
37+
return argumentMap;
38+
}
39+
40+
41+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package net.sharksystem;
2+
3+
import net.sharksystem.utils.Commandline;
4+
import org.junit.Assert;
5+
import org.junit.Test;
6+
7+
import java.util.HashMap;
8+
9+
public class CommandlineTests {
10+
@Test
11+
public void test1() {
12+
String key0 = "-help";
13+
String key1 = "-o";
14+
String value1 = "xyz";
15+
String[] args = new String[] {key0, key1, value1};
16+
HashMap<String, String> argsMap = Commandline.parametersToMap(args, false, "helpmessage");
17+
18+
Assert.assertEquals(2, argsMap.size());
19+
20+
// 0
21+
Assert.assertNull(argsMap.get(key0));
22+
// 1
23+
String valueInMap = argsMap.get(key1);
24+
Assert.assertTrue(valueInMap.equalsIgnoreCase(value1));
25+
}
26+
}

test/net/sharksystem/V1TestSuite.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
LongerMessages.class,
2323
CryptoUsage.class,
2424
HelperTester.class,
25-
MultihopTests.class
25+
MultihopTests.class,
26+
CommandlineTests.class
2627
//E2EStreamPairLinkTestVersion2.class TODO
2728
})
2829
public class V1TestSuite {

0 commit comments

Comments
 (0)