示例#1
0
 public void WriteYamlFile(string yamlFile, ManifestPackage_1_0_0 package)
 {
     using (StreamWriter streamWriter = File.CreateText(yamlFile))
     {
         _serializer.Serialize(streamWriter, package);
     }
 }
示例#2
0
        public LoadManifestsResult LoadAllManifests(IEnumerable <string> yamlFiles)
        {
            LoadManifestsResult result = new LoadManifestsResult();
            Dictionary <string, MultiFileYaml> multiFileYamlDict = new Dictionary <string, MultiFileYaml>();

            foreach (string yamlFilePath in yamlFiles)
            {
                ReadYamlFileResult ryfr = ReadYamlFile(yamlFilePath);
                if (ryfr.ErrorMessage != null)
                {
                    result.Messages.Add(yamlFilePath + ": " + ryfr.ErrorMessage);
                    continue;
                }
                ManifestPackage_1_0_0 package = ryfr.Manifest;

                string        yamlFolder    = Path.GetDirectoryName(yamlFilePath);
                MultiFileYaml multiFileYaml = null;
                if (multiFileYamlDict.TryGetValue(yamlFolder, out multiFileYaml) == false)
                {
                    multiFileYaml = new MultiFileYaml();
                    multiFileYamlDict.Add(yamlFolder, multiFileYaml);
                }
                multiFileYaml.AddPackage(package, yamlFilePath);
            }
            result.Manifests = multiFileYamlDict.Values;
            return(result);
        }
示例#3
0
 public void AddPackage(ManifestPackage_1_0_0 package, string yamlFilePath)
 {
     if (package.ManifestType == "singleton")             //todo: allow only one - and no 'version'
     {
         _mainYamlFilePath     = yamlFilePath;
         _mainPackage          = package;
         _defaultLocalePackage = package;
         _installerPackage     = package;
         _installers.AddRange(package.Installers);          // todo: should be only one in a singleton?
     }
     else if (package.ManifestType == "version")            //todo: allow only one - an no 'singleton'
     {
         _mainYamlFilePath = yamlFilePath;
         _mainPackage      = package;
     }
     else if (package.ManifestType == "defaultLocale")
     {
         if (_defaultLocalePackage != null)
         {
             throw new Exception("package is already set!");
         }
         _defaultLocalePackage = package;
     }
     else if (package.ManifestType == "locale")
     {
         LocalePackages.Add(package);
     }
     else if (package.ManifestType == "installer")
     {
         if (_installerPackage != null)
         {
             throw new Exception("package is already set!");
         }
         _installerPackage = package;
         _installers.AddRange(package.Installers);
     }
     else
     {
         throw new Exception();                //todo: unexpected type
     }
 }
示例#4
0
 public ReadYamlFileResult ReadYamlFile(string yamlFile)
 {
     // TODO: Firetrust.MailWasherPro -> copyright sign works with Encoding.Default, but other packages have wrong signs then
     using (StreamReader streamReader = new StreamReader(yamlFile, true))
     {
         try
         {
             ManifestPackage_1_0_0 package = _deserializer.Deserialize <ManifestPackage_1_0_0>(streamReader);
             return(new ReadYamlFileResult()
             {
                 Manifest = package, FilePath = yamlFile
             });
         }
         catch (YamlException ex)
         {
             return(new ReadYamlFileResult()
             {
                 ErrorMessage = GetMessage(ex), FilePath = yamlFile
             });
         }
     }
 }