CommandLine.java

package dev.civl.mc.run.IF;

import dev.civl.gmc.GMCConfiguration;

/**
 * A command line represents the command line information for running CIVL.
 * 
 * @author Manchun Zheng
 *
 */
public interface CommandLine {

	/**
	 * This contains the names of all commands supported by CIVL, either it is a
	 * normal command or a compare command.
	 * 
	 * @author zmanchun
	 *
	 */
	public enum CommandName {
		CONFIG, COMPARE, GUI, HELP, REPLAY, RUN, SHOW, VERIFY, COMPARE_REPLAY
	}

	public final static String CONFIG = "config";
	public final static String COMPARE = "compare";
	public final static String GUI = "gui";
	public final static String HELP = "help";
	public final static String REPLAY = "replay";
	public final static String RUN = "run";
	public final static String SHOW = "show";
	public final static String VERIFY = "verify";

	/**
	 * CIVL command line kinds: normal, or compare.
	 * 
	 * Normal command line contains one GMC section (anonymous), where compare
	 * command line has three GMC section (anonymous, impl, and spec).
	 * 
	 * @author Manchun Zheng
	 */
	public enum CommandLineKind {
		NORMAL, COMPARE
	}

	/**
	 * The kind of this command line
	 * 
	 * @return
	 */
	CommandLineKind commandLineKind();

	void setCommandString(String string);

	String getCommandString();

	GMCConfiguration gmcConfig();

	void setGMCConfig(GMCConfiguration config);

}