// // 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 def required_channels = ['conda-forge', 'bioconda', 'defaults'] def conda_check_failed = !required_channels.every { ch -> ch in channels } // Check that they are in the right order conda_check_failed |= !(channels.indexOf('conda-forge') < channels.indexOf('bioconda')) conda_check_failed |= !(channels.indexOf('bioconda') < channels.indexOf('defaults')) if (conda_check_failed) { 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/user/install.html#set-up-channels\n" + " NB: The order of the channels matters!\n" + "===================================================================================" } } }