using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using EmuXPortal.Logging; namespace EmuXPortal.Api { public class PlatformParser { private const string EMU_IGNORE_FILE = "emu_ignore.txt"; // if this file is present, that folder is ignored public PlatformParser(string path) { List romdirs = GetRomDirectories(path); logger.WriteLine("Found {0} EMU Folders", romdirs.Count); this.Platforms = GetEMUConfigFiles(romdirs); this.Platforms.Sort(); } public List Platforms { get; private set; } private List GetRomDirectories(string path) { logger.WriteLine("Searching for EMU Folders in: {0}", path); List dirs = new List(); foreach (string dir in Directory.GetDirectories(path)) { bool ignore = false; foreach (string file in Directory.GetFiles(dir)) { FileInfo fi = new FileInfo(file); if (fi.Name.ToLower() == EMU_IGNORE_FILE) { logger.WriteLine("\tIgnoreing EMU Folder: {0}", dir); ignore = true; break; } } if (!ignore) { logger.WriteLine("\tAdding EMU Folder: {0}", dir); dirs.Add(dir); } } return dirs; } private List GetEMUConfigFiles(List romdirs) { List emuconfigs = new List(); logger.WriteLine("Reading EMU Config files"); foreach (string dir in romdirs) { IEmuConfig emuconfig = null; emuconfig = EmuConfigLoader.Load(dir); emuconfigs.Add(emuconfig); } logger.WriteLine("Finished Reading EMU Config files"); return emuconfigs; } } }