Skip to content

rosaliafx/Rosalia

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

An open source .NET build automation framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages