Skip to content

common-workflow-lab/CWLDotNet

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CWLDotNet

example workflow

This project contains .Net objects and utilities auto-generated by https://github.com/common-workflow-language/schema_salad for parsing documents corresponding to the https://w3id.org/cwl/cwl schema

Usage

Loading Documents

// Specify the CWL file to load
Uri fileUri = new Uri(Path.GetFullPath("my-cwl-document.cwl"));

// Read the file contents 
string fileContent = System.IO.File.ReadAllText(fileUri.AbsolutePath);

// Parse the CWL document
var doc = CWLDotNet.RootLoader.LoadDocument(fileContent, fileUri.AbsoluteUri);

// Work with the document
doc.Switch(
    CommandLineTool => Console.WriteLine("The loaded document is a CommandLineTool"),
    ExpressionTool => Console.WriteLine("The loaded document is a ExpressionTool"),
    Workflow => Console.WriteLine("The loaded document is a Workflow"),
    Operation => Console.WriteLine("The loaded document is an Operation"),
    ListOf => Console.WriteLine("This is a list of one of: CommandLineTool | ExpressionTool | Workflow | Operation")
);

Creating, Editing and Serializing Documents

using System.Text.Json;
using CWLDotNet;

// Create a CommandLineTool with empty inputs and outputs
CommandLineTool mytool = new CommandLineTool(new(),new());

// Set the base command
mytool.baseCommand = "echo";

// Create an input parameter with a default value
CommandInputParameter input1 = new CommandInputParameter(CWLType.INT);
input1.default_ = "Hello World!";

// Add the input to the tool
mytool.inputs.Add(input1);

// Serialize the tool
string outDoc = JsonSerializer.Serialize(mytool.Save());

Documentation

The complete documentation, autogenerated by DocFX can be found under the following link: https://common-workflow-lab.github.io/CWLDotNet/

Limitations

CWLDotNet only supports the CWL v1.2 syntax. Other documents have to be upgraded using the cwl-upgrader

Maintainers

@ZimmerA