/Rosalia

An open source .NET build automation framework

Primary LanguageC#MIT LicenseMIT

Rosalia

Rosalia is a concurrency-aware build automation tool that utilize monadic query-comprehension syntax for writing tasks in concise and strongly-typed manner using C#.

Gitter

Why?

  • use the same language for both main codebase and build script
  • get debugging, refactoring and testing tools to work for build "scripts" out of the box
  • utilize any third-party .NET library for build task purposes

Quick example

var fooTask = Task(                   /**********************/
    "fooTask",                        /* define a task as   */
    () => {                           /* a simple action... */
        // do something here          /**********************/
    });

var barTask = Task(                   /**********************/
    "barTask",                        /* ..or use a func if */
    () => {                           /* you need to return */
        return "bar".AsTaskResult();  /* a result...        */
    });                               /**********************/

var bazTask = Task(                   /**********************/
	"bazTask",                        /* ...or use a class  */
	new MyCustomTask());              /* to encapsulate     */
                                      /* task logic         */
                                      /**********************/

var mainTask = Task(                  /***********************************************/
    "mainTask",                       /* Use Linq query-comprehension to fetch       */
    from barResult in barTask         /* results from prior tasks (actually monads)  */
    from bazResult in bazTask         /* and define dependencies at the same time.   */
    select new MyMainTask(            /***********************************************/
        barResult,                 
        bazResult).AsTask(),

    Default(),                        /* This task is default */
    DependsOn(fooTask));              /* Add one more dependency manually */

Rosalia uses Rosalia to build itself on Travis CI NuGet package Build status

Explore Wiki

Writing Tasks

Running Tasks

API

Tasklib