static void CommandHelp(CommandArg[] args) { if (args.Length == 0) { foreach (var command in HeadlessTerminal.Shell.Commands) { HeadlessTerminal.Log("{0}: {1}", command.Key.PadRight(16), command.Value.help); } return; } string command_name = args[0].String.ToUpper(); if (!HeadlessTerminal.Shell.Commands.ContainsKey(command_name)) { HeadlessTerminal.Shell.IssueErrorMessage("Command {0} could not be found.", command_name); return; } var info = HeadlessTerminal.Shell.Commands[command_name]; if (info.help == null) { HeadlessTerminal.Log("{0} does not provide any help documentation.", command_name); } else if (info.hint == null) { HeadlessTerminal.Log(info.help); } else { HeadlessTerminal.Log("{0}\nUsage: {1}", info.help, info.hint); } }
static void CommandTime(CommandArg[] args) { var sw = new Stopwatch(); sw.Start(); HeadlessTerminal.Shell.RunCommand(JoinArguments(args)); sw.Stop(); HeadlessTerminal.Log("Time: {0}ms", (double)sw.ElapsedTicks / 10000); }
static void CommandSet(CommandArg[] args) { if (args.Length == 0) { foreach (var kv in HeadlessTerminal.Shell.Variables) { HeadlessTerminal.Log("{0}: {1}", kv.Key.PadRight(16), kv.Value); } return; } string variable_name = args[0].String; if (variable_name[0] == '$') { HeadlessTerminal.Log(TerminalLogType.Warning, "Warning: Variable name starts with '$', '${0}'.", variable_name); } HeadlessTerminal.Shell.SetVariable(variable_name, JoinArguments(args, 1)); }
static void CommandTrace(CommandArg[] args) { int log_count = HeadlessTerminal.Buffer.Logs.Count; if (log_count - 2 < 0) { HeadlessTerminal.Log("Nothing to trace."); return; } var log_item = HeadlessTerminal.Buffer.Logs[log_count - 2]; if (log_item.stack_trace == "") { HeadlessTerminal.Log("{0} (no trace)", log_item.message); } else { HeadlessTerminal.Log(log_item.stack_trace); } }
static void CommandPrint(CommandArg[] args) { HeadlessTerminal.Log(JoinArguments(args)); }