Tiny simple command line utility used to create a software versions YAML file from the various tools used throughout a Nextflow pipeline, in order to generate the Software Versions HTML table input used with MultiQC reports.
Example usage:
$ ./dumpSoftwareVersions -manifestName dump-software-version-demo -manifestVersion 1.0 -nxfVersion 23.04.1 -processLabel CUSTOM_DUMPSOFTWAREVERSIONS example/collated_versions.yml
Output YAML is printed to stdout by default. You will want to pipe it to a file named software_versions_mqc.yml
for use with MultiQC.
- example input file:
example/collated_versions.yml
- example output:
example/software_versions_mqc.yml
You can see an example of how to use this utility inside your Nextflow pipeline here.
A simple example Nextflow process might look like this
process DUMPSOFTWAREVERSIONS {
container "stevekm/dump-software-versions:0.1"
input:
path(versionsYAMLFile) // single file with collated version YAML from all previous tools in the pipeline
output:
path(output_filename), emit: mqc_yml
script:
output_filename = "software_versions_mqc.yml"
"""
dumpSoftwareVersions \
-manifestName "${workflow.manifest.name}" \
-manifestVersion "${workflow.manifest.version}" \
-nxfVersion "${workflow.nextflow.version}" \
-processLabel "${task.process}" \
"${versionsYAMLFile}" > "${output_filename}"
"""
}
The output file here software_versions_mqc.yml
can then be passed as an input item to your MultiQC Nextflow process.
Once incorporated into MultiQC, you should get a nice table that looks something like this;

Get it from Docker Hub here: https://hub.docker.com/repository/docker/stevekm/dump-software-versions/general
docker pull stevekm/dump-software-versions:0.1
- try it out with the included Makefile recipe;
make docker-test-run
Or download binaries from a release version here: https://github.com/stevekm/dumpSoftwareVersions/releases
Or build from source using Go version 1.20+;
go build -o ./dumpSoftwareVersions ./main.go
See full usage in a Nextflow pipeline here:
Inspired by:
For use with: