Ampere.Program.Run C# (CSharp) Method

Run() static private method

static private Run ( string args ) : void
args string
return void
        static void Run(string[] args)
        {
            // parse CLI options
            var options = new Options();
            if (!CommandLineParser.Default.ParseArguments(args, options))
                return;

            // run continuously if that's what we specified on the command line
            while (true)
            {
                // run in a separate domain so we can unload assemblies
                var domain = AppDomain.CreateDomain("Script Runner", null, AppDomain.CurrentDomain.BaseDirectory, AppDomain.CurrentDomain.RelativeSearchPath, true);
                domain.AssemblyResolve += (o, e) => ScriptRunner.Resolver(null, e);

                var runner = (ScriptRunner)domain.CreateInstanceAndUnwrap(typeof(ScriptRunner).Assembly.FullName, typeof(ScriptRunner).FullName);
                BuildResults results = null;

                try
                {
                    results = runner.Run(options.BuildScript, options.LogLevel, nextBuildIsRebuild);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                nextBuildIsRebuild = false;
                AppDomain.Unload(domain);
                Console.WriteLine();
                Directory.SetCurrentDirectory(StartupPath);

                if (results == null)
                {
                    Console.WriteLine("Press return to try again.");
                    Console.ReadLine();
                    continue;
                }

                if (!results.ShouldRunAgain)
                    break;

                Console.WriteLine("Waiting for changes... (press enter to force a rebuild)");
                WaitForChanges(options, results);
                Console.WriteLine();
            }
        }