Exemplo n.º 1
0
        static void Main(string[] args)
        {
            // PARSE ARGS
            var argsParser = new CommandLineParser.CommandLineParser();
            var parsedArgs = new ConsoleArgs();

            argsParser.ExtractArgumentAttributes(parsedArgs);
            argsParser.ParseCommandLine(args);

            if (parsedArgs.Rainbow)
            {
                LegacyProgram.Run(args);
            }
            else
            {
                Run(parsedArgs, argsParser);
            }
        }
Exemplo n.º 2
0
        private static void Run(ConsoleArgs parsedArgs, CommandLineParser.CommandLineParser argsParser)
        {
            if (parsedArgs.Help)
            {
                argsParser.ShowUsage();
                Environment.Exit(-1);
            }

            AssemblyLoadContext.Default.Resolving += (context, name) =>
            {
                var pluginDir = ResolvePluginPath(parsedArgs.PluginPath);

                // Try to load from the plugins directory. Else, fall back to the app directory
                if (File.Exists(Path.Combine(pluginDir, $"{name.Name}.dll")))
                {
                    return(context.LoadFromAssemblyPath(Path.Combine(pluginDir, $"{name.Name}.dll")));
                }
                return(context.LoadFromAssemblyPath(Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{name.Name}.dll"))));
            };

            var appRunTimer = new Stopwatch();

            appRunTimer.Start();

            var runner = new Runner();

            try
            {
                runner.Run(parsedArgs);
            }
            catch (FileNotFoundException ex)
            {
                new ConsoleLogger().Error(ex);
                Environment.Exit(1);
            }

            appRunTimer.Stop();

            if (parsedArgs.NoExit)
            {
                Console.ReadKey();
            }
        }