protected void ProcessAllBundles(IList<Bundle> bundles)
 {
     Trace.Source.TraceInformation("Processing bundles...");
     if (!settings.IsDebuggingEnabled)
     {
         foreach (var bundle in bundles)
         {
             bundle.Process(settings);
         }
     }
     else
     {
         var hasher = new AssignHash();
         var diskBacker = new FileHelper();
         var bundlesToSort = new List<Bundle>();
         var directory = new FileSystemDirectory(DiskBackedBundleCache.CacheDirectory);
         for (var i = 0; i < bundles.Count; i++)
         {
             bundles[i] = ProcessSingleBundle(diskBacker, directory, bundlesToSort,
                 CassetteSettings.uncachedToCachedFiles, bundles[i], hasher);
             if (typeof(StylesheetBundle).IsAssignableFrom(bundles[i].GetType()))
             {
                 ((StylesheetBundle)bundles[i]).Renderer = new DebugStylesheetHtmlRenderer(settings.UrlGenerator);
             }
             else if (typeof(ScriptBundle).IsAssignableFrom(bundles[i].GetType()))
             {
                 ((ScriptBundle)bundles[i]).Renderer = new DebugScriptBundleHtmlRenderer(settings.UrlGenerator);
             }
             else if (typeof(HtmlTemplateBundle).IsAssignableFrom(bundles[i].GetType()))
             {
                 ((HtmlTemplateBundle)bundles[i]).Renderer = new DebugHtmlTemplateBundleRenderer(settings.UrlGenerator);
                 bundles[i].ContentType = "text/javascript";
             }
         }
         CassetteSettings.bundles.FixReferences(CassetteSettings.uncachedToCachedFiles, bundles);
         bundlesToSort.ForEach(b => b.SortAssetsByDependency());
     }
     Trace.Source.TraceInformation("Bundle processing completed.");
 }
        protected Bundle ProcessSingleBundle(IFileHelper fileHelper, IDirectory directory, List<Bundle> bundlesToSort,
            Dictionary<string, string> uncachedToCachedFiles, Bundle bundle, AssignHash hasher)
        {
            Trace.Source.TraceInformation("Processing {0} {1}", bundle.GetType().Name, bundle.Path);

            //need to process early to generate an accurate hash.
            if (IsCompositeBundle(bundle))
            {
                bundle.Process(settings);
            }
            else
            {
                hasher.Process(bundle, settings);
            }

            var bundleKey = CassetteSettings.bundles.GetSafeString(Encoding.Default.GetString(bundle.Hash));
            if (CassetteSettings.bundles.ContainsKey(fileHelper, directory, uncachedToCachedFiles, bundleKey, bundle))
            {
                bundle = CassetteSettings.bundles.GetBundle(fileHelper, directory, uncachedToCachedFiles, bundleKey, bundle);
                bundlesToSort.Add(bundle);
            }
            else
            {
                var unprocessedAssetPaths = CassetteSettings.bundles.GetAssetPaths(bundle);
                if (!IsCompositeBundle(bundle))
                {
                    bundle.Process(settings);
                }
                CassetteSettings.bundles.AddBundle(fileHelper, uncachedToCachedFiles, bundleKey, bundle, unprocessedAssetPaths);
            }
            return bundle;
        }
Example #3
0
 public AssignHash_Tests()
 {
     assignHash = new AssignHash();
     bundle = new TestableBundle("~");
     sha1 = SHA1.Create();
 }