public IPackageInstallResult Do(IPackage package, IFilePathResolver target){ foreach (var file in TargetFile.split()){ if (target.Exists(file)){ var oldcontent = target.Read(file).asXPathNavigable(); var writer = new StringWriter(); // var args = XsltStandardExtension.PrepareArgs(); Transformation.Transform(oldcontent, new XsltArgumentList(), writer); writer.Flush(); target.Write(file, writer.ToString()); } } return new DefaultPackageInstallResult{State = ResultState.OK}; }
public override IPackageInstallResult Do(IPackage package, IFilePathResolver target){ var wasError = false; var result = new DefaultPackageInstallResult{Message = "applying auto xslt"}; var allfiles = package.PathResolver.ResolveAll("", "*.*"); var xsltTaskFiles = allfiles.Where(s => s.EndsWith(".taskinfo.xslt")); xsltTaskFiles.Select( s =>{ if (wasError){ return s; } var targetFileName = s.Substring(0, s.Length - ".taskinfo.xslt".Length); if (GetProceed(target, targetFileName, result)){ var xsltSource = package.PathResolver.ReadBinary(s); var targetSource = target.Read(targetFileName); var sw = new StringWriter(); var xws = new XmlWriterSettings(); xws.Indent = true; xws.NewLineHandling = NewLineHandling.Entitize; xws.OmitXmlDeclaration = true; xws.Encoding = Encoding.UTF8; var xw = XmlWriter.Create(sw, xws); var xsltTransform = new XslCompiledTransform(); var sets = new XsltSettings(true, true); var doc = XmlReader.Create(new StringReader(targetSource)); var xslt = XmlReader.Create(new MemoryStream(xsltSource)); var xmlResolver = new FilePathXmlResolver(package.PathResolver); xsltTransform.Load(xslt, sets, xmlResolver); var args = new XsltArgumentList(); if (ArgPreparator != null){ ArgPreparator(args); } xsltTransform.Transform(doc, args, xw, xmlResolver); target.Write(targetFileName, sw.ToString()); } result.SubMessages.Add("PROCESSED: " + targetFileName); Console.WriteLine("PROCESSED: " + targetFileName); return s; } ).ToList(); return result; }
public override IPackageInstallResult Do(IPackage package, IFilePathResolver target){ var result = new DefaultPackageInstallResult{Message = ToString()}; package.PathResolver.ResolveAll("") .Where(s => !(GetBehaviour(s) == CopyBehaviour.Skip)) .Select(s =>{ target.Resolve("~/" + s, false); return s; }) .ToList(); foreach (var file in package.PathResolver.ResolveAll("")){ var behaviour = GetBehaviour(file); switch (behaviour){ case CopyBehaviour.Skip: result.SubMessages.Add(string.Format("SKIP:{0}", file)); // Console.WriteLine(string.Format("SKIP:{0}", file)); break; case CopyBehaviour.None: goto default; case CopyBehaviour.OverWrite: goto default; case CopyBehaviour.NewOnly: if (!target.Exists(file)){ goto default; } result.SubMessages.Add(string.Format("EXISTS:{0}", file)); Console.WriteLine(string.Format("EXISTS:{0}", file)); break; default: target.Write(file, package.PathResolver.ReadBinary(file)); result.SubMessages.Add(string.Format("COPY:{0}", file)); // Console.WriteLine(string.Format("COPY:{0}", file)); break; } } return result; }
public IPackageInstallResult Do(IPackage package, IFilePathResolver target){ if (Overwrite || !target.Exists(TargetPath)){ target.Write(TargetPath, Content); } return DefaultPackageInstallResult.Ok("файл установлен"); }