private void RunScript(DTE2 dte, Script script) { string stdin = GetStdin(dte, script.StdinMode); Runner r = new Runner("cmd", "/c " + script.Command); FillEnvironment(dte, r); r.Run(stdin); dte.StatusBar.Text = string.Format("{0} {1} with exit code {2}", script.Name, r.ExitCode == 0 ? "succeeded" : "failed", r.ExitCode); dte.UndoContext.Open(script.Name, false); try { DoOutput(dte, script.StdoutMode, r.StdOut); DoOutput(dte, script.StderrMode, r.StdErr); } finally { dte.UndoContext.Close(); } }
private void FillEnvironment(DTE2 dte, Runner r) { r.AddEnv("FullPath", dte.ActiveDocument.FullName); r.AddEnv("Filename", Misc.GetPathFileNameWithoutExtension(dte.ActiveDocument.FullName)); r.AddEnv("Extension", Misc.GetPathExtension(dte.ActiveDocument.FullName)); r.AddEnv("Directory", Misc.GetPathDirectoryName(dte.ActiveDocument.FullName)); r.AddEnv("RootDir", Misc.GetPathRoot(dte.ActiveDocument.FullName)); r.AddEnv("TabSize", dte.ActiveDocument.TabSize.ToString()); }