Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class ArgumentsFromGitCommitMessageAttribute : BuildExtensionAttributeBas
{
public string Prefix { get; set; } = "[nuke++]";

public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (BuildServerConfigurationGeneration.IsActive)
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Fallout.Common.Execution;

public class UnsetVisualStudioEnvironmentVariablesAttribute : BuildExtensionAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
new[]
{
Expand Down
4 changes: 2 additions & 2 deletions src/Fallout.Build/Attributes/VerbosityMappingAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ public VerbosityMappingAttribute(Type targetType)
public string Verbose { get; set; }

public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
object GetMappedValue(string name)
=> _targetType
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Fallout.Common.CI;
public class GenerateBuildServerConfigurationsAttribute
: BuildServerConfigurationGenerationAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
var configurationId = ParameterService.GetParameter<string>(ConfigurationParameterName);
if (configurationId == null)
Expand All @@ -23,7 +23,7 @@ public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTarge
.SingleOrDefaultOrError($"Found multiple {nameof(IConfigurationGenerator)} with same ID '{configurationId}'.")
.NotNull("generator != null");

generator.Generate(executableTargets);
generator.Generate(executableTargets.Cast<ExecutableTarget>().ToList());

Environment.Exit(0);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Fallout.Common.CI;
public class InvokeBuildServerConfigurationGenerationAttribute
: BuildServerConfigurationGenerationAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (Build.IsServerBuild || Build.IsInterceptorExecution)
return;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;

namespace Fallout.Common.Execution;

Expand All @@ -11,39 +9,7 @@ public abstract class BuildExtensionAttributeBase : Attribute, IBuildExtension
public virtual float Priority { get; set; }
}

public interface IOnBuildCreated : IBuildExtension
{
void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets);
}

public interface IOnBuildInitialized : IBuildExtension
{
void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan);
}

public interface IOnTargetSummaryUpdated : IBuildExtension
{
void OnTargetSummaryUpdated(IFalloutBuild build, ExecutableTarget target);
}

public interface IOnTargetSkipped : IBuildExtension
{
void OnTargetSkipped(ExecutableTarget target);
}

public interface IOnTargetRunning : IBuildExtension
{
void OnTargetRunning(ExecutableTarget target);
}

public interface IOnTargetSucceeded : IBuildExtension
{
void OnTargetSucceeded(ExecutableTarget target);
}

public interface IOnTargetFailed : IBuildExtension
{
void OnTargetFailed(ExecutableTarget target);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace Fallout.Common.Execution;

public class ArgumentsFromParametersFileAttribute : BuildExtensionAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
// TODO: probably remove
if (!Constants.GetFalloutDirectory(FalloutBuild.RootDirectory).DirectoryExists())
Expand Down
14 changes: 7 additions & 7 deletions src/Fallout.Build/Execution/Extensions/EventInvoker.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,34 +13,34 @@ internal class EventInvoker : BuildExtensionAttributeBase,
IOnTargetFailed,
IOnBuildFinished
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
((FalloutBuild)Build).OnBuildCreated();
}

public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
((FalloutBuild)Build).OnBuildInitialized();
}

public void OnTargetRunning(ExecutableTarget target)
public void OnTargetRunning(ITargetModel target)
{
((FalloutBuild)Build).OnTargetRunning(target.Name);
}

public void OnTargetSkipped(ExecutableTarget target)
public void OnTargetSkipped(ITargetModel target)
{
((FalloutBuild)Build).OnTargetSkipped(target.Name);
}

public void OnTargetSucceeded(ExecutableTarget target)
public void OnTargetSucceeded(ITargetModel target)
{
((FalloutBuild)Build).OnTargetSucceeded(target.Name);
}

