ef5752881e91ff150d87d60ae03168356aecd027
[meviz.git] / src / main / java / eu / svjatoslav / meviz / replace / 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.replace;
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.StringParameter;
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 StringParameter searchForPattern = parser
25             .add(new StringParameter("String to search for"))
26             .addAliases("-s", "--search-pattern").setMandatory();
27
28     private final StringParameter replaceWithPattern = parser.add(
29             new StringParameter("String to place instead")).addAliases("-p",
30             "--replace-pattern");
31
32     private final DirectoryParameter directoryParameter = parser
33             .add(new DirectoryParameter("Working directory."))
34             .addAliases("-w", "--working-directory").mustExist();
35
36     public CommandlineOptions parseCommandlineArguments(final String[] args) {
37
38         final CommandlineOptions options = new CommandlineOptions();
39
40         if (!parser.parse(args))
41             return null;
42
43         if (recursiveParameter.isSpecified())
44             options.recursive = true;
45
46         if (directoryParameter.isSpecified())
47             options.targetDirectory = directoryParameter.getValue();
48         else
49             options.targetDirectory = new File(System.getProperty("user.dir"));
50
51         if (searchForPattern.isSpecified())
52             options.searchForPattern = searchForPattern.getValue();
53
54         if (replaceWithPattern.isSpecified())
55             options.replaceWithPattern = replaceWithPattern.getValue();
56
57         return options;
58     }
59 }