/// <summary> /// Configures the dependency, criteria and error handling for a dotnet-app recipe task /// </summary> /// <param name="builder">Cake task builder</param> /// <param name="app"><see cref="DotNetApp"/> recipe configuration</param> /// <param name="dependentOn">Dependent task name</param> /// <param name="dependee">Dependee task name</param> /// <returns></returns> public static CakeTaskBuilder ConfigTaskFor( this CakeTaskBuilder builder, DotNetApp app, string dependentOn, string dependee = null) { // Bump depencent task forward based on recipe config if (dependentOn == app.Tasks.Names.Commit && !app.UseCommitTask) { dependentOn = app.Tasks.Names.Package; } if (dependentOn == app.Tasks.Names.PostBuild && !app.UsePostBuildTask) { dependentOn = app.Tasks.Names.Build; } if (dependentOn == app.Tasks.Names.PreBuild && !app.UsePreBuildTask) { dependentOn = app.Tasks.Names.Clean; } if (dependentOn == app.Tasks.Names.AssemblyInfo && !app.UpdateAssemblyInfo) { dependentOn = app.Tasks.Names.ReleaseNotes; } if (dependentOn == app.Tasks.Names.ReleaseNotes && !app.PrepareReleaseNotes) { dependentOn = app.Tasks.Names.Version; } builder .IsDependentOn(dependentOn) .WithCriteria(() => !app.SkipRemainingTasks && !app.Errored) .OnError(ex => { app.SetError(builder, ex); }); // Bump dependee back based on app config if (!string.IsNullOrEmpty(dependee)) { if (dependee == app.Tasks.Names.ReleaseNotes && !app.PrepareReleaseNotes) { dependee = app.Tasks.Names.AssemblyInfo; } if (dependee == app.Tasks.Names.AssemblyInfo && !app.UpdateAssemblyInfo) { dependee = app.Tasks.Names.Clean; } if (dependee == app.Tasks.Names.PreBuild && !app.UsePreBuildTask) { dependee = app.Tasks.Names.Build; } if (dependee == app.Tasks.Names.PostBuild && !app.UsePostBuildTask) { dependee = app.Tasks.Names.Test; } if (dependee == app.Tasks.Names.Commit && !app.UseCommitTask) { dependee = app.Tasks.Names.Push; } builder.IsDependeeOf(dependee); } return(builder); }