/// <summary>
/// Resolves the given context using all the available patterns, checking their
/// resolution in the file system as well.
/// </summary>
/// <param name="context">Resolution context</param>
/// <returns>Returns the path to the dependency if resolution succeeded. Otherwise it returns <c>null</c>.</returns>
public PatternResolution Resolve(IPatternResolutionContext context)
{
Contract.Requires(context != null);
var logLines = new StringBuilder();
foreach (RepositoryPattern pattern in patterns)
{
string res = pattern.Resolve(context);
if (res != null)
{
logLines.AppendFormat("Trying resolved FS repository path: {0}\n", res);
if (fsAccess.Exists(res))
{
return(PatternResolution.Success(res));
}
else
{
logLines.AppendFormat("FS repository path `{0}` is invalid\n", res);
}
}
}
return(PatternResolution.Failure(logLines.ToString()));
}