/// <summary>Adds an end result file from a result file.</summary>
 /// <param name="contentItem">The result file.</param>
 /// <param name="id">The category.</param>
 /// <param name="isEndResult">If the result is an endresult.</param>
 public void AddResult(ContentItem contentItem, string id, bool isEndResult)
 {
     this.isUnsaved = true;
     Safe.Lock(
         this.cacheResults,
         Safe.MaxLockTimeout,
         () => this.cacheResults.Add(CacheResult.FromContentFile(this.context, this.cacheCategory, isEndResult, id, contentItem)));
 }
        private static bool HasCachedEndResultThatChanged(IWebGreaseContext context, CacheResult r)
        {
            if (r == null)
            {
                return(true);
            }

            var absoluteEndResultPath = Path.Combine(context.Configuration.DestinationDirectory, r.RelativeHashedContentPath ?? r.RelativeContentPath);

            return(!File.Exists(absoluteEndResultPath) || !r.ContentHash.Equals(context.GetFileHash(absoluteEndResultPath)));
        }
 /// <summary>Creates a content item from a cache result.</summary>
 /// <param name="cacheResult">The cache result.</param>
 /// <param name="relativeContentPath">The relative Content Path.</param>
 /// <param name="relativeHashedContentPath">The relative Hashed Content Path.</param>
 /// <param name="resourcePivotKeys">The resource Pivot Keys.</param>
 /// <returns>The <see cref="ContentItem"/>.</returns>
 public static ContentItem FromCacheResult(CacheResult cacheResult, string relativeContentPath = null, string relativeHashedContentPath = null, params ResourcePivotKey[] resourcePivotKeys)
 {
     return(new ContentItem
     {
         ContentItemType = ContentItemType.Path,
         AbsoluteContentPath = cacheResult.CachedFilePath,
         RelativeContentPath = relativeContentPath ?? cacheResult.RelativeContentPath,
         RelativeHashedContentPath = relativeHashedContentPath ?? cacheResult.RelativeHashedContentPath,
         ResourcePivotKeys = resourcePivotKeys,
     });
 }