internal static bool TryReadConfigFile(TextWriter output, TextReader configReader, string outputPath, out BatchSignInput batchData) { var serializer = new JsonSerializer(); var fileJson = (Json.FileJson)serializer.Deserialize(configReader, typeof(Json.FileJson)); var map = new Dictionary <string, SignInfo>(StringComparer.OrdinalIgnoreCase); var allGood = true; foreach (var item in fileJson.SignList) { var data = new SignInfo(certificate: item.Certificate, strongName: item.StrongName); foreach (var relativeFileName in ExpandFileList(outputPath, item.FileList, ref allGood)) { if (map.ContainsKey(relativeFileName)) { Console.WriteLine($"signtool : error : Duplicate file entry: {relativeFileName}"); allGood = false; } else { map.Add(relativeFileName, data); } } } if (!allGood) { batchData = null; return(false); } batchData = new BatchSignInput(outputPath, map, fileJson.ExcludeList ?? Array.Empty <string>(), fileJson.PublishUrl ?? "unset"); return(true); }
internal static bool TryReadConfigFile(TextWriter output, TextReader configReader, string outputPath, out BatchSignInput batchData) { var serializer = new JsonSerializer(); var fileJson = (Json.FileJson)serializer.Deserialize(configReader, typeof(Json.FileJson)); var map = new Dictionary <string, SignInfo>(); var allGood = true; foreach (var item in fileJson.SignList) { var data = new SignInfo(certificate: item.Certificate, strongName: item.StrongName); foreach (var name in item.FileList) { if (map.ContainsKey(name)) { Console.WriteLine($"Duplicate file entry: {name}"); allGood = false; } else { map.Add(name, data); } } } if (!allGood) { batchData = null; return(false); } batchData = new BatchSignInput(outputPath, map, fileJson.ExcludeList ?? Array.Empty <string>()); return(true); }
internal FileSignInfo(FileName name, SignInfo fileSignData) { Debug.Assert(name.IsAssembly || fileSignData.StrongName == null); FileName = name; SignInfo = fileSignData; }
internal static bool TryReadOrchestrationConfigFile(TextWriter output, TextReader configReader, string outputPath, out BatchSignInput batchData) { var serializer = new JsonSerializer(); var fileJson = (Json.OrchestratedFileJson)serializer.Deserialize(configReader, typeof(Json.OrchestratedFileJson)); var map = new Dictionary <FileSignDataEntry, SignInfo>(); // For now, a given json file will be assumed to serialize to one place and we'll throw otherwise string publishUrl = (from OrchestratedFileSignData entry in fileJson.SignList from FileSignDataEntry fileToSign in entry.FileList select fileToSign.PublishToFeedUrl).Distinct().Single(); var allGood = true; foreach (var item in fileJson.SignList) { var data = new SignInfo(certificate: item.Certificate, strongName: item.StrongName); foreach (FileSignDataEntry entry in item.FileList) { if (map.ContainsKey(entry)) { Console.WriteLine($"signtool : error : Duplicate signing info entry for: {entry.FilePath}"); allGood = false; } else { map.Add(entry, data); } } } if (!allGood) { batchData = null; return(false); } batchData = new BatchSignInput(outputPath, map, fileJson.ExcludeList ?? Array.Empty <string>(), publishUrl); return(true); }