/// <summary>Add a source dependency from an input spec.</summary> /// <param name="inputSpec">The input spec.</param> public void AddSourceDependency(InputSpec inputSpec) { this.isUnsaved = true; var key = inputSpec.ToJson(true); Safe.UniqueKeyLock( key, Safe.MaxLockTimeout, () => { if (!this.sourceDependencies.ContainsKey(key)) { this.sourceDependencies.Add( key, CacheSourceDependency.Create( this.context, new InputSpec { IsOptional = inputSpec.IsOptional, Path = inputSpec.Path, SearchOption = inputSpec.SearchOption, SearchPattern = inputSpec.SearchPattern })); } }); }
/// <summary>Creates a source dependency.</summary> /// <param name="context">The context.</param> /// <param name="inputSpec">The input spec.</param> /// <returns>The <see cref="CacheSourceDependency"/>.</returns> internal static CacheSourceDependency Create(IWebGreaseContext context, InputSpec inputSpec) { if (context == null) { throw new ArgumentNullException("context"); } if (inputSpec == null) { throw new ArgumentNullException("inputSpec"); } var csd = new CacheSourceDependency(); if (Directory.Exists(inputSpec.Path)) { inputSpec.Path.EnsureEndSeparator(); } csd.InputSpecHash = GetInputSpecHash(context, inputSpec); inputSpec.Path = inputSpec.Path.MakeRelativeToDirectory(context.Configuration.SourceDirectory); csd.InputSpec = inputSpec; return(csd); }