blob: cec8f7aa410bba912cc9d817fb8c4a5ce39e2d6a [file] [log] [blame]
/*
* Copyright 2006 Google Inc.
*
* 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.
*/
package com.google.gwt.util.tools;
/**
* Base class for command line argument handlers.
*/
public abstract class ArgHandler {
public String[] getDefaultArgs() {
return null;
}
public abstract String getPurpose();
public abstract String getTag();
/**
* The set of tags matched by this argument handler. By default includes just the one primary tag
* mentioned in getTag() but can be overridden to provide broader matching.
*/
public String[] getTags() {
return new String[] {getTag()};
}
/**
* The tag to display in help messages.
*/
public String getHelpTag() {
return getTag();
}
/**
* A list of words representing the arguments in help text.
*/
public abstract String[] getTagArgs();
/**
* Attempts to process one flag or "extra" command-line argument (that appears
* without a flag).
* @param args the arguments passed in to main()
* @param tagIndex an index into args indicating the first argument to use.
* If this is a handler for a flag argument. Otherwise it's the index of the
* "extra" argument.
* @return the number of additional arguments consumed, not including the flag or
* extra argument. Alternately, returns -1 if the argument cannot be used. This will
* causes the program to abort and usage to be displayed.
*/
public abstract int handle(String[] args, int tagIndex);
public boolean isRequired() {
return false;
}
public boolean isUndocumented() {
return false;
}
public boolean isExperimental() {
return false;
}
}