Skip to content

Commit

Permalink
Merge pull request #4 from silentsoft/dev
Browse files Browse the repository at this point in the history
Bump version from 2.0.0 to 2.0.1
  • Loading branch information
silentsoft authored Aug 23, 2023
2 parents 0e813f8 + a90af77 commit 028150b
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 11 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 2.0.1 (6 Mar 2023)

### Bug Fixes
- Fixed an issue where multiple values with the same key were not being parsed correctly.

## 2.0.0 (29 Jan 2023)

### Breaking Changes
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<dependency>
<groupId>org.silentsoft</groupId>
<artifactId>arguments-parser</artifactId>
<version>2.0.0</version>
<version>2.0.1</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>org.silentsoft</groupId>
<artifactId>arguments-parser</artifactId>
<version>2.0.0</version>
<version>2.0.1</version>

<name>Arguments Parser</name>
<description>Arguments Parser is a simple java library to parse command line arguments.</description>
Expand Down
20 changes: 13 additions & 7 deletions src/main/java/org/silentsoft/arguments/parser/Arguments.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,25 +44,35 @@ public static ArgumentsParser parser(String[] args, ParsingOptions... parsingOpt
options = new ArrayList<ParsingOptions>();

if (args != null) {
Argument last = null;
for (String arg : args) {
if (arg.startsWith("-")) {
if (arg.matches("(-)+")) {
throw new InvalidArgumentsException("The argument key is missing.");
}

final Argument argument;
int indexOfEqual = arg.indexOf("=");
if (indexOfEqual == -1) {
add(Argument.of(arg));
argument = Argument.of(arg);
add(argument);
} else {
String[] pair = arg.split("=", 2);
add(Argument.of(pair[0], pair[1]));
if (get(pair[0]) == null) {
argument = Argument.of(pair[0], pair[1]);
add(argument);
} else {
argument = get(pair[0]);
argument.getValues().add(pair[1]);
}
}
last = argument;
} else {
if (isEmpty()) {
throw new InvalidArgumentsException("The first argument must be starts with '-' or '--'.");
}

last().getValues().add(arg);
last.getValues().add(arg);
}
}
}
Expand Down Expand Up @@ -100,10 +110,6 @@ private boolean add(Argument argument) {
return set.add(argument);
}

private Argument last() {
return set.last();
}

public int size() {
return set.size();
}
Expand Down
45 changes: 43 additions & 2 deletions src/test/java/org/silentsoft/arguments/parser/ArgumentsTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,13 @@ public void parseTest() throws InvalidArgumentsException {

Assert.assertEquals("b", arguments.get("-a").getValue());
Assert.assertEquals("B", arguments.get("-A").getValue());
Assert.assertEquals("B", arguments.get("--a").getValue());
Assert.assertEquals("B", arguments.get("--A").getValue());
Assert.assertEquals(2, arguments.get("--a").getValues().size());
Assert.assertEquals(2, arguments.get("--A").getValues().size());
Assert.assertEquals(arguments.get("--a"), arguments.get("--A"));
Assert.assertTrue(arguments.get("--a").getValues().contains("b"));
Assert.assertTrue(arguments.get("--a").getValues().contains("B"));
Assert.assertTrue(arguments.get("--A").getValues().contains("b"));
Assert.assertTrue(arguments.get("--A").getValues().contains("B"));
}
{
Arguments arguments = Arguments.parser(new String[] {"--hello-world"}).parse();
Expand Down Expand Up @@ -159,6 +164,20 @@ public void parseTest() throws InvalidArgumentsException {
Assert.assertTrue(arguments.get("--key1").getValues().contains("value2"));
Assert.assertFalse(arguments.get("--key1").getValues().contains("value3"));

Assert.assertTrue(arguments.containsKey("--key2"));
Assert.assertEquals(2, arguments.get("--key2").getValues().size());
Assert.assertTrue(arguments.get("--key2").getValues().contains("value3"));
Assert.assertTrue(arguments.get("--key2").getValues().contains("value4"));
Assert.assertFalse(arguments.get("--key2").getValues().contains("value5"));
}
{
Arguments arguments = Arguments.parser(new String[] {"--key2", "value3", "value4", "--key1", "value1", "value2"}).parse();
Assert.assertTrue(arguments.containsKey("--key1"));
Assert.assertEquals(2, arguments.get("--key1").getValues().size());
Assert.assertTrue(arguments.get("--key1").getValues().contains("value1"));
Assert.assertTrue(arguments.get("--key1").getValues().contains("value2"));
Assert.assertFalse(arguments.get("--key1").getValues().contains("value3"));

Assert.assertTrue(arguments.containsKey("--key2"));
Assert.assertEquals(2, arguments.get("--key2").getValues().size());
Assert.assertTrue(arguments.get("--key2").getValues().contains("value3"));
Expand All @@ -178,6 +197,28 @@ public void valueTest() throws InvalidArgumentsException {
Assert.assertEquals(Arrays.asList("a", "b"), arguments.getValues("--not-existing-key", Arrays.asList("a", "b")));
}

@Test
public void valuesTest() throws InvalidArgumentsException {
{
Arguments arguments = Arguments.parser(new String[] {"--d-token=aaaa-bbbb-cccc-dddd", "--d-tags=tag-b", "tag-a"}).parse();
Assert.assertEquals("aaaa-bbbb-cccc-dddd", arguments.getValue("--d-token"));
Assert.assertEquals(Arrays.asList("aaaa-bbbb-cccc-dddd"), arguments.getValues("--d-token"));
Assert.assertEquals(Arrays.asList("tag-b", "tag-a"), arguments.getValues("--d-tags"));
}
{
Arguments arguments = Arguments.parser(new String[] {"--d-token=aaaa-bbbb-cccc-dddd", "--d-tags=tag-b", "--d-tags=tag-a"}).parse();
Assert.assertEquals("aaaa-bbbb-cccc-dddd", arguments.getValue("--d-token"));
Assert.assertEquals(Arrays.asList("aaaa-bbbb-cccc-dddd"), arguments.getValues("--d-token"));
Assert.assertEquals(Arrays.asList("tag-b", "tag-a"), arguments.getValues("--d-tags"));
}
{
Arguments arguments = Arguments.parser(new String[] {"--d-token=aaaa-bbbb-cccc-dddd", "--d-tags", "tag-b", "tag-a"}).parse();
Assert.assertEquals("aaaa-bbbb-cccc-dddd", arguments.getValue("--d-token"));
Assert.assertEquals(Arrays.asList("aaaa-bbbb-cccc-dddd"), arguments.getValues("--d-token"));
Assert.assertEquals(Arrays.asList("tag-b", "tag-a"), arguments.getValues("--d-tags"));
}
}

@Test
public void helpTest() throws InvalidArgumentsException {
AtomicBoolean called = new AtomicBoolean(false);
Expand Down

0 comments on commit 028150b

Please sign in to comment.