Example #1
0
        private async Task MainInternalAsync(string[] args)
        {
            _cmdOptions = CommandLineOptions.Parse(args, _console);
            var appdir         = _cmdOptions.MainAppDirectory.Value();
            var staticServe    = _cmdOptions.StaticServe.Value();
            var componentBuild = _cmdOptions.BuildComponent.Value();
            var cleanTemp      = _cmdOptions.CleanTemp.HasValue();

            if (cleanTemp)
            {
                PathUtility.CleanTempDirectory();
            }

            if (!string.IsNullOrEmpty(appdir))
            {
                appdir = NormalizePath(appdir);
                if (Directory.Exists(appdir))
                {
                    _console.Out.WriteLine("Main application directory is: " + appdir);

                    appdir = PathUtility.NormalizeRelavitePath(Directory.GetCurrentDirectory(), appdir);
                    HostingHelper.MainAppDirectory = Path.GetFullPath(appdir);
                }
            }

            if (!string.IsNullOrEmpty(staticServe))
            {
                staticServe = NormalizePath(staticServe);
                if (Directory.Exists(staticServe))
                {
                    _console.Out.WriteLine("Static files directory is: " + staticServe);
                    HostingHelper.StaticServe = staticServe;
                }
            }

            if (!string.IsNullOrEmpty(componentBuild))
            {
                componentBuild = NormalizePath(componentBuild);
                if (Directory.Exists(componentBuild))
                {
                    ComponentInfoBuilder.Build(_console, componentBuild);
                }
                else
                {
                    _console.Out.WriteLine("=====Exiting: Build directory does not exist: " + componentBuild);
                }

                return;
            }

            _cmdOptions.App.ShowHelp();

            _urls = new List <string>()
            {
                $"http://*:{HostingHelper.GetHostingPort()}"
            };

            await Task.Run(() =>
            {
                var contentRoot = Directory.GetCurrentDirectory();

#if RELEASE
                contentRoot = PathUtility.GetRootPath(true);
#endif
                var hostBuilder = new WebHostBuilder()
                                  .UseKestrel(options => options.AddServerHeader = false)
                                  .UseContentRoot(contentRoot)
                                  .UseUrls(_urls.ToArray())
                                  .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    var env = hostingContext.HostingEnvironment;
                    config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile($"appsettings.{env.EnvironmentName}.json",
                                 optional: true, reloadOnChange: true);

                    config.AddEnvironmentVariables();
                })
                                  .ConfigureLogging((webHostBuilderContext, logging) =>
                {
                    IConfiguration configuration  = webHostBuilderContext.Configuration;
                    ILoggingBuilder loggerBuilder = logging;

                    loggerBuilder.AddConfiguration(configuration.GetSection("Logging"));
                    loggerBuilder.AddConsole();
                    loggerBuilder.AddDebug();
                })
                                  .UseStartup <Startup>();
#if RELEASE
                hostBuilder.UseWebRoot(PathUtility.GetRootPath());
#endif

                bool serveStatic = !string.IsNullOrEmpty(HostingHelper.StaticServe);
                if (serveStatic)
                {
                    hostBuilder.UseWebRoot(HostingHelper.StaticServe);
                }

                var host = hostBuilder.Build();

                if (!serveStatic)
                {
                    var applicationLifetime = host.Services.GetService <IApplicationLifetime>();
                    applicationLifetime.ApplicationStarted.Register(ApplicationStarted);
                }

                host.Run();
            });
        }