package org.mutabilitydetector.cli; /* * #%L * MutabilityDetector * %% * Copyright (C) 2008 - 2014 Graham Allan * %% * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * #L% */ import static java.util.Arrays.copyOf; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.GnuParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; /** * Interacts with the Apache CLI to parse the options from the command line arguments. Delegates to a * {@link ParsingAction} to allow extracting the options. */ public class OptionParserHelper { private Options options; private String[] args; public OptionParserHelper(Options options, String[] args) { this.options = options; this.args = copyOf(args, args.length); } public void parseOptions(ParsingAction action) { try { CommandLineParser parser = new GnuParser(); CommandLine line = parser.parse(options, args); action.doParsingAction(line); } catch (ParseException e) { System.out.println("Parsing command line options failed.%nReason: " + e.getMessage()); throw new CommandLineOptionsException(e); } } } interface ParsingAction { void doParsingAction(CommandLine line); }