public int Execute()
        {
            return(ConsoleTask.Execute(this, console =>
            {
                console.WriteLine("Getting package information...");
                var dirs = SharedOptions.GetDirectories(BasePackage, OurPackage).ToList();

                var script = default(InstallScript);
                console.Write("Calculating diffs... ");
                using (var prog = new ProgressBar())
                {
                    var processor = new MergeProcessor()
                    {
                        SortDependencies = true
                    };
                    if (!string.IsNullOrEmpty(FirstOfGroup))
                    {
                        processor.FirstOfGroup.UnionWith(FirstOfGroup.Split(','));
                    }
                    processor.ProgressChanged += (s, ev) => prog.Report(ev.Progress / 100.0);
                    script = processor.Merge(dirs[0], dirs[1]);
                }
                console.WriteLine("Done.");

                SharedOptions.WritePackage(console, script, Output, MultipleDirectories, CleanOutput);
            }));
        }
Exemple #2
0
 public async Task <int> Execute(ILogger logger)
 {
     return(ConsoleTask.Execute(this, (console) =>
     {
         console.WriteLine("Getting package information...");
         var script = Package.Create(InputFile).Single().Read();
         SharedOptions.WritePackage(console, script, Output, MultipleDirectories, CleanOutput);
     }));
 }
Exemple #3
0
 public int Execute()
 {
     return(ConsoleTask.Execute(this, (console) =>
     {
         console.WriteLine("Getting package information...");
         var script = InnovatorPackage.Load(InputFile).Read();
         SharedOptions.WritePackage(console, script, Output, MultipleDirectories, CleanOutput);
     }));
 }
Exemple #4
0
 public int Execute()
 {
     return(ConsoleTask.Execute(this, console =>
     {
         if (!Directory.Exists(InputFile))
         {
             throw new InvalidOperationException();
         }
     }));
 }
        public int Execute()
        {
            return(ConsoleTask.Execute(this, console =>
            {
                if (string.IsNullOrWhiteSpace(InputFile))
                {
                    throw new ArgumentNullException(nameof(InputFile));
                }
                if (string.IsNullOrWhiteSpace(Transform))
                {
                    throw new ArgumentNullException(nameof(Transform));
                }
                if (string.IsNullOrWhiteSpace(Output))
                {
                    throw new ArgumentNullException(nameof(Output));
                }

                if (!File.Exists(InputFile))
                {
                    throw new FileNotFoundException("Input file was not found.", InputFile);
                }
                if (!File.Exists(Transform))
                {
                    throw new FileNotFoundException("Transform file was not found.", Transform);
                }

                var logger = new Logger(console);
                using (var document = new XmlTransformableDocument())
                    using (var transformation = new XmlTransformation(Transform, logger))
                    {
                        document.PreserveWhitespace = true;
                        document.Load(InputFile);

                        var success = transformation.Apply(document);

                        if (success)
                        {
                            document.Save(Output);
                        }
                        else
                        {
                            throw new AggregateException(logger.Exceptions);
                        }
                    }
            }));
        }
Exemple #6
0
        public int Execute()
        {
            return(ConsoleTask.Execute(this, console =>
            {
                console.WriteLine("Getting package information...");
                var elem = XElement.Load(InputFile);

                if (RemoveMetadata)
                {
                    elem.Attribute("created")?.Remove();
                    elem.Attribute("creator")?.Remove();
                    elem.Attribute("modified")?.Remove();
                }

                var baseDir = Path.GetDirectoryName(InputFile);
                foreach (var path in elem.Elements("Path").ToList())
                {
                    var fullPath = Path.Combine(baseDir, path.Attribute("path")?.Value);
                    if (!File.Exists(fullPath))
                    {
                        Console.WriteLine("Removing reference to `{0}`", path.Attribute("path")?.Value);
                        path.Remove();
                    }
                }

                console.WriteLine("Writing file...");
                using (var writer = XmlWriter.Create(InputFile, new XmlWriterSettings()
                {
                    OmitXmlDeclaration = true,
                    Indent = true
                }))
                {
                    elem.Save(writer);
                }
            }));
        }