Scala programming language library for parsing WDL, and command-line tools for type-checking, code formatting, and more.
The wdlTools.syntax
package implements an abstract syntax tree (AST) for WDL. It uses Antlr4 grammar developed by Patrick Magee. The class definitions reside in src/main/scala/wdlTools/syntax/AbstractSyntax.scala
.
Currently, WDL draft-2 and 1.0 are fully supported, and development/2.0 is partially supported.
import wdlTools.syntax.AbstractSyntax._
import wdlTools.syntax.Parsers
import wdlTools.util.{FileSource, FileSourceResolver}
val parsers = Parsers(followImports = true)
val wdl: FileSource = FileSourceResolver.get.resolve("file:///path/to/my/wdl")
val doc: Document = parsers.parseDocument(wdl)
// print the source locations of all tasks in the document
doc.elements.foreach {
case task: Task => println(s"Task ${task.name} is at ${task.loc}")
}
The wdlTools JAR also provides various command line tools to accelerate and simplify the development of WDL workflows. You can get help by running:
$ java -jar wdlTools.jar [command] --help
The following commands are currently available. They should be considered "alpha" quality - please report any bugs/enhancements using the issue tracker.
- check: type-check a WDL file
- docgen: generate documentation for WDL tasks/workflows
- format: reformat a WDL file
- lint: detect "lint" (i.e. incorrect style or potentially problematic code) in a WDL file
- new: generate a new WDL project
- printTree: print the Abstract Syntax Tree for a WDL document
- readmes: generate README files for the tasks/workflows in a WDL file - these files are named so that they will be recognized when building DNAnexus apps/workflows using dxWDL
- upgrade: upgrade a WDL file to a newer version; currently only draft-2 -> 1.0 is supported
The java code for the parser is generated by the ANTRL4 tool.
- Download a jar file with the instructions
cd GIT_REPO
- Assuming you downloaded the jar file to
$HOME/antlr-4.8-complete.jar
generated java code from the grammar by runningmake
from the toplevel. - Build the scala code:
sbt compile
- Run the tests:
sbt test
See the documentation for full details.
wdlTools is not an official product of DNAnexus. Please do not contact DNAnexus (or any employees thereof) for support. To report a bug or feature request, please open an issue in the issue tracker.