Home

Awesome

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?

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

<ul> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Home">Home</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Getting-Started">Getting Started</a></li> </ul> <p><strong>Writing Tasks</strong></p> <ul> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Creating-a-Workflow">Creating a Workflow</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Defining-Tasks">Defining Tasks</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Share-state-accross-tasks">Share State accross Tasks</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Mastering-Dependencies">Mastering Dependencies</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Using-result-transformers">Using result transformers</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Using-Subflows-to-organize-tasks">Using Subflows to organize tasks</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Tasks-Preconditions">Tasks Preconditions</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Recovering-failure-results">Recovering failure results</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Declaring-dynamic-tasks" style="color: #FF0000"><code>absent</code> Declaring dynamic tasks</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Creating-Custom-Tasks"><code>absent</code> Creating Custom Tasks</a></li> </ul> <p><strong>Running Tasks</strong></p> <ul> <li><a href="https://github.com/rosaliafx/Rosalia/wiki/Rosalia.exe-command-line-reference">Rosalia.exe command line</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Passing-Properties-to-Workflow">Passing Properties to Workflow</a></li> <li> <a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Continuous-Integration">Continuous Integration</a> <ul> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/Travis-CI">Travis CI</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Team-City"><code>absent</code> Team City</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/AppVeyor"><code>absent</code> AppVeyor</a></li> </ul> </li> </ul> <p><strong>API</strong></p> <ul> <li> <a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/File-System">File System</a> <ul> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/IFile">IFile</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/IDirectory">IDirectory</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/FileList">FileList</a></li> </ul> </li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/TaskContext"><code>absent</code> TaskContext</a></li> </ul> <p><strong>Tasklib</strong></p> <ul> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/AssemblyInfo">AssemblyInfo</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Compression"><code>absent</code> Compression</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Git"><code>absent</code> Git</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/MsBuild">MsBuild</a></li> <li><a class="internal present" href="//github.com/rosaliafx/Rosalia/wiki/NuGet">NuGet</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Standard"><code>absent</code> Standard</a></li> <li><a class="internal absent" href="//github.com/rosaliafx/Rosalia/wiki/Svn"><code>absent</code> Svn</a></li> </ul>