public static T?SelectInteractive <T>(string str, Dictionary <string, T> dictionary, string context) where T : class { T?result = dictionary.TryGetC(str); if (result != null) { return(result); } StringDistance sd = new StringDistance(); var list = dictionary.Keys.Select(s => new { s, lcs = sd.LongestCommonSubsequence(str, s) }).OrderByDescending(s => s.lcs !).Select(a => a.s !).ToList(); var cs = new ConsoleSwitch <int, string>("{0} has been renamed in {1}".FormatWith(str, context)); cs.Load(list); string?selected = cs.Choose(); if (selected == null) { return(null); } return(dictionary.GetOrThrow(selected)); }
private static void Load(string[] args) { Schema.Current.Initialize(); OperationLogic.AllowSaveGlobally = true; while (true) { Action[] actions = new ConsoleSwitch<int, Action> { {42, ChartScriptLogic.ImportExportChartScripts}, {43, AuthLogic.ImportExportAuthRules}, {45, HelpXml.ImportExportHelp}, {100, ShowOrder}, }.ChooseMultiple(args); if (actions == null) return; foreach (var acc in actions) { Console.WriteLine("------- Executing {0} ".FormatWith(acc.Method.Name.SpacePascal(true)).PadRight(Console.WindowWidth - 2, '-')); acc(); } } }
private static void Load(string[] args) { Schema.Current.Initialize(); OperationLogic.AllowSaveGlobally = true; while (true) { Action[] actions = new ConsoleSwitch <int, Action> { { 42, ChartScriptLogic.ImportExportChartScripts }, { 43, AuthLogic.ImportExportAuthRules }, { 45, HelpXml.ImportExportHelp }, { 100, ShowOrder }, }.ChooseMultiple(); if (actions == null) { return; } foreach (var acc in actions) { Console.WriteLine("------- Executing {0} ".FormatWith(acc.Method.Name.SpacePascal(true)).PadRight(Console.WindowWidth - 2, '-')); acc(); } } }
public static T[]? ChooseConsoleMultiple <T>(this IEnumerable <T> collection, Func <T, string>?getString = null, string?message = null) where T : class { var cs = new ConsoleSwitch <int, T>(message ?? ConsoleMessage.SelectOneOfTheFollowingOptions.NiceToString()); cs.Load(collection.ToList(), getString); return(cs.ChooseMultiple()); }
public static IEnumerable<Module> GetModules(Dictionary<Type, bool> types, string solutionName) { while (true) { var typesToShow = types.Keys.OrderBy(a => types[a]).ThenBy(a => a.FullName).ToList(); var selected = new ConsoleSwitch<int, Type>("Chose types for a new Logic module:") .Load(typesToShow, t => (types[t] ? "-" : " ") + t.FullName) .ChooseMultiple(); if (selected.IsNullOrEmpty()) yield break; SafeConsole.WriteColor(ConsoleColor.Gray, "Module name? (Nothing to exit):"); string moduleName = GetDefaultModuleName(selected, solutionName); if (moduleName.HasText()) SendKeys.SendWait(moduleName); moduleName = Console.ReadLine(); if (!moduleName.HasText()) yield break; yield return new Module { ModuleName = moduleName, Types = selected.ToList() }; types.SetRange(selected, a => a, a => true); } }
static int Main(string[] args) { try { using (AuthLogic.Disable()) using (CultureInfoUtils.ChangeCulture("en")) using (CultureInfoUtils.ChangeCultureUI("en")) { Starter.Start(UserConnections.Replace(Settings.Default.ConnectionString)); Console.WriteLine("..:: Welcome to Southwind Loading Application ::.."); Console.WriteLine("Database: {0}", Regex.Match(((SqlConnector)Connector.Current).ConnectionString, @"Initial Catalog\=(?<db>.*)\;").Groups["db"].Value); Console.WriteLine(); if (args.Any()) { switch (args.First().ToLower().Trim('-', '/')) { case "sql": SqlMigrationRunner.SqlMigrations(true); return 0; case "csharp": SouthwindMigrations.CSharpMigrations(true); return 0; case "load": Load(args.Skip(1).ToArray()); return 0; default: { SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First()); Console.WriteLine("Examples:"); Console.WriteLine(" sql: SQL Migrations"); Console.WriteLine(" csharp: C# Migrations"); Console.WriteLine(" load 1-4,7: Load processes 1 to 4 and 7"); return -1; } } } //if(args.Any()) while (true) { Action action = new ConsoleSwitch<string, Action> { {"N", NewDatabase}, {"G", CodeGenerator.GenerateCodeConsole }, {"SQL", SqlMigrationRunner.SqlMigrations}, {"CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations"}, {"S", Synchronize}, {"L", () => Load(null), "Load"}, }.Choose(); if (action == null) return 0; action(); } } } catch (Exception e) { SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": "); SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message); SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace.Indent(4)); return -1; } }
public static void GenerateCodeConsole() { while (true) { var action = new ConsoleSwitch <string, Action>("What do you want to generate today?") { { "E", Entities.GenerateEntitiesFromDatabaseTables, "Entities (from Database tables)" }, { "L", Logic.GenerateLogicFromEntities, "Logic (from entites)" }, { "React", React.GenerateReactFromEntities, "React (from entites)" }, { "Hook", Hook.ConvertFilesToHooks, "Hook (from entites)" }, }.Choose(); if (action == null) { return; } action(); if (action == Entities.GenerateEntitiesFromDatabaseTables) { return; } } }
public IEnumerable <Module> ReactGetModules(Dictionary <Type, bool> types, string solutionName) { while (true) { var typesToShow = types.Keys.OrderBy(a => a.FullName).ToList(); var selectedTypes = new ConsoleSwitch <int, Type>("Chose types for a new React module:") .Load(typesToShow) .Do(cs => cs.PrintOption = (key, vwd) => { var used = types.GetOrThrow(vwd.Value); SafeConsole.WriteColor(used ? ConsoleColor.DarkGray : ConsoleColor.White, " " + key); SafeConsole.WriteLineColor(used ? ConsoleColor.DarkGray: ConsoleColor.Gray, " - " + vwd.Description); }) .ChooseMultiple(); if (selectedTypes.IsNullOrEmpty()) { yield break; } var modules = selectedTypes.GroupBy(a => a.Namespace !.After(this.SolutionName + ".Entities").DefaultText(this.SolutionName)) .Select(gr => new Module(gr.Key.TryAfterLast(".") ?? gr.Key, gr.ToList())).ToList(); foreach (var m in modules) { yield return(m); } types.SetRange(selectedTypes, a => a, a => true); } }
public static IEnumerable <Module> GetModules(Dictionary <Type, bool> types, string solutionName) { while (true) { var typesToShow = types.Keys.OrderBy(a => types[a]).ThenBy(a => a.FullName).ToList(); var selected = new ConsoleSwitch <int, Type>("Chose types for a new Logic module:") .Load(typesToShow, t => (types[t] ? "-" : " ") + t.FullName) .ChooseMultiple(); if (selected.IsNullOrEmpty()) { yield break; } string moduleName = GetDefaultModuleName(selected, solutionName) !; SafeConsole.WriteColor(ConsoleColor.Gray, $"Module name? ([Enter] for '{moduleName}'):"); moduleName = Console.ReadLine().DefaultText(moduleName !); yield return(new Module(moduleName, selected.ToList())); types.SetRange(selected, a => a, a => true); } }
public static void GenerateCodeConsole() { while (true) { var action = new ConsoleSwitch <string, Action>("What do you want to generate today?") { { "E", Entities.GenerateEntitiesFromDatabaseTables, "Entities (from Database tables)" }, { "L", Logic.GenerateLogicFromEntities, "Logic (from entites)" }, { "Web", Web.GenerateWebFromEntities, "Web (from entites)" }, { "Win", Windows.GenerateWindowsFromEntities, "Windows (from entites)" }, }.Choose(); if (action == null) { return; } action(); if (action == Entities.GenerateEntitiesFromDatabaseTables) { return; } } }
private static void Load(string[] args) { Schema.Current.Initialize(); OperationLogic.AllowSaveGlobally = true; while (true) { var actions = new ConsoleSwitch <int, Action> { { 42, ChartScriptLogic.ImportExportChartScripts }, { 43, AuthLogic.ImportExportAuthRules }, { 45, HelpXml.ImportExportHelp }, { 99, TrainPredictor }, { 100, ShowOrder }, }.ChooseMultipleWithDescription(args); if (actions == null) { return; } foreach (var acc in actions) { MigrationLogic.ExecuteLoadProcess(acc.Value, acc.Description); } } }
private static void Load(string[]?args) { Schema.Current.Initialize(); OperationLogic.AllowSaveGlobally = true; while (true) { var actions = new ConsoleSwitch <string, Action> { { "AR", AuthLogic.ImportExportAuthRules }, { "HL", HelpXml.ImportExportHelp }, { "CT", TranslationLogic.CopyTranslations }, { "TP", TrainPredictor }, { "SO", ShowOrder }, }.ChooseMultipleWithDescription(args); if (actions == null) { return; } foreach (var acc in actions) { MigrationLogic.ExecuteLoadProcess(acc.Value, acc.Description); } } }
public static string?AskSwitch(string question, List <string> options) { var cs = new ConsoleSwitch <int, string>(question); for (int i = 0; i < options.Count; i++) { cs.Add(i, options[i]); } return(cs.Choose()); }
void SetConsoleSwitchState(ConsoleSwitch consoleSwitch, bool value) { if (value) { _nextInputState[ConsoleSwitchIndex] |= (byte)(1 << (byte)consoleSwitch); } else { _nextInputState[ConsoleSwitchIndex] &= (byte)~(1 << (byte)consoleSwitch); } }
public IEnumerable <Module> ReactGetModules(Dictionary <Type, bool> types, string solutionName) { while (true) { var typesToShow = types.Keys.OrderBy(a => types[a]).ThenBy(a => a.FullName).ToList(); var selectedTypes = new ConsoleSwitch <int, Type>("Chose types for a new Logic module:") .Load(typesToShow, t => (types[t] ? "-" : " ") + t.FullName) .ChooseMultiple(); if (selectedTypes.IsNullOrEmpty()) { yield break; } var directories = Directory.GetDirectories(GetProjectFolder(), "App\\").Select(a => Path.GetFileName(a)); string moduleName; if (directories.IsEmpty()) { moduleName = AskModuleName(solutionName, selectedTypes); } else { var selectedName = directories.And("[New Module]").ChooseConsole(message: "Select a Module"); if (selectedName == "[New Module]") { moduleName = AskModuleName(solutionName, selectedTypes); } else { moduleName = selectedName; } } if (!moduleName.HasText()) { yield break; } yield return(new Module { ModuleName = moduleName, Types = selectedTypes.ToList() }); types.SetRange(selectedTypes, a => a, a => true); } }
public static ConsoleSwitch <int, T> Load <T>(this ConsoleSwitch <int, T> cs, List <T> collection, Func <T, string>?getString = null) where T : class { for (int i = 0; i < collection.Count; i++) { var item = collection[i]; if (getString != null) { cs.Add(i, item, getString(item)); } else { cs.Add(i, item); } } return(cs); }
public static void GenerateCodeConsole() { while (true) { var action = new ConsoleSwitch<string, Action>("What do you want to generate today?") { {"E", Entities.GenerateEntitiesFromDatabaseTables, "Entities (from Database tables)"}, {"L", Logic.GenerateLogicFromEntities, "Logic (from entites)"}, {"Web", Web.GenerateWebFromEntities, "Web (from entites)"}, {"Win", Windows.GenerateWindowsFromEntities, "Windows (from entites)"}, }.Choose(); if (action == null) return; action(); if (action == Entities.GenerateEntitiesFromDatabaseTables) return; } }
public static IEnumerable <Module> GetModules(Dictionary <Type, bool> types, string solutionName) { while (true) { var typesToShow = types.Keys.OrderBy(a => types[a]).ThenBy(a => a.FullName).ToList(); var selected = new ConsoleSwitch <int, Type>("Chose types for a new Logic module:") .Load(typesToShow, t => (types[t] ? "-" : " ") + t.FullName) .ChooseMultiple(); if (selected.IsNullOrEmpty()) { yield break; } SafeConsole.WriteColor(ConsoleColor.Gray, "Module name? (Nothing to exit):"); string moduleName = GetDefaultModuleName(selected, solutionName); if (moduleName.HasText()) { SendKeys.SendWait(moduleName); } moduleName = Console.ReadLine(); if (!moduleName.HasText()) { yield break; } yield return(new Module { ModuleName = moduleName, Types = selected.ToList() }); types.SetRange(selected, a => a, a => true); } }
static int Main(string[] args) { try { using (AuthLogic.Disable()) using (CultureInfoUtils.ChangeCulture("en")) using (CultureInfoUtils.ChangeCultureUI("en")) { ConfigRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json", true) .AddUserSecrets <Program>().Build(); var connectionString = ConfigRoot.GetConnectionString("ConnectionString"); Starter.Start(connectionString); Console.WriteLine("..:: Welcome to Southwind Loading Application ::.."); Console.WriteLine("Database: {0}", Regex.Match(((SqlConnector)Connector.Current).ConnectionString, @"Initial Catalog\=(?<db>.*)\;").Groups["db"].Value); Console.WriteLine(); if (args.Any()) { switch (args.First().ToLower().Trim('-', '/')) { case "sql": SqlMigrationRunner.SqlMigrations(true); return(0); case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0); case "load": Load(args.Skip(1).ToArray()); return(0); default: { SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First()); Console.WriteLine("Examples:"); Console.WriteLine(" sql: SQL Migrations"); Console.WriteLine(" csharp: C# Migrations"); Console.WriteLine(" load 1-4,7: Load processes 1 to 4 and 7"); return(-1); } } } //if(args.Any()) while (true) { Action action = new ConsoleSwitch <string, Action> { { "N", NewDatabase }, { "G", CodeGenerator.GenerateCodeConsole }, { "SQL", SqlMigrationRunner.SqlMigrations }, { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" }, { "S", Synchronize }, { "L", () => Load(null), "Load" }, }.Choose(); if (action == null) { return(0); } action(); } } } catch (Exception e) { SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": "); SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message); SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace.Indent(4)); return(-1); } }
public static void ImportExportAuthRules(string fileName) { Action syncRoles = null; Action import = () => { Console.Write("Reading {0}...".FormatWith(fileName)); var doc = XDocument.Load(fileName); Console.WriteLine("Ok"); Console.WriteLine("Generating SQL script to import auth rules (without modifying the role graph or entities):"); SqlPreCommand command; try { command = ImportRulesScript(doc, interactive: true); } catch (InvalidRoleGraphException ex) { SafeConsole.WriteLineColor(ConsoleColor.Red, ex.Message); if (SafeConsole.Ask("Sync roles first?")) { syncRoles(); } return; } if (command == null) { SafeConsole.WriteLineColor(ConsoleColor.Green, "Already syncronized"); } else { command.OpenSqlFileRetry(); } }; Action export = () => { var doc = ExportRules(); doc.Save(fileName); Console.WriteLine("Sucesfully exported to {0}".FormatWith(fileName)); if (SafeConsole.Ask("Publish to Load?")) { File.Copy(fileName, "../../" + Path.GetFileName(fileName), overwrite: true); } }; syncRoles = () => { Console.Write("Reading {0}...".FormatWith(fileName)); var doc = XDocument.Load(fileName); Console.WriteLine("Ok"); Console.WriteLine("Generating script to synchronize roles..."); SynchronizeRoles(doc); if (SafeConsole.Ask("Import rules now?")) { import(); } }; var action = new ConsoleSwitch <char, Action>("What do you want to do with AuthRules?") { { 'i', import, "Import into database" }, { 'e', export, "Export to local folder" }, { 'r', syncRoles, "Sync roles" }, }.Choose(); action?.Invoke(); }
private static void Load(string[] args) { Schema.Current.Initialize(); OperationLogic.AllowSaveGlobally = true; while (true) { Action[] actions = new ConsoleSwitch<int, Action> { {20, EmployeeLoader.CreateUsers }, {21, CreateSystemUser }, {30, OrderLoader.UpdateOrdersDate }, {42, ChartScriptLogic.ImportExportChartScripts}, {43, AuthLogic.ImportExportAuthRules}, {44, ImportSpanishInstanceTranslations}, {45, HelpXml.ImportExportHelp}, {48, ImportWordReportTemplateForOrder}, {100, ShowOrder}, }.ChooseMultiple(); if (actions == null) return; foreach (var acc in actions) { Console.WriteLine("------- Executing {0} ".FormatWith(acc.Method.Name.SpacePascal(true)).PadRight(Console.WindowWidth - 2, '-')); acc(); } } }
internal bool SampleCapturedConsoleSwitchState(ConsoleSwitch consoleSwitch) { _lagged = false; return (_inputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0; }
void SetConsoleSwitchState(ConsoleSwitch consoleSwitch, bool value) { if (value) { _nextInputState[ConsoleSwitchIndex] |= (byte)(1 << (byte)consoleSwitch); } else { _nextInputState[ConsoleSwitchIndex] &= (byte)~(1 << (byte)consoleSwitch); } }
void ToggleConsoleSwitchState(ConsoleSwitch consoleSwitch) { var consoleSwitchState = (_nextInputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0; SetConsoleSwitchState(consoleSwitch, !consoleSwitchState); }
internal bool SampleCapturedConsoleSwitchState(ConsoleSwitch consoleSwitch) { _lagged = false; return((_inputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0); }
void ToggleConsoleSwitchState(ConsoleSwitch consoleSwitch) { var consoleSwitchState = (_nextInputState[ConsoleSwitchIndex] & (1 << (int) consoleSwitch)) != 0; SetConsoleSwitchState(consoleSwitch, !consoleSwitchState); }
static int Main(string[] args) { try { using (AuthLogic.Disable()) using (CultureInfoUtils.ChangeCulture("en")) using (CultureInfoUtils.ChangeCultureUI("en")) { DynamicLogicStarter.AssertRoslynIsPresent(); Starter.Start(UserConnections.Replace(Settings.Default.ConnectionString)); Console.WriteLine("..:: Welcome to Southwind Loading Application ::.."); Console.WriteLine("Database: {0}", Regex.Match(((SqlConnector)Connector.Current).ConnectionString, @"Initial Catalog\=(?<db>.*)\;").Groups["db"].Value); Console.WriteLine(); if (args.Any()) { switch (args.First().ToLower().Trim('-', '/')) { case "sql": SqlMigrationRunner.SqlMigrations(true); return(0); case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0); case "load": Load(args.Skip(1).ToArray()); return(0); default: { SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First()); Console.WriteLine("Examples:"); Console.WriteLine(" sql: SQL Migrations"); Console.WriteLine(" csharp: C# Migrations"); Console.WriteLine(" load 1-4,7: Load processes 1 to 4 and 7"); return(-1); } } } //if(args.Any()) while (true) { Action action = new ConsoleSwitch <string, Action> { { "N", NewDatabase }, { "G", CodeGenerator.GenerateCodeConsole }, { "SQL", SqlMigrationRunner.SqlMigrations }, { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" }, { "S", Synchronize }, { "L", () => Load(null), "Load" }, }.Choose(); if (action == null) { return(0); } action(); } } } catch (Exception e) { SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": "); SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message); SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace.Indent(4)); return(-1); } }
public bool this[ConsoleSwitch conSwitch] { get { return (ConsoleSwitches & (1 << (int)conSwitch)) != 0; } set { if (!IgnoreInput) { if (value) { ConsoleSwitches |= (byte)(1 << (byte)conSwitch); } else { ConsoleSwitches &= (byte)~(1 << (byte)conSwitch); } InputChanged = true; } } }
static int Main(string[] args) { try { using (AuthLogic.Disable()) using (CultureInfoUtils.ChangeCulture("en")) using (CultureInfoUtils.ChangeCultureUI("en")) { var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); Configuration = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env}.json", true) .AddUserSecrets <Program>(optional: true) .Build(); Starter.Start( Configuration.GetConnectionString("ConnectionString"), Configuration.GetValue <bool>("IsPostgres"), Configuration.GetConnectionString("AzureStorageConnectionString"), Configuration.GetValue <string>("BroadcastSecret"), Configuration.GetValue <string>("BroadcastUrls")); Console.WriteLine("..:: Welcome to Southwind Loading Application ::.."); SafeConsole.WriteLineColor(env == "live" ? ConsoleColor.Red : env == "test" ? ConsoleColor.Yellow : ConsoleColor.Gray, Connector.Current.ToString()); Console.WriteLine(); if (args.Any()) { switch (args.First().ToLower().Trim('-', '/')) { case "sql": SqlMigrationRunner.SqlMigrations(true); return(0); case "csharp": SouthwindMigrations.CSharpMigrations(true); return(0); case "load": Load(args.Skip(1).ToArray()); return(0); default: { SafeConsole.WriteLineColor(ConsoleColor.Red, "Unkwnown command " + args.First()); Console.WriteLine("Examples:"); Console.WriteLine(" sql: SQL Migrations"); Console.WriteLine(" csharp: C# Migrations"); Console.WriteLine(" load 1-4,7: Load processes 1 to 4 and 7"); return(-1); } } } //if(args.Any()) while (true) { Action?action = new ConsoleSwitch <string, Action> { { "N", Administrator.NewDatabase }, { "G", CodeGenerator.GenerateCodeConsole }, { "SQL", SqlMigrationRunner.SqlMigrations }, { "CS", () => SouthwindMigrations.CSharpMigrations(false), "C# Migrations" }, { "S", Administrator.Synchronize }, { "L", () => Load(null), "Load" }, }.Choose(); if (action == null) { return(0); } action(); } } } catch (Exception e) { SafeConsole.WriteColor(ConsoleColor.DarkRed, e.GetType().Name + ": "); SafeConsole.WriteLineColor(ConsoleColor.Red, e.Message); SafeConsole.WriteLineColor(ConsoleColor.DarkRed, e.StackTrace !.Indent(4)); return(-1); } }