public async Task SaveStatusAsync(ConfigStatus status) { var configPath = CliUtils.GetOsUserConfigFilePath(); var config = new Config { Status = status }; await FileUtils.WriteTextAsync(configPath, TranslateUtils.JsonSerialize(config)); }
static async Task Main(string[] args) { try { Console.OutputEncoding = Encoding.GetEncoding(936); } catch { try { Console.OutputEncoding = Encoding.UTF8; } catch { // ignored } } ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls; var contentRootPath = Directory.GetCurrentDirectory(); var profilePath = CliUtils.GetOsUserConfigFilePath(); var sscmsPath = PathUtils.Combine(contentRootPath, Constants.ConfigFileName); var builder = new ConfigurationBuilder() .SetBasePath(contentRootPath) .AddJsonFile(profilePath, optional: true, reloadOnChange: true) .AddJsonFile(sscmsPath, optional: true, reloadOnChange: true) .AddEnvironmentVariables(); var configuration = builder.Build(); Log.Logger = new LoggerConfiguration() .WriteTo.File("logs/cli/log.log", rollingInterval: RollingInterval.Day) .Enrich.FromLogContext() .CreateLogger(); var services = new ServiceCollection(); var entryAssembly = Assembly.GetExecutingAssembly(); var assemblies = new List <Assembly> { entryAssembly }.Concat(entryAssembly.GetReferencedAssemblies().Select(Assembly.Load)); var settingsManager = services.AddSettingsManager(configuration, contentRootPath, PathUtils.Combine(contentRootPath, Constants.WwwrootDirectory), entryAssembly); services.AddPlugins(configuration, settingsManager); //services.AddPluginServices(pluginManager); Application = new Application(settingsManager); var pluginManager = services.AddPlugins(configuration, settingsManager); services.AddSingleton <IConfiguration>(configuration); services.AddCache(settingsManager.Redis.ConnectionString); services.AddTaskQueue(); services.AddRepositories(assemblies); services.AddServices(); services.AddCliServices(); services.AddCliJobs(); services.AddPluginServices(pluginManager); await Application.RunAsync(args); }