`miniwdl localize`
This new tool receives WDL and a Cromwell-style input JSON for it, which may reference Files by URIs. It downloads such URIs to a local directory, and generates equivalent JSON with the local filenames.
Although `miniwdl run` can download URI inputs without this intermediate step, this tool can be helpful to avoid repeating downloads across multiple runs/attempts.
`WDL`
* Permit `"~{sep=' ' array}"` interpolations where `array` item type may be optional (null values are written as empty strings)
* Fix negation/infix operator precedence in WDL boolean expressions
* Forbid identifiers starting with `_`, per WDL spec
`miniwdl run`
* Permit relative imports from WDL files downloaded from URI
* It's now possible to run many workflows from the internet without manually downloading anything in preparation, e.g. `miniwdl run https://raw.githubusercontent.com/my/repo/master/workflow.wdl input1=https://s3.amazonaws.com/mybucket/file.txt`
* `--runtime-defaults` accepts a JSON object or filename with default values for all task runtime sections
* `--max-runtime-{cpu,memory}` renamed to `--runtime-{cpu,memory}-max` for consistency
**Standing limitations:**
* Task output files must reside in or under the initial working directory (214)
* Task input files are mounted read-only by default; commands to rename or remove them can succeed only with `--copy-input-files` (210)
* Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (193)
Please vote on these and/or report other interoperability problems via [Issues](https://github.com/chanzuckerberg/miniwdl/issues)!
Housekeeping
* Sped up [Travis CI builds](https://travis-ci.org/chanzuckerberg/miniwdl) by (i) splitting the suite across multiple jobs and (ii) caching slow-evolving apt/PyPI dependencies in reusable [docker image layers](https://quay.io/repository/mlin/miniwdl_ci?tab=tags).