/******************************************************************************* * Copyright (c) 2002 - 2006 IBM Corporation. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package com.ibm.wala.util.io; import java.util.Properties; /** * utilities for parsing a command line */ public class CommandLine { /** * create a Properties object representing the properties set by the command * line args. if args[i] is "-foo" and args[i+1] is "bar", then the result * will define a property with key "foo" and value "bar" * * @throws IllegalArgumentException if args == null */ public static Properties parse(String[] args) throws IllegalArgumentException { if (args == null) { throw new IllegalArgumentException("args == null"); } Properties result = new Properties(); for (int i = 0; i < args.length; i++) { if (args[i] == null) { // skip it continue; } String key = parseForKey(args[i]); if (key != null) { if (args[i].contains("=")) { result.put(key, args[i].substring(args[i].indexOf('=') + 1)); } else { if ((i + 1) >= args.length || args[i + 1].charAt(0) == '-') { throw new IllegalArgumentException("Malformed command-line. Must be of form -key=value or -key value"); } result.put(key, args[i + 1]); i++; } } } return result; } /** * if string is of the form "-foo" or "-foo=", return "foo". else return null. */ private static String parseForKey(String string) { if (string.charAt(0) == '-') { if (string.contains("=")) { return string.substring(1, string.indexOf('=')); } else { return string.substring(1); } } else { return null; } } }