コード例 #1
0
ファイル: XsltTask.cs プロジェクト: Qorpent/comdiv.oldcore
        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};
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
ファイル: FileTask.cs プロジェクト: Qorpent/comdiv.oldcore
 public IPackageInstallResult Do(IPackage package, IFilePathResolver target){
     if (Overwrite || !target.Exists(TargetPath)){
         target.Write(TargetPath, Content);
     }
     return DefaultPackageInstallResult.Ok("файл установлен");
 }