blob: b7a74b56bc4812fae30274109c8fcfdbdc893fdf [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.dev.util.arg;
import com.google.gwt.core.ext.TreeLogger;
import com.google.gwt.util.tools.ArgHandler;
/**
* Argument handler for processing the log level flag.
*/
public class ArgHandlerLogLevel extends ArgHandler {
private static final String OPTIONS_STRING = computeOptionsString();
private static String computeOptionsString() {
StringBuffer sb = new StringBuffer();
TreeLogger.Type[] values = TreeLogger.Type.values();
for (int i = 0, c = values.length; i < c; ++i) {
if (i > 0) {
sb.append(", ");
}
if (i + 1 == c) {
sb.append("or ");
}
sb.append(values[i].name());
}
return sb.toString();
}
private final OptionLogLevel options;
public ArgHandlerLogLevel(OptionLogLevel options) {
this.options = options;
}
@Override
public String[] getDefaultArgs() {
return new String[] {getTag(), getDefaultLogLevel().name()};
}
@Override
public String getPurpose() {
return "The level of logging detail: " + OPTIONS_STRING;
}
@Override
public String getTag() {
return "-logLevel";
}
@Override
public String[] getTagArgs() {
return new String[] {"level"};
}
@Override
public int handle(String[] args, int startIndex) {
if (startIndex + 1 < args.length) {
try {
TreeLogger.Type level = TreeLogger.Type.valueOf(args[startIndex + 1]);
options.setLogLevel(level);
return 1;
} catch (IllegalArgumentException e) {
// Argument did not match any enum value; fall through to error case.
}
}
System.err.println(getTag() + " should be followed by one of");
System.err.println(" " + OPTIONS_STRING);
return -1;
}
protected TreeLogger.Type getDefaultLogLevel() {
return TreeLogger.INFO;
}
}