Ejemplo n.º 1
0
        private static CommandResult Verb(CommandArgs args)
        {
            switch (args[0])
            {
            case "build":
                return(Build(args.Pop()));

            case "run":
                return(Run(args.Pop()));

            case "debug":
                return(Debug(args.Pop()));
            }
            return(null);
        }
Ejemplo n.º 2
0
        private static CommandResult Verb(CommandArgs args)
        {
            Console.WriteLine("Command: " + args.ToString());
            switch (args[0])
            {
            case "build":
                return(Build(args.Pop()));

            case "run":
                return(Run(args.Pop()));

            case "debug":
                return(Debug(args.Pop()));
            }
            return(null);
        }
Ejemplo n.º 3
0
        private static ProcessResult ExecAsync(CommandArgs args, bool redirect)
        {
            if (!args.IsSet())
            {
                return(null);
            }

            var fileName  = args[0].GetEnv();
            var arguments = args.Pop(1).ToString().GetEnv();

            var start = new ProcessStartInfo(fileName);

            if (arguments.Length > 0)
            {
                start.Arguments = arguments;
            }

            if (redirect)
            {
                start.RedirectStandardOutput = true;
                start.RedirectStandardError  = true;
                start.UseShellExecute        = false;
            }

            Console.WriteLine(fileName + " " + arguments);

            var proc = Process.Start(start);

            if (redirect)
            {
                var data  = proc.StandardOutput.ReadToEnd();
                var error = proc.StandardError.ReadToEnd();
                Console.WriteLine(data);
                Console.WriteLine(error);
            }

            return(new ProcessResult(proc));
        }
Ejemplo n.º 4
0
        private static ProcessResult ExecAsync(CommandArgs args, bool redirect, Action <string, Process> onNewLine = null, TimeSpan?timeout = null)
        {
            if (!args.IsSet())
            {
                return(null);
            }

            var fileName  = args[0].GetEnv();
            var arguments = args.Pop(1).ToString().GetEnv();

            var start = new ProcessStartInfo(fileName);

            if (arguments.Length > 0)
            {
                start.Arguments = arguments;
            }

            if (redirect)
            {
                start.RedirectStandardOutput = true;
                start.RedirectStandardError  = true;
                start.RedirectStandardError  = true;
                start.UseShellExecute        = false;
            }

            Console.WriteLine(fileName + " " + arguments);

            var proc   = Process.Start(start);
            var result = new ProcessResult(proc, timeout);

            if (redirect)
            {
                var th = new Thread(() =>
                {
                    var buf = new char[1];
                    var sb  = new StringBuilder();
                    while (true)
                    {
                        var count = proc.StandardOutput.Read(buf, 0, 1);
                        if (count == 0)
                        {
                            break;
                        }
                        Console.Write(buf[0]);
                        if (buf[0] == '\n')
                        {
                            var line = sb.ToString();
                            onNewLine?.Invoke(line, proc);
                            sb.Clear();
                        }
                        else
                        {
                            if (buf[0] != '\r')
                            {
                                sb.Append(buf[0]);
                            }
                        }
                    }
                });
                th.Start();

                //var data = proc.StandardOutput.ReadToEnd();
                var error = proc.StandardError.ReadToEnd();
                //Console.WriteLine(data);
                Console.WriteLine(error);
            }

            return(result);
        }