59ec352991095b18f79a0ba9a3a616463ba571f7
[meviz.git] / src / main / java / eu / svjatoslav / meviz / bomremove / CommandlineHandler.java
1 /*
2  * Meviz - Various tools collection to work with multimedia. Author: Svjatoslav Agejenko.
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5
6
7 package eu.svjatoslav.meviz.bomremove;
8
9 import eu.svjatoslav.commons.commandline.parameterparser.Parser;
10 import eu.svjatoslav.commons.commandline.parameterparser.parameter.DirectoryParameter;
11 import eu.svjatoslav.commons.commandline.parameterparser.parameter.NullParameter;
12 import eu.svjatoslav.commons.commandline.parameterparser.parameter.StringParameters;
13
14 import java.io.File;
15
16 class CommandlineHandler {
17
18     final Parser parser = new Parser();
19
20     private final NullParameter recursiveParameter = parser.add(
21             new NullParameter("Enable recursive mode.")).addAliases("-r",
22             "--recursive");
23
24     private final StringParameters inputPatternParameter = parser.add(
25             new StringParameters("File input pattern.")).addAliases("-i",
26             "--input-pattern");
27
28     private final DirectoryParameter workingDirectoryParameter = parser
29             .add(new DirectoryParameter("Working directory."))
30             .addAliases("-w", "--working-directory").mustExist();
31
32     public BomStrippingOptions parseCommandlineArguments(final String[] args) {
33
34         final BomStrippingOptions options = new BomStrippingOptions();
35
36         if (!parser.parse(args))
37             return null;
38
39         if (recursiveParameter.isSpecified())
40             options.recursive = true;
41
42         if (workingDirectoryParameter.isSpecified())
43             options.targetDirectory = workingDirectoryParameter.getValue();
44         else
45             options.targetDirectory = new File(System.getProperty("user.dir"));
46
47         // TODO: add support for multiple input patterns
48         if (inputPatternParameter.isSpecified())
49             options.inputPatterns.addAll(inputPatternParameter.getValue());
50
51         return options;
52     }
53 }