private static IBuildQueueJob CreateNewBuildJob( ComponentConfiguration componentConfiguration, CancellationTokenSource <CompileCancellationToken> cancellationTokenSource, ProgressToken progressToken, IJobCollection jobCollection) { IBuildableComponentSubtype buildableComponentSubtype = (IBuildableComponentSubtype)componentConfiguration.ComponentSubtype; string outputFilePath = buildableComponentSubtype.GetOutputTopLevelFilePath(componentConfiguration); if (jobCollection.JobInProgress(outputFilePath)) { throw new CommandLineOperationException($"Build at {outputFilePath} is already in progress."); } BuildId currentBuildId = buildableComponentSubtype.CreateBuildId(componentConfiguration); BuildQueueJobId buildQueueJobId = BuildQueueJobExtension.CreateBuildQueueJobId(currentBuildId); IBuildQueueJob job = jobCollection.CreateNewJob( buildQueueJobId, componentConfiguration.ComponentDefinition.ReferencingEnvoy, buildableComponentSubtype.XmlName, outputFilePath, cancellationTokenSource, progressToken); return(job); }
private static void JobCollectionOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e?.NewItems == null) { return; } foreach (object newItem in e.NewItems) { var job = (IBuildQueueJob)newItem; bool isChildJob = !BuildQueueJobId.IsRootJob(job.BuildQueueJobId); if (isChildJob) { WriteBeginChildBuildMessage(job.AssociatedEnvoy.Name.Last); job.PropertyChanged += OnChildBuildJobPropertyChanged; } else { WriteBeginRootBuildMessage(job.AssociatedEnvoy.Name.Last); job.PropertyChanged += OnRootBuildJobPropertyChanged; } } }