Exemplo n.º 1
0
        private static EverestModuleMetadata[] loadDir(string dir)
        {
            try {
                string metaPath = Path.Combine(dir, "metadata.yaml");
                if (File.Exists(metaPath))
                {
                    using (StreamReader reader = new StreamReader(metaPath)) {
                        EverestModuleMetadata meta = YamlHelper.Deserializer.Deserialize <EverestModuleMetadata>(reader);
                        meta.PathDirectory = dir;
                        meta.PostParse();
                        return(new EverestModuleMetadata[] { meta });
                    }
                }

                metaPath = Path.Combine(dir, "multimetadata.yaml");
                if (!File.Exists(metaPath))
                {
                    metaPath = Path.Combine(dir, "everest.yaml");
                }
                if (!File.Exists(metaPath))
                {
                    metaPath = Path.Combine(dir, "everest.yml");
                }
                if (File.Exists(metaPath))
                {
                    using (StreamReader reader = new StreamReader(metaPath)) {
                        if (!reader.EndOfStream)
                        {
                            EverestModuleMetadata[] multimetas = YamlHelper.Deserializer.Deserialize <EverestModuleMetadata[]>(reader);
                            foreach (EverestModuleMetadata multimeta in multimetas)
                            {
                                multimeta.PathDirectory = dir;
                                multimeta.PostParse();
                            }
                            return(multimetas);
                        }
                    }
                }
            } catch (Exception e) {
                Logger.Log(LogLevel.Warn, "loader", $"Failed loading everest.yaml in directory {dir}: {e}");
            }

            return(null);
        }
Exemplo n.º 2
0
        private static EverestModuleMetadata[] loadZip(string archive)
        {
            try {
                using (ZipFile zip = new ZipFile(archive)) {
                    foreach (ZipEntry entry in zip.Entries)
                    {
                        if (entry.FileName == "metadata.yaml")
                        {
                            using (MemoryStream stream = entry.ExtractStream())
                                using (StreamReader reader = new StreamReader(stream)) {
                                    EverestModuleMetadata meta = YamlHelper.Deserializer.Deserialize <EverestModuleMetadata>(reader);
                                    meta.PathArchive = archive;
                                    meta.PostParse();
                                    return(new EverestModuleMetadata[] { meta });
                                }
                        }

                        if (entry.FileName == "multimetadata.yaml" ||
                            entry.FileName == "everest.yaml" ||
                            entry.FileName == "everest.yml")
                        {
                            using (MemoryStream stream = entry.ExtractStream())
                                using (StreamReader reader = new StreamReader(stream)) {
                                    if (!reader.EndOfStream)
                                    {
                                        EverestModuleMetadata[] multimetas = YamlHelper.Deserializer.Deserialize <EverestModuleMetadata[]>(reader);
                                        foreach (EverestModuleMetadata multimeta in multimetas)
                                        {
                                            multimeta.PathArchive = archive;
                                            multimeta.PostParse();
                                        }
                                        return(multimetas);
                                    }
                                }
                        }
                    }
                }
            } catch (Exception e) {
                Logger.Log(LogLevel.Warn, "loader", $"Failed loading everest.yaml in archive {archive}: {e}");
            }

            return(null);
        }