public static void Main(string[] args) { Bootstrapper.Initialize(); args = Bootstrapper.Settings.Parse(args); if (args.Length == 0) { printUsage(); return; } var execute = Bootstrapper.GetDispatcher(); var parser = new CommandStringParser(); execute.For( parser.GetCommand(args), parser.GetArguments(args)); }
void handle(string commandMessage) { var msg = CommandMessage.New(commandMessage); var command = new CommandStringParser().GetArgumentString(msg.Arguments.ToArray()); var fullCommand = msg.Command + " " + command; handle(new MessageArgs(Guid.Empty, fullCommand.Trim())); }
public void Execute(string[] arguments) { var instance = _codeEngineFactory.GetInstance(Environment.CurrentDirectory); if (instance == null) return; var args = ""; if (arguments.Length == 1) args = arguments[0]; else args = new CommandStringParser().GetArgumentString(arguments); run(instance, args); }
void Handle_editorRecievedMessage(object sender, MessageArgs e) { var msg = CommandMessage.New(e.Message); var command = new CommandStringParser().GetArgumentString(msg.Arguments); var fullCommand = msg.Command + " " + command; handle(new MessageArgs(Guid.Empty, fullCommand.Trim())); }
private static bool handleOiLnk(ref string command, ref string arguments, string workingDir, Action<bool, string> onRecievedLine, KeyValuePair<string,string>[] replacements) { if (Path.GetExtension(command) != ".oilnk") return false; var args = new CommandStringParser(' ').Parse(arguments); var lnk = OiLnkReader.Read(File.ReadAllText(command)); foreach (var handler in lnk.Handlers) { if (handler.Matches(args.ToArray())) { handler.WriteResponses((line) => onRecievedLine(false, line)); return true; } } if (lnk.LinkCommand == null) return true; var fileDir = Path.GetDirectoryName(command); if (fileDir != null && File.Exists(Path.Combine(fileDir, lnk.LinkCommand))) command = Path.Combine(fileDir, lnk.LinkCommand); else if (File.Exists(Path.Combine(workingDir, lnk.LinkCommand))) command = Path.Combine(workingDir, lnk.LinkCommand); else command = lnk.LinkCommand; var originalArguments = arguments; foreach (var replacement in replacements) originalArguments = originalArguments.Replace(replacement.Key, ""); arguments = lnk.LinkArguments .Replace("{args}", originalArguments).Trim(); return false; }
private void dispatchAndCompleteMessage(string command, Action onCommandCompleted) { Logger.Write("Dispatching " + command); if (command.Length == 0) { Console.WriteLine(); } else if (isError(command)) { printError(command); } else if (isWarning(command)) { printWarning(command); } else if (isCommand(command) || isEvent(command)) { lock (_commandProcessLock) { _commandsInProcessing++; } ThreadPool.QueueUserWorkItem((m) => { if (isCommand(command)) { var prefix = getCommandPrefix(command); var parser = new CommandStringParser(); var args = parser.Parse( command.Substring(prefix.Length, command.Length - prefix.Length)) .ToArray(); if (args.Length == 0) { Logger.Write("No commands specified for " + command); } DefinitionCacheItem cmd = null; if (prefix == "command|") cmd = GetDefinitionBuilder().Get(args); else if (prefix == "command-builtin|") cmd = GetDefinitionBuilder().GetBuiltIn(args); else if (prefix == "command-language|") cmd = GetDefinitionBuilder().GetLanguage(args); else if (prefix == "command-languagescript|") cmd = GetDefinitionBuilder().GetLanguageScript(args); else if (prefix == "command-script|") cmd = GetDefinitionBuilder().GetScript(args); else if (prefix == "command-original|") cmd = GetDefinitionBuilder().GetOriginal(args); if (cmd != null) { new CommandRunner(EventDispatcher) .Run(cmd, args); } else { Logger.Write("Could not find handler for " + command); } onCommandCompleted(); } else if (isEvent(command)) { var prefix = "event|"; EventDispatcher() .Forward(command.Substring(prefix.Length, command.Length - prefix.Length)); } lock (_commandProcessLock) { _commandsInProcessing--; } }, null); } else { Console.WriteLine(command); } }
public string[] Parse(string[] args) { var newArgs = new List<string>(); foreach (var arg in args) { if (arg.StartsWith(DEFAULT_LANGUAGE)) { DefaultLanguage = arg .Substring(DEFAULT_LANGUAGE.Length, arg.Length - DEFAULT_LANGUAGE.Length); continue; } else if (arg.StartsWith(ENABLED_LANGUAGES)) { EnabledLanguages = new CommandStringParser(',') .Parse(arg .Substring( ENABLED_LANGUAGES.Length, arg.Length - ENABLED_LANGUAGES.Length)).ToArray(); continue; } else if (arg == ENABLE_LOGGING) { LoggingEnabled = true; continue; } else if (arg == RAW_OUTPUT) { RawOutput = true; continue; } newArgs.Add(arg); } return newArgs.ToArray(); }
private static bool handleOiLnk(ref string command, ref string arguments, string workingDir, Action<bool, string> onRecievedLine, KeyValuePair<string,string>[] replacements) { if (Path.GetExtension(command) != ".oilnk") return false; var fileDir = Path.GetDirectoryName(command); var args = new CommandStringParser(' ').Parse(arguments); var lnk = OiLnkReader.Read(File.ReadAllText(command)); if ((args.Count() == 2 && args.ElementAt(1) == "get-command-definitions") || (args.Count() == 1 && args.ElementAt(0) == "reactive-script-reacts-to")) { // Run preparer if exists if (lnk.Preparer != null) { var preparerArgs = new CommandStringParser(' ').Parse(lnk.Preparer); if (preparerArgs.Count() > 0) { var preparerFile = Path.Combine(fileDir, Path.GetFileNameWithoutExtension(command)+"-files", preparerArgs.ElementAt(0)); var preparerArguments = ""; if (preparerArgs.Count() > 1) preparerArguments = new CommandStringParser(' ').GetArgumentString(preparerArgs.Skip(1).ToArray()); Logger.Write("Running preparer: "+preparerFile); if (File.Exists(preparerFile)) { string[] errors; var output = new Process() .QueryAll(preparerFile, preparerArguments, false, workingDir, out errors); var hasErrors = false; foreach (var line in output) { if (line.StartsWith("error|")) { onRecievedLine(true, line.Substring(6, line.Length-6)); hasErrors = true; } } foreach (var line in errors) { if (line.Trim().Length > 0) { onRecievedLine(true, line); hasErrors = true; } } if (hasErrors) return true; } } } else { Logger.Write("No preparer registered"); } } foreach (var handler in lnk.Handlers) { if (handler.Matches(args.ToArray())) { handler.WriteResponses((line) => onRecievedLine(false, line)); return true; } } if (lnk.LinkCommand == null) return true; if (fileDir != null && File.Exists(Path.Combine(fileDir, lnk.LinkCommand))) command = Path.Combine(fileDir, lnk.LinkCommand); else if (File.Exists(Path.Combine(workingDir, lnk.LinkCommand))) command = Path.Combine(workingDir, lnk.LinkCommand); else command = lnk.LinkCommand; // This is a terrible hack, shame on me!!!!!!! // If get command definitions don't mess with arguments if ( (args.Count() == 2 && args.ElementAt(1) == "get-command-definitions") || (args.Count() == 1 && args.ElementAt(0) == "reactive-script-reacts-to") ) { return false; } var originalArguments = arguments; foreach (var replacement in replacements) originalArguments = originalArguments.Replace(replacement.Key, ""); arguments = lnk.LinkArguments .Replace("{args}", originalArguments).Trim(); return false; }
public void Setup() { _parser = new CommandStringParser(); }
private void dispatchMessage(string command) { if (command.Length == 0) return; var parser = new CommandStringParser(); var args = parser.Parse(command); if (isError(command)) { printError(command); return; } if (isComment(command)) { printComment(command); return; } _dispatcher.For( parser.GetCommand(args), parser.GetArguments(args)); }
private void userSelect(MessageArgs message, Editor editor) { var state = new ConfigReader(_endpoint.Token).Get("oi.userselect.ui.fallback"); if (state == "disabled") return; _ctx.Post((s) => { try { var args = new CommandStringParser().Parse(message.Message).ToArray(); var items = new List<string>(); var keys = new List<string>(); foreach (var item in args[3].Split(new[] {','})) { var chunks = item.Split(new[] {"||"}, StringSplitOptions.None); if (chunks.Length > 1) { keys.Add(chunks[0]); items.Add(chunks[1]); } else { keys.Add(item); items.Add(item); } } var command = "user-selected"; if (message.Message.StartsWith("user-select-at-caret ")) command = "user-selected-at-caret"; var form = new UserSelectForm(items, keys, (item) => { if (item != null) _endpoint.PublishEvent(command+" '" + args[2] + "' '" + item + "'"); else _endpoint.PublishEvent(command+" '" + args[2] + "' 'user-cancelled'"); editor.SetFocus(); }); form.Show(this); setToForeground(form); } catch { } }, null); }
private void userInput(MessageArgs message, Editor editor) { Logger.Write("Getting state for userinput fallback"); var state = new ConfigReader(_endpoint.Token).Get("oi.userinput.ui.fallback"); Logger.Write("State is "+state); if (state == "disabled") return; _ctx.Post((s) => { Logger.Write("Launching user input form"); try { var args = new CommandStringParser().Parse(message.Message).ToArray(); var defaultValue = ""; if (args.Length > 3) defaultValue = args[3]; var form = new UserInputForm(defaultValue, (item) => { if (item != null) _endpoint.PublishEvent("user-inputted '" + args[2] + "' '" + item + "'"); else _endpoint.PublishEvent("user-inputted '" + args[2] + "' 'user-cancelled'"); editor.SetFocus(); }); form.Show(this); setToForeground(form); } catch (Exception ex) { Logger.Write(ex); } }, null); }