wdl-engine 0.13.1

Execution engine for Workflow Description Language (WDL) documents.
Documentation
version 1.3

struct NetworkConfig {
  String hostname
  Int port
  Boolean tls
}

struct ServerConfig {
  String name
  Int cpu_cores
  NetworkConfig network
  Array[String] services
}

enum Ports[Array[Int]] {
  DefaultPorts = [80, 443, 8080],
  CustomPorts = [3000, 3001]
}

enum Range[Pair[Int, Int]] {
  Small = (1, 100),
  Large = (1, 1000)
}

enum Settings[Map[String, Int]] {
  Timeouts = {"connect": 30, "read": 60, "write": 45},
  Retries = {"max": 3, "initial": 1}
}

enum Config[Object] {
  Development = object {port: 8080, debug: true, workers: 2},
  Production = object {port: 443, debug: false, workers: 8},
  Advanced = object {
    ports: [8080, 8081, 8082],
    settings: {"timeout": 30, "retries": 3},
    range: (1, 100),
    nested: object {enabled: true, level: 5}
  }
}

enum Servers[ServerConfig] {
  WebServer = ServerConfig {
    name: "web-01",
    cpu_cores: 4,
    network: NetworkConfig {
      hostname: "web.example.com",
      port: 443,
      tls: true
    },
    services: ["nginx", "php-fpm"]
  },
  Database = ServerConfig {
    name: "db-01",
    cpu_cores: 8,
    network: NetworkConfig {
      hostname: "db.example.com",
      port: 5432,
      tls: true
    },
    services: ["postgresql"]
  }
}

workflow enum_compound_values {
  output {
    Array[Int] default_ports = value(Ports.DefaultPorts)
    Array[Int] custom_ports = value(Ports.CustomPorts)
    Pair[Int, Int] small_range = value(Range.Small)
    Pair[Int, Int] large_range = value(Range.Large)
    Map[String, Int] timeouts = value(Settings.Timeouts)
    Map[String, Int] retries = value(Settings.Retries)
    Object dev_config = value(Config.Development)
    Object prod_config = value(Config.Production)
    Object advanced_config = value(Config.Advanced)
    ServerConfig web = value(Servers.WebServer)
    ServerConfig db = value(Servers.Database)
  }
}