public override bool Execute()
 {
     CssPackagerOptions cssPackagerOptions = new CssPackagerOptions();
     cssPackagerOptions.CompressOutput = CompressOutput;
     cssPackagerOptions.OutputNaming = GetOutputNaming();
     cssPackagerOptions.OutputFolder = OutputFolder;
     cssPackagerOptions.OutputCdn = OutputCdn;
     cssPackagerOptions.Variant = Variant;
     cssPackagerOptions.IsCreatePackage = IsCreatePackage;
     CssPackagerOptions arg_BD_0 = cssPackagerOptions;
     CssCompressionOptions cssCompressionOptions = new CssCompressionOptions();
     CssCompressionOptions arg_9E_0 = cssCompressionOptions;
     Func<string, bool> arg_9E_1;
     if (!CompressionOptionsUseDataUris)
     {
         arg_9E_1 = FileMatchers.None;
     }
     else
     {
         if (CompressionOptionsDataUriWhitelist.Length != 0)
         {
             arg_9E_1 = FileMatchers.Whitelist(Enumerable.ToList<string>(Enumerable.Select<ITaskItem, string>(CompressionOptionsDataUriWhitelist, (ITaskItem ti) => ti.ItemSpec)));
         }
         else
         {
             arg_9E_1 = FileMatchers.All;
         }
     }
     arg_9E_0.UseDataUrisFor = arg_9E_1;
     cssCompressionOptions.GetCdnImagePath = CdnImagePath.AllIfEnabled(CompressionOptionsUseCdn, this.CompressionOptionsCdnPrefix);
     arg_BD_0.CompressionOptions = cssCompressionOptions;
     CssPackagerOptions options = cssPackagerOptions;
     PackageManager.PackageManager packageManager = new PackageManager.PackageManager(SiteRoot);
     packageManager.InitialiseCssPackages(PackageDefinition);
     if (!string.IsNullOrEmpty(PackageName))
     {
         Log.LogMessage("CssBuildPackager: packaging " + base.PackageName + ((Variant == null) ? "" : ("(" + Variant + ")")), new object[0]);
         Package(PackageName, packageManager, options);
     }
     else
     {
         foreach (Package current in packageManager._cssPackages)
         {
             Log.LogMessage("CssBuildPackager: packaging " + current.Name + ((Variant == null) ? "" : ("(" + Variant + ")")), new object[0]);
             Package(current.Name, packageManager, options);
         }
     }
     return true;
 }
Example #2
0
 public void Package_should_work_as_expected()
 {
     var inputFile = Path.Combine(_currentFolder, "TestAssets\\test1.css");
     var outputFile = Path.Combine(_currentFolder, "output.css");
     if (File.Exists(outputFile))
         File.Delete(outputFile);
     var package = new Package
                       {
                           Name = "Test",
                           ComponentFiles = new[] { inputFile },
                       };
     var packagerOptions  = new CssPackagerOptions {
         OutputFolder = Path.Combine(_currentFolder, "TestAssets"),
         SiteRoot = _currentFolder,
         CompressOutput = true,
         CompressionOptions = new CssCompressionOptions { UseDataUrisFor = FileMatchers.All },
         OutputNaming = OutputNamings.CustomPath(outputFile)
     };
     var result = _packager.Package(package, packagerOptions);
     Assert.IsTrue(result.IsSuccess);
     Assert.IsTrue(File.Exists(outputFile));
     //not if data URIs are used Assert.IsTrue(File.ReadAllBytes(outputFile).Length < File.ReadAllBytes(inputFile).Length);
 }
Example #3
0
        public PackagerResults Package(Package package, CssPackagerOptions options)
        {
            _imageEmbedder = new CssImageEmbed(new CssImageEmbedOptions{ SiteRoot = options.SiteRoot, UseDataUrisFor = options != null && options.CompressionOptions != null ? options.CompressionOptions.UseDataUrisFor : null });
            _imageUseCdn = new CssImageUseCdn(new CssImageUseCdnOptions { SiteRoot = options.SiteRoot, GetCdnImagePath = options != null && options.CompressionOptions != null ? options.CompressionOptions.GetCdnImagePath : null });
            var packagerResult = new PackagerResults();
            string outputPath = null;

            // concatenate files
            if (options.IsCreatePackage)
            {
                var sb = new StringBuilder();
                foreach (var file in package.ComponentFiles)
                {
                    if (String.IsNullOrWhiteSpace(file))
                        continue;
                    if (!File.Exists(file))
                        throw new ArgumentException("File '" + file + "' doesn't exist! (in package " + package.Name + ")");
                    // data uris
                    var css = File.ReadAllText(file);
                    if (options.CompressOutput
                        && options.CompressionOptions != null
                        && options.CompressionOptions.UseDataUrisFor != null)
                    {
                        var embedderResult = _imageEmbedder.Compress(css, file);
                        css = embedderResult.Output;
                        packagerResult.Errors = embedderResult.Errors;
                        packagerResult.Warnings = embedderResult.Warnings;
                    }
                    if (options.CompressOutput
                        && options.CompressionOptions != null
                        && options.CompressionOptions.GetCdnImagePath != null)
                    {
                        var embedderResult = _imageUseCdn.Compress(css, file);
                        css = embedderResult.Output;
                        packagerResult.Errors = embedderResult.Errors;
                        packagerResult.Warnings = embedderResult.Warnings;
                    }

                    sb.AppendLine(css);
                }

                // YUI compressor
                string output;
                if (options.CompressOutput)
                    output = Yahoo.Yui.Compressor.CssCompressor.Compress(sb.ToString());
                else
                    output = sb.ToString();

                var outputNamingParameters = new OutputNamingParameters
                {
                    Package = package,
                    PackagedOutput = output,
                    PackagerOptions = options,
                    OutputFilenameSuffix = "css",
                };

                var outputFilename = options.OutputNaming(outputNamingParameters);
                outputPath = Path.Combine(options.OutputFolder, outputFilename);
                File.WriteAllText(outputPath, output);
            }

            packagerResult.CompiledPackage = new PackagedCss(package, options)
            {
                OutputFile = outputPath,
                IsPackaged = options.IsCreatePackage,
                SiteRoot = options.SiteRoot,
            };

            return packagerResult;
        }
 private void Package(string packageName, PackageManager.PackageManager packageManager, CssPackagerOptions options)
 {
     packageManager.PackageCss(packageName, options);
     PackagedCss cssPackage = packageManager.GetCssPackage(packageName, Variant);
     cssPackage.SerializeTo(OutputFolder);
 }