Ejemplo n.º 1
0
    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));
    }
Ejemplo n.º 2
0
        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();
                }
            }
        }
Ejemplo n.º 3
0
        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();
                }
            }
        }
Ejemplo n.º 4
0
    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());
    }
Ejemplo n.º 5
0
        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);
            }

        }
Ejemplo n.º 6
0
        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;
            }
        }
Ejemplo n.º 7
0
        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;
                }
            }
        }
Ejemplo n.º 8
0
    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);
        }
    }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
        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;
                }
            }
        }
Ejemplo n.º 11
0
        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);
                }
            }
        }
Ejemplo n.º 12
0
    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);
            }
        }
    }
Ejemplo n.º 13
0
    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());
    }
Ejemplo n.º 14
0
 void SetConsoleSwitchState(ConsoleSwitch consoleSwitch, bool value)
 {
     if (value)
     {
         _nextInputState[ConsoleSwitchIndex] |= (byte)(1 << (byte)consoleSwitch);
     }
     else
     {
         _nextInputState[ConsoleSwitchIndex] &= (byte)~(1 << (byte)consoleSwitch);
     }
 }
Ejemplo n.º 15
0
        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);
            }
        }
Ejemplo n.º 16
0
    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);
    }
Ejemplo n.º 17
0
        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;
            }
        }
Ejemplo n.º 18
0
        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);
            }
        }
Ejemplo n.º 19
0
        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);
            }
        }
Ejemplo n.º 20
0
        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();
        }
Ejemplo n.º 21
0
        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();
                }
            }
        }
Ejemplo n.º 22
0
        internal bool SampleCapturedConsoleSwitchState(ConsoleSwitch consoleSwitch)
        {
			_lagged = false;
            return (_inputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0;
        }
Ejemplo n.º 23
0
 void SetConsoleSwitchState(ConsoleSwitch consoleSwitch, bool value)
 {
     if (value)
     {
         _nextInputState[ConsoleSwitchIndex] |= (byte)(1 << (byte)consoleSwitch);
     }
     else
     {
         _nextInputState[ConsoleSwitchIndex] &= (byte)~(1 << (byte)consoleSwitch);
     }
 }
Ejemplo n.º 24
0
        void ToggleConsoleSwitchState(ConsoleSwitch consoleSwitch)
        {
            var consoleSwitchState = (_nextInputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0;

            SetConsoleSwitchState(consoleSwitch, !consoleSwitchState);
        }
Ejemplo n.º 25
0
 internal bool SampleCapturedConsoleSwitchState(ConsoleSwitch consoleSwitch)
 {
     _lagged = false;
     return((_inputState[ConsoleSwitchIndex] & (1 << (int)consoleSwitch)) != 0);
 }
Ejemplo n.º 26
0
 void ToggleConsoleSwitchState(ConsoleSwitch consoleSwitch)
 {
     var consoleSwitchState = (_nextInputState[ConsoleSwitchIndex] & (1 << (int) consoleSwitch)) != 0;
     SetConsoleSwitchState(consoleSwitch, !consoleSwitchState);
 }
Ejemplo n.º 27
0
        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);
            }
        }
Ejemplo n.º 28
0
 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;
         }
     }
 }
Ejemplo n.º 29
0
    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);
        }
    }