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); } }
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 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); } }