Exemple #1
0
        public virtual bool IsIgored(DirectoryInfo di)
        {
            if (IgnoredFolders == null)
            {
                return(false);
            }

            return(IgnoredFolders.IndexOf(di.Name.ToLower()) != -1);
        }
Exemple #2
0
 public bool IsIgnoredForder(string path)
 {
     return(IgnoredFolders?.Any(f => GitIgnoreReader.IsChildedPath(PathIO.Combine(Path, f), path)) ?? false);
 }
Exemple #3
0
        public static List <ModProjectData> LoadModProjects(DOS2DEModuleData Data, bool clearExisting = false)
        {
            if (clearExisting)
            {
                Data.ModProjects.Clear();
                Log.Here().Important("Cleared mod project data.");
            }

            List <ModProjectData> newItems = new List <ModProjectData>();

            if (Data.Settings != null && !String.IsNullOrEmpty(Data.Settings.DOS2DEDataDirectory))
            {
                if (Directory.Exists(Data.Settings.DOS2DEDataDirectory))
                {
                    string projectsPath = Path.Combine(Data.Settings.DOS2DEDataDirectory, "Projects");
                    string modsPath     = Path.Combine(Data.Settings.DOS2DEDataDirectory, "Mods");

                    if (Directory.Exists(modsPath))
                    {
                        Log.Here().Activity("Loading DOS2 projects from mods directory at: {0}", modsPath);

                        DirectoryEnumerationFilters filters = new DirectoryEnumerationFilters()
                        {
                            InclusionFilter = (f) =>
                            {
                                return(!IgnoredFolders.Contains(f.FileName));
                            },
                        };

                        var modFolders = Directory.EnumerateDirectories(modsPath, DirectoryEnumerationOptions.Folders, filters, PathFormat.LongFullPath);

                        if (modFolders != null)
                        {
                            foreach (string modFolder in modFolders)
                            {
                                var modFolderName = Path.GetFileName(modFolder);
                                //Log.Here().Activity("Checking project mod folder: {0}", modFolderName);

                                var metaFilePath = Path.Combine(modFolder, "meta.lsx");
                                if (File.Exists(metaFilePath))
                                {
                                    //Log.Here().Activity("Meta file found for project {0}. Reading file.", modFolderName);

                                    ModProjectData modProjectData = new ModProjectData();
                                    modProjectData.LoadAllData(metaFilePath, projectsPath);

                                    //Log.Here().Activity("Finished reading meta files for mod: {0}", modProjectData.ModuleInfo.Name);

                                    if (!clearExisting)
                                    {
                                        var previous = Data.ModProjects.Items.FirstOrDefault(p => p.FolderName == modProjectData.FolderName);
                                        if (previous != null)
                                        {
                                            if (previous.DataIsNewer(modProjectData))
                                            {
                                                previous.UpdateData(modProjectData);
                                            }
                                        }
                                        else
                                        {
                                            newItems.Add(modProjectData);
                                        }
                                    }
                                    else
                                    {
                                        newItems.Add(modProjectData);
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    Log.Here().Error("Loading available projects failed. DOS2 data directory not found at {0}", Data.Settings.DOS2DEDataDirectory);
                }
            }

            return(newItems);
        }