1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.apache.commons.cli2;
18
19 import java.util.List;
20
21 /**
22 * A CommandLine that detected values and options can be written to.
23 */
24 public interface WriteableCommandLine extends CommandLine {
25
26 /**
27 * Adds an Option to the CommandLine
28 * @param option the Option to add
29 */
30 void addOption(final Option option);
31
32 /**
33 * Adds a value to an Option in the CommandLine.
34 * @param option the Option to add to
35 * @param value the value to add
36 */
37 void addValue(final Option option, final Object value);
38
39 /**
40 * Retrieves the Argument values specified on the command line for the
41 * specified Option, this doesn't return any values supplied
42 * programmatically as defaults.
43 *
44 * @param option the Option associated with the values
45 * @return a list of values or an empty List if none are found
46 */
47 List getUndefaultedValues(final Option option);
48
49 /**
50 * Sets the default values for an Option in the CommandLine
51 * @param option the Option to add to
52 * @param defaultValues the defaults for the option
53 */
54 void setDefaultValues(final Option option, final List defaultValues);
55
56 /**
57 * Adds a switch value to an Option in the CommandLine.
58 * @param option the Option to add to
59 * @param value the switch value to add
60 * @throws IllegalStateException if the switch has already been added
61 */
62 void addSwitch(final Option option, final boolean value) throws IllegalStateException;
63
64 /**
65 * Sets the default state for a Switch in the CommandLine.
66 * @param option the Option to add to
67 * @param defaultSwitch the defaults state for ths switch
68 */
69 void setDefaultSwitch(final Option option, final Boolean defaultSwitch);
70
71 /**
72 * Adds a property value to a name in the CommandLine.
73 * Replaces any existing value for the property.
74 *
75 * @param option the Option to add to
76 * @param property the name of the property
77 * @param value the value of the property
78 */
79 void addProperty(final Option option, final String property, final String value);
80
81 /**
82 * Adds a property value to the default property set.
83 * Replaces any existing value for the property.
84 *
85 * @param property the name of the property
86 * @param value the value of the property
87 */
88 void addProperty(final String property, final String value);
89
90 /**
91 * Detects whether the argument looks like an Option trigger
92 * @param argument the argument to test
93 * @return true if the argument looks like an Option trigger
94 */
95 boolean looksLikeOption(final String argument);
96
97 /**
98 * Returns the option that is currently processed.
99 *
100 * @return the current option
101 */
102 Option getCurrentOption();
103
104 /**
105 * Sets the current option. This method is called by concrete option
106 * implementations during command line processing. It enables the command
107 * line to keep track about the option that is currently processed.
108 *
109 * @param currentOption the new current option
110 */
111 void setCurrentOption(Option currentOption);
112 }