public static bool TryLoadFromConsole([MaybeNullWhen(false)] out ModulesList modules, out string path, bool includeCurrentDirectory = true) { modules = null; if (includeCurrentDirectory) { path = "modules.json"; } else { Console.WriteLine("Please enter the path to a modules.json file"); Console.Write("> "); path = Console.ReadLine(); } while (!string.IsNullOrEmpty(path)) { if (TryLoad(ref path, out modules)) { return(true); } Console.WriteLine("modules.json not found in this directory or any parent, please enter the path to a modules.json file"); Console.Write("> "); path = Console.ReadLine(); } return(false); }
public static bool TryLoad(ref string path, [MaybeNullWhen(false)] out ModulesList modules) { path = path.AsFullDirectoryPath(); while (!string.IsNullOrEmpty(path)) { var modulePath = Path.Combine(path, "modules.json"); if (File.Exists(modulePath)) { modules = JsonConvert.DeserializeObject <ModulesList>(File.ReadAllText(modulePath)); return(true); } path = Path.GetDirectoryName(path); } modules = null; return(false); }