@Override
public DaemonOperationOptions parseOptions(String[] operationArgs) throws Exception {
DaemonOperationOptions operationOptions = new DaemonOperationOptions();
OptionParser parser = new OptionParser();
OptionSet options = parser.parse(operationArgs);
List<?> nonOptionArgs = options.nonOptionArguments();
if (nonOptionArgs.size() == 0) {
throw new Exception("Invalid syntax, no action given (start, stop, reload, restart, status, force-stop, list, add, remove).");
}
String actionStr = nonOptionArgs.get(0).toString();
action = parseDaemonAction(actionStr);
operationOptions.setAction(action);
if (action == DaemonAction.ADD || action == DaemonAction.REMOVE) {
if (nonOptionArgs.size() < 2) {
throw new Exception("Invalid syntax, please specify a folder path.");
}
List<String> watchRoots = new ArrayList<>();
for (int i = 1; i < nonOptionArgs.size(); i++) {
watchRoots.add(nonOptionArgs.get(i).toString());
}
operationOptions.setWatchRoots(watchRoots);
}
return operationOptions;
}