001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018package org.apache.commons.cli;
019
020/**
021 * A class that implements the <code>CommandLineParser</code> interface
022 * can parse a String array according to the {@link Options} specified
023 * and return a {@link CommandLine}.
024 *
025 * @author John Keyes (john at integralsource.com)
026 * @version $Revision: 680644 $, $Date: 2008-07-29 01:13:48 -0700 (Tue, 29 Jul 2008) $
027 */
028public interface CommandLineParser
029{
030    /**
031     * Parse the arguments according to the specified options.
032     *
033     * @param options the specified Options
034     * @param arguments the command line arguments
035     * @return the list of atomic option and value tokens
036     *
037     * @throws ParseException if there are any problems encountered
038     * while parsing the command line tokens.
039     */
040    CommandLine parse(Options options, String[] arguments) throws ParseException;
041
042    /**
043     * Parse the arguments according to the specified options and
044     * properties.
045     *
046     * @param options the specified Options
047     * @param arguments the command line arguments
048     * @param properties command line option name-value pairs
049     * @return the list of atomic option and value tokens
050     *
051     * @throws ParseException if there are any problems encountered
052     * while parsing the command line tokens.
053     */
054    /* To maintain binary compatibility, this is commented out.
055       It is still in the abstract Parser class, so most users will
056       still reap the benefit.
057    CommandLine parse(Options options, String[] arguments, Properties properties)
058               throws ParseException;
059     */
060
061    /**
062     * Parse the arguments according to the specified options.
063     *
064     * @param options the specified Options
065     * @param arguments the command line arguments
066     * @param stopAtNonOption specifies whether to continue parsing the
067     * arguments if a non option is encountered.
068     *
069     * @return the list of atomic option and value tokens
070     * @throws ParseException if there are any problems encountered
071     * while parsing the command line tokens.
072     */
073    CommandLine parse(Options options, String[] arguments, boolean stopAtNonOption) throws ParseException;
074
075    /**
076     * Parse the arguments according to the specified options and
077     * properties.
078     *
079     * @param options the specified Options
080     * @param arguments the command line arguments
081     * @param properties command line option name-value pairs
082     * @param stopAtNonOption specifies whether to continue parsing the
083     *
084     * @return the list of atomic option and value tokens
085     * @throws ParseException if there are any problems encountered
086     * while parsing the command line tokens.
087     */
088    /* To maintain binary compatibility, this is commented out.
089       It is still in the abstract Parser class, so most users will
090       still reap the benefit.
091    CommandLine parse(Options options, String[] arguments, Properties properties, boolean stopAtNonOption)
092            throws ParseException;
093     */
094}