public void OnTargetFailed(ExecutableTarget target)
public void OnTargetFailed(ITargetModel target)
{
((FalloutBuild)Build).OnTargetFailed(target.Name);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ namespace Fallout.Common.Execution;
internal class HandleHelpRequestsAttribute : BuildExtensionAttributeBase, IOnBuildInitialized
{
public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
if (Build.Help || executionPlan.Count == 0)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ internal class HandlePlanRequestsAttribute : BuildExtensionAttributeBase, IOnBui
private AbsolutePath HtmlFile => Build.TemporaryDirectory / HtmlFileName;

public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
if (Build.Plan)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ internal class HandleReSharperSurrogateArgumentsAttribute : BuildExtensionAttrib
{
private AbsolutePath ReSharperSurrogateFile => Constants.GetReSharperSurrogateFile(Build.RootDirectory);

public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (!ReSharperSurrogateFile.Exists())
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ namespace Fallout.Common.Execution;

internal class HandleShellCompletionAttribute : BuildExtensionAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (BuildServerConfigurationGeneration.IsActive)
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ internal class HandleVisualStudioDebuggingAttribute : BuildExtensionAttributeBas

private AbsolutePath VisualStudioDebugFile => Constants.GetVisualStudioDebugFile(Build.RootDirectory);

public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (!ParameterService.GetParameter<bool>(Constants.VisualStudioDebugParameterName))
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ namespace Fallout.Common.ValueInjection;
internal class InjectNonParameterValuesAttribute : BuildExtensionAttributeBase, IOnBuildInitialized
{
public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
ValueInjectionUtility.InjectValues(Build, (member, attribute) =>
{
Expand All @@ -25,7 +25,7 @@ public void OnBuildInitialized(
if (member.HasCustomAttribute<RequiredAttribute>())
return false;

var requiredMembers = executionPlan.SelectMany(x => x.DelegateRequirements)
var requiredMembers = executionPlan.SelectMany(x => ((ExecutableTarget)x).DelegateRequirements)
.Where(x => x is not Expression<Func<bool>>)
.Select(x => x.GetMemberInfo()).ToList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Fallout.Common.ValueInjection;

internal class InjectParameterValuesAttribute : BuildExtensionAttributeBase, IOnBuildCreated
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
ValueInjectionUtility.InjectValues(Build, (_, attribute) => attribute.GetType() == typeof(ParameterAttribute));
}
Expand Down
8 changes: 4 additions & 4 deletions src/Fallout.Build/Execution/Extensions/TelemetryAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ namespace Fallout.Common.Execution;
internal class TelemetryAttribute : BuildExtensionAttributeBase, IOnBuildInitialized, IOnTargetSucceeded
{
public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
if (Build.IsInterceptorExecution)
return;

Telemetry.BuildStarted(Build);
}

public void OnTargetSucceeded(ExecutableTarget target)
public void OnTargetSucceeded(ITargetModel target)
{
if (Build.IsInterceptorExecution)
return;

Telemetry.TargetSucceeded(target, Build);
Telemetry.TargetSucceeded((ExecutableTarget)target, Build);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Fallout.Common.Execution;

internal class UpdateNotificationAttribute : BuildExtensionAttributeBase, IOnBuildCreated, IOnBuildFinished
{
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (Build.IsLocalBuild && ShouldNotify)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ namespace Fallout.Common.Execution;
public class CheckPathEnvironmentVariableAttribute : BuildExtensionAttributeBase, IOnBuildInitialized
{
public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
ProcessTasks.CheckPathEnvironmentVariable();
}
Expand Down
2 changes: 1 addition & 1 deletion src/Fallout.Common/Attributes/GlobbingOptionsAttribute.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public GlobbingOptionsAttribute(GlobbingCaseSensitivity caseSensitivity)
_caseSensitivity = caseSensitivity;
}

public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
Globbing.GlobbingCaseSensitivity = _caseSensitivity;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class HandleSingleFileExecutionAttribute : BuildExtensionAttributeBase, I
{
private const string ScriptUrl = "https://dot.net/v1/dotnet-install.sh";

public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
public void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets)
{
if (!IsSingleFileExecution)
return;
Expand Down
44 changes: 41 additions & 3 deletions src/Fallout.Core/Execution/IBuildExtension.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using System.Collections.Generic;

namespace Fallout.Common.Execution;

/// <summary>
Expand All @@ -9,9 +11,45 @@ public interface IBuildExtension
float Priority { get; }
}

/// <summary>
/// Build extension invoked once the build has finished (whatever the outcome).
/// </summary>
/// <summary>Build extension invoked once the executable targets have been created.</summary>
public interface IOnBuildCreated : IBuildExtension
{
void OnBuildCreated(IReadOnlyCollection<ITargetModel> executableTargets);
}

/// <summary>Build extension invoked once the build has been initialized and the plan computed.</summary>
public interface IOnBuildInitialized : IBuildExtension
{
void OnBuildInitialized(
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan);
}

/// <summary>Build extension invoked when a target is skipped.</summary>
public interface IOnTargetSkipped : IBuildExtension
{
void OnTargetSkipped(ITargetModel target);
}

/// <summary>Build extension invoked when a target starts running.</summary>
public interface IOnTargetRunning : IBuildExtension
{
void OnTargetRunning(ITargetModel target);
}

/// <summary>Build extension invoked when a target succeeds.</summary>
public interface IOnTargetSucceeded : IBuildExtension
{
void OnTargetSucceeded(ITargetModel target);
}

/// <summary>Build extension invoked when a target fails.</summary>
public interface IOnTargetFailed : IBuildExtension
{
void OnTargetFailed(ITargetModel target);
}

/// <summary>Build extension invoked once the build has finished (whatever the outcome).</summary>
public interface IOnBuildFinished : IBuildExtension
{
void OnBuildFinished();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ namespace Fallout.Common.Tools.DotCover;
public class TeamCitySetDotCoverHomePathAttribute : BuildExtensionAttributeBase, IOnBuildInitialized
{
public void OnBuildInitialized(
IReadOnlyCollection<ExecutableTarget> executableTargets,
IReadOnlyCollection<ExecutableTarget> executionPlan)
IReadOnlyCollection<ITargetModel> executableTargets,
IReadOnlyCollection<ITargetModel> executionPlan)
{
TeamCity.Instance?.SetConfigurationParameter("teamcity.dotCover.home", DotCoverTasks.DotCoverPath);
}
Expand Down