mirror of
https://github.com/MillironX/taxprofiler.git
synced 2024-11-23 14:59:55 +00:00
47 lines
2 KiB
Groovy
47 lines
2 KiB
Groovy
//
|
|
// This file holds several Groovy functions that could be useful for any Nextflow pipeline
|
|
//
|
|
|
|
import org.yaml.snakeyaml.Yaml
|
|
|
|
class Utils {
|
|
|
|
//
|
|
// When running with -profile conda, warn if channels have not been set-up appropriately
|
|
//
|
|
public static void checkCondaChannels(log) {
|
|
Yaml parser = new Yaml()
|
|
def channels = []
|
|
try {
|
|
def config = parser.load("conda config --show channels".execute().text)
|
|
channels = config.channels
|
|
} catch(NullPointerException | IOException e) {
|
|
log.warn "Could not verify conda channel configuration."
|
|
return
|
|
}
|
|
|
|
// Check that all channels are present
|
|
// This channel list is ordered by required channel priority.
|
|
def required_channels_in_order = ['conda-forge', 'bioconda', 'defaults']
|
|
def channels_missing = ((required_channels_in_order as Set) - (channels as Set)) as Boolean
|
|
|
|
// Check that they are in the right order
|
|
def channel_priority_violation = false
|
|
def n = required_channels_in_order.size()
|
|
for (int i = 0; i < n - 1; i++) {
|
|
channel_priority_violation |= !(channels.indexOf(required_channels_in_order[i]) < channels.indexOf(required_channels_in_order[i+1]))
|
|
}
|
|
|
|
if (channels_missing | channel_priority_violation) {
|
|
log.warn "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
|
|
" There is a problem with your Conda configuration!\n\n" +
|
|
" You will need to set-up the conda-forge and bioconda channels correctly.\n" +
|
|
" Please refer to https://bioconda.github.io/\n" +
|
|
" The observed channel order is \n" +
|
|
" ${channels}\n" +
|
|
" but the following channel order is required:\n" +
|
|
" ${required_channels_in_order}\n" +
|
|
"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
|
|
}
|
|
}
|
|
}
|