/// <summary> /// Prepares a builder to be ran in a given build context. /// /// <para>This is the place where a builder can add additional dependencies.</para> /// </summary> /// <param name="context">The current build context</param> public void AddToContext(IBuildContext context) { builders.Clear(); if (alias != null && !context.Contains(this)) { foreach (var childRef in alias.References) { if (childRef.Type == reference.Type) { var builder = referenceBuilderFactory.CreateReferenceBuilder(childRef, project); builder.AddToContext(context); builders.Add(builder); } } context.AddBuilder(this, builders); } else { foreach (var dep in context.GetDependencies(this)) { builders.Add(dep); } } }
private IBuilder CreateReferenceBuilder(Reference reference) { var builder = referenceBuilderFactory.CreateReferenceBuilder(reference, project); if (builder != null) { return(builder); } else { throw new InvalidReferenceTypeException(reference.Uri.Scheme); } }
private string GetTool(string uri, string fileName, Project project) { var referenceBuilder = referenceBuilderFactory.CreateReferenceBuilder( new Reference(new Uri(uri), ReferenceType.Build), project); var buildContext = buildContextFactory.CreateBuildContext(); buildContext.AddBuilder(referenceBuilder, new IBuilder[0]); var files = buildContext.Run(referenceBuilder); var file = files.FirstOrDefault(f => Path.GetFileName(f).Equals(fileName, StringComparison.InvariantCultureIgnoreCase)); var localTargetRoot = (LocalFileSystemDirectory)targetRoot; if (file != null) { return(Path.Combine(localTargetRoot.AbsolutePath, file)); } else { return(null); } }
private string LoadReference(Uri referenceUri) { var dummyProject = new Project("dummy", new Module("dummy", new Suite(suiteRoot))); var referenceBuilder = referenceBuilderFactory.CreateReferenceBuilder(new Reference(referenceUri, ReferenceType.Build), dummyProject); var buildContext = buildContextFactory.CreateBuildContext(); buildContext.AddBuilder(referenceBuilder); var files = buildContext.Run(referenceBuilder); var file = files.FirstOrDefault(f => Path.GetExtension(f).ToLowerInvariant() == ".dll"); var localTargetRoot = (LocalFileSystemDirectory)targetRoot; if (file != null) { return(Path.Combine(localTargetRoot.AbsolutePath, file)); } else { return(null); } }
public IReferenceBuilder CreateReferenceBuilder(Reference reference, Project project) { var builder = baseImpl.CreateReferenceBuilder(reference, project); return(store.Add(builder)); }