예제 #1
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);
            }

        }
예제 #2
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);
            }
        }
예제 #3
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);
            }
        }