private void ExtractWkHtmlToPdfFiles() { AssemblyFileExtractor assemblyFileExtractor = new AssemblyFileExtractor(name: "Rocket.PdfGenerator.WkHtmlToPdf"); assemblyFileExtractor.InitFileMap(); assemblyFileExtractor.ExtractFiles(_wkHtmlToPdfVersion, targetDirectory: PdfToolDirectory); }
public virtual void run(ChocolateyConfiguration configuration) { this.Log().Info("{0} is unpacking required files for use. Overwriting? {1}".format_with(ApplicationParameters.Name, configuration.Force)); // refactor - thank goodness this is temporary, cuz manifest resource streams are dumb // unpack the manifest file as well AssemblyFileExtractor.extract_all_resources_to_relative_directory(_fileSystem, Assembly.GetAssembly(typeof(ChocolateyUnpackSelfCommand)), _fileSystem.get_directory_name(_fileSystem.get_current_assembly_path()), new List <string>(), "chocolatey.console"); IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory( _fileSystem, assembly, _fileSystem.get_directory_name(_fileSystem.get_current_assembly_path()), folders, ApplicationParameters.ChocolateyFileResources, overwriteExisting: configuration.Force, logOutput: true); }
private static ConfigFileSettings get_config_file_settings(IFileSystem fileSystem, IXmlService xmlService) { var globalConfigPath = ApplicationParameters.GlobalConfigFileLocation; AssemblyFileExtractor.extract_text_file_from_assembly(fileSystem, Assembly.GetExecutingAssembly(), ApplicationParameters.ChocolateyConfigFileResource, globalConfigPath); return(xmlService.deserialize <ConfigFileSettings>(globalConfigPath)); }
private static void set_file_configuration(ChocolateyConfiguration config, IFileSystem fileSystem, IXmlService xmlService, Action <string> notifyWarnLoggingAction) { var globalConfigPath = ApplicationParameters.GlobalConfigFileLocation; AssemblyFileExtractor.extract_text_file_from_assembly(fileSystem, Assembly.GetExecutingAssembly(), ApplicationParameters.ChocolateyConfigFileResource, globalConfigPath); var configFileSettings = xmlService.deserialize <ConfigFileSettings>(globalConfigPath); var sources = new StringBuilder(); foreach (var source in configFileSettings.Sources.or_empty_list_if_null()) { sources.AppendFormat("{0};", source.Value); } if (sources.Length != 0) { config.Sources = sources.Remove(sources.Length - 1, 1).ToString(); } config.CacheLocation = !string.IsNullOrWhiteSpace(configFileSettings.CacheLocation) ? configFileSettings.CacheLocation : System.Environment.GetEnvironmentVariable("TEMP"); if (string.IsNullOrWhiteSpace(config.CacheLocation)) { config.CacheLocation = fileSystem.combine_paths(ApplicationParameters.InstallLocation, "temp"); } FaultTolerance.try_catch_with_logging_exception( () => fileSystem.create_directory_if_not_exists(config.CacheLocation), "Could not create temp directory at '{0}'".format_with(config.CacheLocation), logWarningInsteadOfError: true); config.ContainsLegacyPackageInstalls = configFileSettings.ContainsLegacyPackageInstalls; if (configFileSettings.CommandExecutionTimeoutSeconds <= 0) { configFileSettings.CommandExecutionTimeoutSeconds = ApplicationParameters.DefaultWaitForExitInSeconds; } config.CommandExecutionTimeoutSeconds = configFileSettings.CommandExecutionTimeoutSeconds; set_feature_flags(config, configFileSettings); if (!config.PromptForConfirmation) { if (notifyWarnLoggingAction != null) { const string logMessage = @" Config has insecure allowGlobalConfirmation set to true. This setting lowers the integrity of the security of your system. If this is not intended, please change the setting using the feature command. "; notifyWarnLoggingAction.Invoke(logMessage); } } // save so all updated configuration items get set to existing config FaultTolerance.try_catch_with_logging_exception( () => xmlService.serialize(configFileSettings, globalConfigPath), "Error updating '{0}'. Please ensure you have permissions to do so".format_with(globalConfigPath), logWarningInsteadOfError: true); }
private void extract_resources() { //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(_container.GetInstance <IFileSystem>(), Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); }
/// <summary> /// Call this method to run chocolatey after you have set the options. /// </summary> public void Run() { //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(_fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); var runner = new GenericRunner(); runner.run(_configuration, _container, isConsole: false, parseArgs: null); }
private static void set_file_configuration(ChocolateyConfiguration config, IFileSystem fileSystem, IXmlService xmlService, Action <string> notifyWarnLoggingAction) { var globalConfigPath = ApplicationParameters.GlobalConfigFileLocation; AssemblyFileExtractor.extract_text_file_from_assembly(fileSystem, Assembly.GetExecutingAssembly(), ApplicationParameters.ChocolateyConfigFileResource, globalConfigPath); var configFileSettings = xmlService.deserialize <ConfigFileSettings>(globalConfigPath); var sources = new StringBuilder(); var defaultSourcesInOrder = configFileSettings.Sources.Where(s => !s.Disabled).or_empty_list_if_null().ToList(); if (configFileSettings.Sources.Any(s => s.Priority > 0)) { defaultSourcesInOrder = configFileSettings.Sources.Where(s => !s.Disabled && s.Priority != 0).OrderBy(s => s.Priority).or_empty_list_if_null().ToList(); defaultSourcesInOrder.AddRange(configFileSettings.Sources.Where(s => !s.Disabled && s.Priority == 0).or_empty_list_if_null().ToList()); } foreach (var source in defaultSourcesInOrder) { sources.AppendFormat("{0};", source.Value); } if (sources.Length != 0) { config.Sources = sources.Remove(sources.Length - 1, 1).ToString(); } set_machine_sources(config, configFileSettings); set_config_items(config, configFileSettings, fileSystem); FaultTolerance.try_catch_with_logging_exception( () => fileSystem.create_directory_if_not_exists(config.CacheLocation), "Could not create temp directory at '{0}'".format_with(config.CacheLocation), logWarningInsteadOfError: true); set_feature_flags(config, configFileSettings); // save so all updated configuration items get set to existing config FaultTolerance.try_catch_with_logging_exception( () => xmlService.serialize(configFileSettings, globalConfigPath), "Error updating '{0}'. Please ensure you have permissions to do so".format_with(globalConfigPath), logWarningInsteadOfError: true); }
private async Task <ConfigFileSettings> GetConfigFile() { var xmlService = _choco.Container().GetInstance <IXmlService>(); string configPath = ApplicationParameters.GlobalConfigFileLocation; // If config file does not exists, create default one. if (!File.Exists(configPath)) { AssemblyFileExtractor.extract_text_file_from_assembly(_fileSystem, chocolatey.infrastructure.adapters.Assembly.GetAssembly(typeof(GetChocolatey)), ApplicationParameters.ChocolateyConfigFileResource, configPath); } var config = await Task.Run( () => xmlService.deserialize <ConfigFileSettings>(configPath)); return(config); }
public void run(ChocolateyConfiguration configuration) { this.Log().Info("{0} is unpacking required files for use. Overwriting? {1}".format_with(ApplicationParameters.Name, configuration.Force)); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory( _fileSystem, assembly, ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources, overwriteExisting: configuration.Force); }
private void extract_resources() { //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; try { AssemblyFileExtractor.extract_all_resources_to_relative_directory(_container.GetInstance <IFileSystem>(), Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); } catch (Exception ex) { this.Log().Error("Unable to extract resources. Please ensure the ChocolateyInstall environment variable is set properly. Details:{0} {1}".format_with(Environment.NewLine, ex.ToString())); } }
public void run(ChocolateyConfiguration configuration) { this.Log().Info("{0} is unpacking required files for use. Overwriting? {1}".format_with(ApplicationParameters.Name, configuration.Force)); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory( _fileSystem, assembly, _fileSystem.get_directory_name(Assembly.GetExecutingAssembly().CodeBase.Replace("file:///", string.Empty)), folders, ApplicationParameters.ChocolateyFileResources, overwriteExisting: configuration.Force, logOutput: true); }
private static void set_file_configuration(ChocolateyConfiguration config, IFileSystem fileSystem, IXmlService xmlService) { var globalConfigPath = ApplicationParameters.GlobalConfigFileLocation; AssemblyFileExtractor.extract_text_file_from_assembly(fileSystem, Assembly.GetExecutingAssembly(), ApplicationParameters.ChocolateyConfigFileResource, globalConfigPath); var configFileSettings = xmlService.deserialize <ConfigFileSettings>(globalConfigPath); var sources = new StringBuilder(); foreach (var source in configFileSettings.Sources.or_empty_list_if_null()) { sources.AppendFormat("{0};", source.Value); } if (sources.Length != 0) { config.Sources = sources.Remove(sources.Length - 1, 1).ToString(); } config.CacheLocation = configFileSettings.CacheLocation; config.ContainsLegacyPackageInstalls = configFileSettings.ContainsLegacyPackageInstalls; if (configFileSettings.CommandExecutionTimeoutSeconds <= 0) { configFileSettings.CommandExecutionTimeoutSeconds = ApplicationParameters.DefaultWaitForExitInSeconds; } config.CommandExecutionTimeoutSeconds = configFileSettings.CommandExecutionTimeoutSeconds; set_feature_flags(config, configFileSettings); try { // save so all updated configuration items get set to existing config xmlService.serialize(configFileSettings, globalConfigPath); } catch (Exception ex) { "chocolatey".Log().Warn(() => "Error updating '{0}'. Please ensure you have permissions to do so.{1} {2}".format_with(globalConfigPath, Environment.NewLine, ex.Message)); } }
// ReSharper disable InconsistentNaming private static void Main(string[] args) // ReSharper restore InconsistentNaming { try { add_assembly_resolver(); string loggingLocation = ApplicationParameters.LoggingLocation; //no file system at this point if (!Directory.Exists(loggingLocation)) { Directory.CreateDirectory(loggingLocation); } Log4NetAppenderConfiguration.configure(loggingLocation); Bootstrap.initialize(); Bootstrap.startup(); var license = License.validate_license(); var container = SimpleInjectorContainer.Container; "LogFileOnly".Log().Info(() => "".PadRight(60, '=')); var config = container.GetInstance <ChocolateyConfiguration>(); var fileSystem = container.GetInstance <IFileSystem>(); var warnings = new List <string>(); ConfigurationBuilder.set_up_configuration( args, config, container, license, warning => { warnings.Add(warning); } ); Config.initialize_with(config); report_version_and_exit_if_requested(args, config); trap_exit_scenarios(config); warn_on_nuspec_or_nupkg_usage(args, config); if (config.RegularOutput) { #if DEBUG "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2} (DEBUG BUILD)".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); #else if (config.Information.ChocolateyVersion == config.Information.ChocolateyProductVersion && args.Any()) { "LogFileOnly".Log().Info(() => "{0} v{1}{2}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); } else { "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); } #endif if (args.Length == 0) { "chocolatley".Log().Info(ChocolateyLoggers.Important, () => "Please run 'choco -?' or 'choco <command> -?' for help menu."); } } if (warnings.Count != 0 && config.RegularOutput) { foreach (var warning in warnings.or_empty_list_if_null()) { "chocolatey".Log().Warn(ChocolateyLoggers.Important, warning); } } if (config.HelpRequested || config.UnsuccessfulParsing) { pause_execution_if_debug(); Environment.Exit(config.UnsuccessfulParsing? 1 : 0); } Log4NetAppenderConfiguration.set_logging_level_debug_when_debug(config.Debug, excludeLoggerName: "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Verbose.to_string())); Log4NetAppenderConfiguration.set_verbose_logger_when_verbose(config.Verbose, config.Debug, "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Verbose.to_string())); Log4NetAppenderConfiguration.set_trace_logger_when_trace(config.Trace, "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Trace.to_string())); "chocolatey".Log().Debug(() => "{0} is running on {1} v {2}".format_with(ApplicationParameters.Name, config.Information.PlatformType, config.Information.PlatformVersion.to_string())); //"chocolatey".Log().Debug(() => "Command Line: {0}".format_with(Environment.CommandLine)); remove_old_chocolatey_exe(fileSystem); AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(Program)), ApplicationParameters.InstallLocation, new List <string>(), "chocolatey.console"); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); var application = new ConsoleApplication(); application.run(args, config, container); } catch (Exception ex) { if (ApplicationParameters.is_debug_mode_cli_primitive()) { "chocolatey".Log().Error(() => "{0} had an error occur:{1}{2}".format_with( ApplicationParameters.Name, Environment.NewLine, ex.ToString())); } else { "chocolatey".Log().Error(ChocolateyLoggers.Important, () => "{0}".format_with(ex.Message)); } Environment.ExitCode = 1; } finally { "chocolatey".Log().Debug(() => "Exiting with {0}".format_with(Environment.ExitCode)); #if DEBUG "chocolatey".Log().Info(() => "Exiting with {0}".format_with(Environment.ExitCode)); #endif pause_execution_if_debug(); Bootstrap.shutdown(); Environment.Exit(Environment.ExitCode); } }
// ReSharper disable InconsistentNaming private static void Main(string[] args) // ReSharper restore InconsistentNaming { try { string loggingLocation = ApplicationParameters.LoggingLocation; //no file system at this point if (!Directory.Exists(loggingLocation)) { Directory.CreateDirectory(loggingLocation); } Log4NetAppenderConfiguration.configure(loggingLocation); Bootstrap.initialize(); Bootstrap.startup(); var container = SimpleInjectorContainer.Container; var config = container.GetInstance <ChocolateyConfiguration>(); var fileSystem = container.GetInstance <IFileSystem>(); var warnings = new List <string>(); ConfigurationBuilder.set_up_configuration( args, config, fileSystem, container.GetInstance <IXmlService>(), warning => { warnings.Add(warning); } ); Config.initialize_with(config); report_version_and_exit_if_requested(args, config); trap_exit_scenarios(config); if (config.RegularOutput) { "logfile".Log().Info(() => "".PadRight(60, '=')); #if DEBUG "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1} (DEBUG BUILD)".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion)); #else "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion)); #endif } if (warnings.Count != 0 && config.RegularOutput) { foreach (var warning in warnings.or_empty_list_if_null()) { "chocolatey".Log().Warn(ChocolateyLoggers.Important, warning); } } if (config.HelpRequested) { pause_execution_if_debug(); Environment.Exit(-1); } Log4NetAppenderConfiguration.set_verbose_logger_when_verbose(config.Verbose, ChocolateyLoggers.Verbose.to_string()); Log4NetAppenderConfiguration.set_logging_level_debug_when_debug(config.Debug); "chocolatey".Log().Debug(() => "{0} is running on {1} v {2}".format_with(ApplicationParameters.Name, config.Information.PlatformType, config.Information.PlatformVersion.to_string())); //"chocolatey".Log().Debug(() => "Command Line: {0}".format_with(Environment.CommandLine)); warn_when_admin_needs_elevation(config); remove_old_chocolatey_exe(fileSystem); LicenseValidation.validate(fileSystem); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); var application = new ConsoleApplication(); application.run(args, config, container); } catch (Exception ex) { var debug = false; // no access to the good stuff here, need to go a bit primitive in parsing args foreach (var arg in args.or_empty_list_if_null()) { if (arg.Contains("debug") || arg.is_equal_to("-d") || arg.is_equal_to("/d")) { debug = true; break; } } if (debug) { "chocolatey".Log().Error(() => "{0} had an error occur:{1}{2}".format_with( ApplicationParameters.Name, Environment.NewLine, ex.ToString())); } else { "chocolatey".Log().Error(ChocolateyLoggers.Important, () => "{0}".format_with(ex.Message)); } Environment.ExitCode = 1; } finally { "chocolatey".Log().Debug(() => "Exiting with {0}".format_with(Environment.ExitCode)); #if DEBUG "chocolatey".Log().Info(() => "Exiting with {0}".format_with(Environment.ExitCode)); #endif pause_execution_if_debug(); Bootstrap.shutdown(); Environment.Exit(Environment.ExitCode); } }
// ReSharper disable InconsistentNaming private static void Main(string[] args) // ReSharper restore InconsistentNaming { try { string loggingLocation = ApplicationParameters.LoggingLocation; //no file system at this point if (!Directory.Exists(loggingLocation)) { Directory.CreateDirectory(loggingLocation); } Log4NetAppenderConfiguration.configure(loggingLocation); Bootstrap.initialize(); Bootstrap.startup(); var license = LicenseValidation.validate(); if (license.is_licensed_version()) { try { var licensedAssembly = Assembly.LoadFile(ApplicationParameters.LicensedAssemblyLocation); license.AssemblyLoaded = true; license.Assembly = licensedAssembly; license.Version = VersionInformation.get_current_informational_version(licensedAssembly); Type licensedComponent = licensedAssembly.GetType(ApplicationParameters.LicensedComponentRegistry, throwOnError: false, ignoreCase: true); SimpleInjectorContainer.add_component_registry_class(licensedComponent); } catch (Exception ex) { "chocolatey".Log().Error( @"Error when attempting to load chocolatey licensed assembly. Ensure that chocolatey.licensed.dll exists at '{0}'. The error message itself may be helpful as well:{1} {2}".format_with( ApplicationParameters.LicensedAssemblyLocation, Environment.NewLine, ex.Message )); } } var container = SimpleInjectorContainer.Container; var config = container.GetInstance <ChocolateyConfiguration>(); var fileSystem = container.GetInstance <IFileSystem>(); var warnings = new List <string>(); ConfigurationBuilder.set_up_configuration( args, config, container, license, warning => { warnings.Add(warning); } ); Config.initialize_with(config); report_version_and_exit_if_requested(args, config); trap_exit_scenarios(config); if (config.RegularOutput) { "logfile".Log().Info(() => "".PadRight(60, '=')); #if DEBUG "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2} (DEBUG BUILD)".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); #else if (config.Information.ChocolateyVersion == config.Information.ChocolateyProductVersion && args.Any()) { "logfile".Log().Info(() => "{0} v{1}{2}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); } else { "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}{2}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion, license.is_licensed_version() ? " {0}".format_with(license.LicenseType) : string.Empty)); } #endif } if (warnings.Count != 0 && config.RegularOutput) { foreach (var warning in warnings.or_empty_list_if_null()) { "chocolatey".Log().Warn(ChocolateyLoggers.Important, warning); } } if (config.HelpRequested) { pause_execution_if_debug(); Environment.Exit(-1); } Log4NetAppenderConfiguration.set_logging_level_debug_when_debug(config.Debug, excludeLoggerName: "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Verbose.to_string())); Log4NetAppenderConfiguration.set_verbose_logger_when_verbose(config.Verbose, config.Debug, "{0}LoggingColoredConsoleAppender".format_with(ChocolateyLoggers.Verbose.to_string())); "chocolatey".Log().Debug(() => "{0} is running on {1} v {2}".format_with(ApplicationParameters.Name, config.Information.PlatformType, config.Information.PlatformVersion.to_string())); //"chocolatey".Log().Debug(() => "Command Line: {0}".format_with(Environment.CommandLine)); remove_old_chocolatey_exe(fileSystem); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources); var application = new ConsoleApplication(); application.run(args, config, container); } catch (Exception ex) { var debug = false; // no access to the good stuff here, need to go a bit primitive in parsing args foreach (var arg in args.or_empty_list_if_null()) { if (arg.Contains("debug") || arg.is_equal_to("-d") || arg.is_equal_to("/d")) { debug = true; break; } } if (debug) { "chocolatey".Log().Error(() => "{0} had an error occur:{1}{2}".format_with( ApplicationParameters.Name, Environment.NewLine, ex.ToString())); } else { "chocolatey".Log().Error(ChocolateyLoggers.Important, () => "{0}".format_with(ex.Message)); } Environment.ExitCode = 1; } finally { "chocolatey".Log().Debug(() => "Exiting with {0}".format_with(Environment.ExitCode)); #if DEBUG "chocolatey".Log().Info(() => "Exiting with {0}".format_with(Environment.ExitCode)); #endif pause_execution_if_debug(); Bootstrap.shutdown(); Environment.Exit(Environment.ExitCode); } }
// ReSharper disable InconsistentNaming private static void Main(string[] args) // ReSharper restore InconsistentNaming { try { Action failLogInit = () => { Log.InitializeWith <NLogLog>(); LogService.Instance.configure(); }; var config = Config.get_configuration_settings(); if (new ChocolateyOptionSet().Parse(args, new ChocolateyStartupCommand(), config, failLogInit)) { Environment.Exit(config.UnsuccessfulParsing ? 1 : 0); } string loggingLocation = ApplicationParameters.LoggingLocation; if (!Directory.Exists(loggingLocation)) { Directory.CreateDirectory(loggingLocation); } LogService.Instance.configure(loggingLocation); Bootstrap.initialize(); Bootstrap.startup(); //LogService.Test(); var container = SimpleInjectorContainer.Container; "LogFileOnly".Log().Info(() => "".PadRight(60, '=')); var fileSystem = container.GetInstance <IFileSystem>(); var warnings = new List <string>(); if (!ConfigurationBuilder.set_up_configuration( args, config, container, warning => { warnings.Add(warning); } )) { Environment.Exit(config.UnsuccessfulParsing ? 1 : 0); } if (config.Features.LogWithoutColor) { LogService.Instance.enableColors(false); } if (!string.IsNullOrWhiteSpace(config.AdditionalLogFileLocation)) { LogService.Instance.configureAdditionalLogFile(fileSystem.get_full_path(config.AdditionalLogFileLocation)); } report_version_and_exit_if_requested(args, config); trap_exit_scenarios(config); warn_on_nuspec_or_nupkg_usage(args, config); if (config.RegularOutput) { "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "{0} v{1}".format_with(ApplicationParameters.Name, config.Information.ChocolateyProductVersion)); if (args.Length == 0) { "chocolatey".Log().Info(ChocolateyLoggers.Important, () => "Please run 'choco -?' or 'choco <command> -?' for help menu."); } } if (warnings.Count != 0 && config.RegularOutput) { foreach (var warning in warnings.or_empty_list_if_null()) { "chocolatey".Log().Warn(ChocolateyLoggers.Important, warning); } } if (config.HelpRequested || config.UnsuccessfulParsing) { Environment.Exit(config.UnsuccessfulParsing ? 1 : 0); } LogService.Instance.adjustLogLevels(config.Debug, config.Verbose, config.Trace); "chocolatey".Log().Debug(() => "{0} is running on {1} v {2}".format_with(ApplicationParameters.Name, config.Information.PlatformType, config.Information.PlatformVersion.to_string())); //"chocolatey".Log().Debug(() => "Command Line: {0}".format_with(Environment.CommandLine)); remove_old_chocolatey_exe(fileSystem); AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(Program)), ApplicationParameters.InstallLocation, new List <string>(), "chocolatey.console", throwError: false); //refactor - thank goodness this is temporary, cuz manifest resource streams are dumb IList <string> folders = new List <string> { "helpers", "functions", "redirects", "tools" }; AssemblyFileExtractor.extract_all_resources_to_relative_directory(fileSystem, Assembly.GetAssembly(typeof(ChocolateyResourcesAssembly)), ApplicationParameters.InstallLocation, folders, ApplicationParameters.ChocolateyFileResources, throwError: false); var application = new ConsoleApplication(); application.run(args, config, container); } catch (Exception ex) { if (ApplicationParameters.is_debug_mode_cli_primitive()) { "chocolatey".Log().Error(() => "{0} had an error occur:{1}{2}".format_with( ApplicationParameters.Name, Environment.NewLine, ex.ToString())); } else { "chocolatey".Log().Error(ChocolateyLoggers.Important, () => "{0}".format_with(ex.Message)); "chocolatey".Log().Error(ChocolateyLoggers.LogFileOnly, () => "More Details: {0}".format_with(ex.ToString())); } if (Environment.ExitCode == 0) { Environment.ExitCode = 1; } } finally { "chocolatey".Log().Debug(() => "Exiting with {0}".format_with(Environment.ExitCode)); #if DEBUG || RELWITHDEBINFO "chocolatey".Log().Info(() => "Exiting with {0}".format_with(Environment.ExitCode)); #endif Bootstrap.shutdown(); Environment.Exit(Environment.ExitCode); } }