FlubuCore v4.0.3.0 Release Notes

    • FlubuCore interactive mode which offers target tab completition, options tab completition, toogle targets and options, executed commands history and more.

    FlubuCore interactive mode

    • Targets: Execute another target within target with AddTarget.
        protected override void ConfigureTargets(ITaskContext context)
        {
           var exampleB = context.CreateTarget("TargetB")
                .Do(Something);
    
           context.CreateTarget("TargetA")
               .AddCoreTask(x => x.Build())
               .AddTarget(exampleB)  //Target is executed in the order it was added
               .Do(JustAnExample);
        }
    
        public void JustAnExample(ITaskContext context)
        {
            ...
        }
    
    • Target: Add tasks to target with a foreach loop.

      protected override void ConfigureTargets(ITaskContext context)
      {
           var solution = context.Properties.Get<VSSolution>(BuildProps.Solution);
      
           context.CreateTarget("Pack")
                  .ForEach(solution.Projects, (item, target) =>
                  {
                      target.AddCoreTask(x => x.Pack().Project(item.ProjectName))
                            .Do(JustAnExample, item);
                  });
      }
      

    private void JustAnExample(ITaskContext context, VSProjectInfo vsProjectInfo) { //// Do something. }

    
    - Override existing options or add additional options to tasks through console
    
    <sup>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Let's say you have target</sup>
    ```c#
    context.CreateTarget("Build")`
        .AddCoreTask(x => x.Build("MySolution.sln").Configuration("Release"); 
    

    ๐Ÿ—       and you wan't to build solution in debug configuration.

          You could just write in console

    ๐Ÿ— flubu build /o:configuration=Debug

          or

    ๐Ÿ— flubu build /o:c=Debug

          flubu would execute

    ๐Ÿ— dotnet build MySolution.sln -c Debug

    • ๐ŸŒฒ sequentiall logging in asynchronus executed tasks and targets.
    context.CreateTarget("Test")
            .SetAsDefault()
            .SequentialLogging(true)
            .AddCoreTaskAsync(x => x.Pack())
            .AddCoreTaskAsync(x => x.Pack())
            .DependsOnAsync(test2, test3);
    
    • ๐Ÿ†• New plugins are available: Chocolatey, Gitter and Slack plugin.
    • โž• Added Get solution infromation as task context extension
    • โž• Added support for multiple Musts on target
    • ๐Ÿ”Š Logs have now indentation for better readability.
    • ๐Ÿ”Š Logs have now timemark (actions that takes more than 2sec).
    • ๐Ÿ‘Œ Improved build summary in logs.
    • ๐Ÿ— Loged build finish time and build duration
    • ๐Ÿ›  Fixed GitVersionTask
    • Targets: Must now accepts optional error message parameter.
    • โšก๏ธ UpdateNetCoreTask can now write version quality(version suffix)
    • FetchBuildVersionFromFile can now fetch version quality(version suffix).
    • ๐ŸŒฒ FetchBuildVersionFromFile improved logging.
    • โž• Added options to set versions in dotnet tasks (dotnet build, dotnet pack, dotnet publish)
    • LoadSoluationTask returns solution information
    • โž• Added WithArgument to IRunProgramTask interface
    • ๐Ÿ›  Fixed check of unknown targets.