/********************************************************************** * Copyright (c) 2013, 2014 Ericsson * * 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: * Matthew Khouzam- Initial API and implementation **********************************************************************/ package org.eclipse.tracecompass.internal.tracing.rcp.ui.cli; import java.util.HashMap; import java.util.Map; import org.eclipse.tracecompass.internal.tracing.rcp.ui.messages.Messages; /** * Command line parser * * @author Matthew Khouzam */ public class CliParser { private static final String NOUI_ARG = "--NOUI"; //$NON-NLS-1$ private static final String OPEN_ARG = "--open"; //$NON-NLS-1$ private final Map<String, String> params = new HashMap<>(); /** Open key */ public static final String OPEN_FILE_LOCATION = ".,-=open=-,."; //$NON-NLS-1$ /** No ui key */ public static final String NO_UI = ".,-=noui=-,."; //$NON-NLS-1$ /** * Constructor * * @param args * the command line arguments * @throws TracingRCPCliException * an error occurred parsing the cli */ public CliParser(final String[] args) throws TracingRCPCliException { for (int i = 0; i < args.length; i++) { if (args[i].equals(OPEN_ARG)) { put(OPEN_FILE_LOCATION, args, i); // skip since we have two args i++; } else if (args[i].equals(NOUI_ARG)) { params.put(NO_UI, new String()); } } } private void put(String key, String[] args, int pos) throws TracingRCPCliException { if (args.length <= pos) { throw new TracingRCPCliException(Messages.CliParser_MalformedCommand + ':' + ' ' + args[pos]); } params.put(key, args[pos + 1]); } /** * Get a parameter from the parsed command line * @param key OPEN_FILE_LOCATION or NO_UI * @return the value of the parameter, can be null */ public String getArgument(String key) { return params.get(key); } }