public void TransformFile(IPackageFile file, string targetPath, IProjectSystem projectSystem) { if (!projectSystem.FileExists(targetPath)) { using (Stream stream = Process(file, projectSystem).AsStream()) { projectSystem.AddFile(targetPath, stream); } } }
public void TransformFile(IPackageFile file, string targetPath, IProjectSystem projectSystem) { // Get the xml fragment XElement xmlFragment = GetXml(file, projectSystem); XDocument transformDocument = XmlUtility.GetOrCreateDocument(xmlFragment.Name, projectSystem, targetPath); // Do a merge transformDocument.Root.MergeWith(xmlFragment, _nodeActions); projectSystem.AddFile(targetPath, transformDocument.Save); }
public void RevertFile(IPackageFile file, string targetPath, IEnumerable<IPackageFile> matchingFiles, IProjectSystem projectSystem) { // Get the xml snippet XElement xmlFragment = GetXml(file, projectSystem); XDocument document = XmlUtility.GetOrCreateDocument(xmlFragment.Name, projectSystem, targetPath); // Merge the other xml elements into one element within this xml hierarchy (matching the config file path) var mergedFragments = matchingFiles.Select(f => GetXml(f, projectSystem)) .Aggregate(new XElement(xmlFragment.Name), (left, right) => left.MergeWith(right, _nodeActions)); // Take the difference of the xml and remove it from the main xml file document.Root.Except(xmlFragment.Except(mergedFragments)); // Save the new content to the file system projectSystem.AddFile(targetPath, document.Save); }
private void CopyNativeBinaries(IProjectSystem projectSystem, IFileSystem packagesFileSystem, PackageName packageName) { const string nativeBinariesFolder = "NativeBinaries"; string nativeBinariesPath = Path.Combine(packageName.Name, nativeBinariesFolder); if (packagesFileSystem.DirectoryExists(nativeBinariesPath)) { IEnumerable<string> nativeFiles = packagesFileSystem.GetFiles(nativeBinariesPath, "*.*", recursive: true); foreach (string file in nativeFiles) { string targetPath = Path.Combine(Constants.BinDirectory, file.Substring(nativeBinariesPath.Length + 1)); // skip over NativeBinaries/ word using (Stream stream = packagesFileSystem.OpenFile(file)) { projectSystem.AddFile(targetPath, stream); } } } }