All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.gwt.dev.codeserver.Options Maven / Gradle / Ivy

/*
 * Copyright 2011 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.codeserver;

import com.google.gwt.dev.ArgProcessorBase;
import com.google.gwt.util.tools.ArgHandler;
import com.google.gwt.util.tools.ArgHandlerDir;
import com.google.gwt.util.tools.ArgHandlerExtra;
import com.google.gwt.util.tools.ArgHandlerInt;
import com.google.gwt.util.tools.ArgHandlerString;

import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;

/**
 * Defines the command-line options for the {@link CodeServer CodeServer's} main() method.
 *
 * 

These flags are EXPERIMENTAL and subject to change.

*/ public class Options { private File workDir; private List moduleNames = new ArrayList(); private final List sourcePath = new ArrayList(); private String bindAddress = "127.0.0.1"; private String preferredHost = "localhost"; private int port = 9876; /** * Sets each option to the appropriate value, based on command-line arguments. * If there is an error, prints error messages and/or usage to System.err. * @return true if the arguments were parsed successfully. */ public boolean parseArgs(String[] args) { return new ArgProcessor().processArgs(args); } /** * The top level of the directory tree where the code server keeps compiler output. */ File getWorkDir() { return workDir; } /** * The names of the module that will be compiled (along with all its dependencies). */ List getModuleNames() { return moduleNames; } /** * The IP address where the code server should listen. */ String getBindAddress() { return bindAddress; } /** * The hostname to put in a URL pointing to the code server. */ String getPreferredHost() { return preferredHost; } /** * The port where the code server will listen for HTTP requests. */ int getPort() { return port; } List getSourcePath() { return sourcePath; } private class ArgProcessor extends ArgProcessorBase { public ArgProcessor() { registerHandler(new BindAddressFlag()); registerHandler(new PortFlag()); registerHandler(new WorkDirFlag()); registerHandler(new SourceFlag()); registerHandler(new ModuleNameArgument()); } @Override protected String getName() { return CodeServer.class.getName(); } } private class BindAddressFlag extends ArgHandlerString { @Override public String getTag() { return "-bindAddress"; } @Override public String[] getTagArgs() { return new String[] {"address"}; } @Override public String getPurpose() { return "The ip address of the code server. Defaults to 127.0.0.1."; } @Override public boolean setString(String newValue) { try { InetAddress bindAddress = InetAddress.getByName(newValue); if (bindAddress.isAnyLocalAddress()) { preferredHost = InetAddress.getLocalHost().getHostName(); } else { preferredHost = newValue; } } catch (UnknownHostException e) { System.err.println("Can't resolve bind address: " + newValue); return false; } // Save the original since there's no way to get it back from an InetAddress. bindAddress = newValue; return true; } } private class PortFlag extends ArgHandlerInt { @Override public String getTag() { return "-port"; } @Override public String[] getTagArgs() { return new String[] {"port"}; } @Override public String getPurpose() { return "The port where the code server will run."; } @Override public void setInt(int newValue) { port = newValue; } } private class WorkDirFlag extends ArgHandlerDir { @Override public String getTag() { return "-workDir"; } @Override public String getPurpose() { return "The root of the directory tree where the code server will" + "write compiler output. If not supplied, a temporary directory" + "will be used."; } @Override public void setDir(File newValue) { workDir = newValue; } } private class SourceFlag extends ArgHandler { @Override public String getTag() { return "-src"; } @Override public String[] getTagArgs() { return new String[]{"dir"}; } @Override public String getPurpose() { return "A directory containing GWT source to be prepended to the classpath for compiling."; } @Override public int handle(String[] args, int startIndex) { if (startIndex + 1 >= args.length) { System.err.println(getTag() + " should be followed by the name of a directory"); return -1; } File candidate = new File(args[startIndex + 1]); if (!candidate.isDirectory()) { System.err.println("not a directory: " + candidate); return -1; } sourcePath.add(candidate); return 1; } } private class ModuleNameArgument extends ArgHandlerExtra { @Override public String[] getTagArgs() { return new String[] {"module"}; } @Override public String getPurpose() { return "The GWT modules that the code server should compile. (Example: com.example.MyApp)"; } @Override public boolean addExtraArg(String arg) { moduleNames.add(arg); return true; } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy