コード例 #1
0
        /// <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);
        }