Skip to content
This repository has been archived by the owner on Aug 20, 2024. It is now read-only.

Monochrome logs is option in functions rather than global parameter #101

Merged
merged 13 commits into from
Oct 10, 2023
Merged
2 changes: 1 addition & 1 deletion docs/parameters/help_text.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ params.validationShowHiddenParams = true

By default, the help output is coloured using ANSI escape codes.

If you prefer, you can disable these by using `--monochrome_logs` or `params.monochrome_logs = true`.
If you prefer, you can disable these by using the argument monochrome_logs, e.g. `paramsHelp(monochrome_logs: true)`. Alternatively this can be set at a global level via parameter `--monochrome_logs` or adding `params.monochrome_logs = true` to a configuration file. Not `--monochromeLogs` or `params.monochromeLogs` is also supported.

=== "Default (coloured)"

Expand Down
2 changes: 1 addition & 1 deletion docs/parameters/summary_log.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Output:

By default, the summary output is coloured using ANSI escape codes.

If you prefer, you can disable these by using `--monochrome_logs` or `params.monochrome_logs = true`.
If you prefer, you can disable these by using the argument monochrome_logs, e.g. `paramsHelp(monochrome_logs: true)`. Alternatively this can be set at a global level via parameter `--monochrome_logs` or adding `params.monochrome_logs = true` to a configuration file. Not `--monochromeLogs` or `params.monochromeLogs` is also supported.

=== "Default (coloured)"

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,11 @@ class SchemaValidator extends PluginExtensionPoint {
//
// Resolve Schema path relative to main workflow directory
//
static String getSchemaPath(String baseDir, String schema_filename='nextflow_schema.json') {
if (Path.of(schema_filename).exists()) {
return schema_filename
static String getSchemaPath(String baseDir, String schemaFilename='nextflow_schema.json') {
if (Path.of(schemaFilename).exists()) {
return schemaFilename
} else {
return "${baseDir}/${schema_filename}"
return "${baseDir}/${schemaFilename}"
}
}

Expand Down Expand Up @@ -220,9 +220,6 @@ class SchemaValidator extends PluginExtensionPoint {
if( !params.containsKey("validationLenientMode") ) {
params.validationLenientMode = false
}
if( !params.containsKey("monochrome_logs") ) {
params.monochrome_logs = false
}
if( !params.containsKey("help") ) {
params.help = false
}
Expand All @@ -247,7 +244,6 @@ class SchemaValidator extends PluginExtensionPoint {
def List expectedParams = [
"validationFailUnrecognisedParams",
"validationLenientMode",
"monochrome_logs",
"help",
"validationShowHiddenParams",
"validationSchemaIgnoreParams",
Expand All @@ -263,10 +259,17 @@ class SchemaValidator extends PluginExtensionPoint {
* whether the given parameters adhere to the specifications
*/
@Function
void validateParameters(String schema_filename='nextflow_schema.json') {
void validateParameters(
Map options = null,
String schemaFilename
) {

def Map params = initialiseExpectedParams(session.params)
def String baseDir = session.baseDir
def Boolean useMonochromeLogs = options?.containsKey('monochrome_logs') ? options.monochrome_logs as Boolean :
params.monochrome_logs ? params.monochrome_logs as Boolean :
params.monochromeLogs ? params.monochromeLogs as Boolean :
false
log.debug "Starting parameters validation"

// Clean the parameters
Expand All @@ -277,7 +280,7 @@ class SchemaValidator extends PluginExtensionPoint {
//=====================================================================//
// Check for nextflow core params and unexpected params
def slurper = new JsonSlurper()
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schema_filename)) )
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schemaFilename)) )
def Map schemaParams = (Map) parsed.get('definitions')
def specifiedParamKeys = params.keySet()

Expand Down Expand Up @@ -329,7 +332,7 @@ class SchemaValidator extends PluginExtensionPoint {

//=====================================================================//
// Validate parameters against the schema
def String schema_string = Files.readString( Path.of(getSchemaPath(baseDir, schema_filename)) )
def String schema_string = Files.readString( Path.of(getSchemaPath(baseDir, schemaFilename)) )
final rawSchema = new JSONObject(new JSONTokener(schema_string))
final SchemaLoader schemaLoader = SchemaLoader.builder()
.schemaJson(rawSchema)
Expand All @@ -346,8 +349,7 @@ class SchemaValidator extends PluginExtensionPoint {
}

// Colors
def Boolean monochrome_logs = params.monochrome_logs
def colors = logColours(monochrome_logs)
def colors = logColours(useMonochromeLogs)

// Validate
try {
Expand Down Expand Up @@ -406,7 +408,7 @@ class SchemaValidator extends PluginExtensionPoint {
fileContent = file_path.splitCsv(header:true, strip:true, sep:delimiter)
fileContentCasted = castToType(fileContent, types)
}
if (validateFile(monochrome_logs, key, fileContentCasted, schema_name, baseDir)) {
if (validateFile(useMonochromeLogs, key, fileContentCasted, schema_name, baseDir)) {
log.debug "Validation passed: '$key': '$file_path' with '$schema_name'"
}
}
Expand All @@ -420,13 +422,13 @@ class SchemaValidator extends PluginExtensionPoint {
//
// Function to obtain the variable types of properties from a JSON Schema
//
Map variableTypes(String schema_filename, String baseDir) {
Map variableTypes(String schemaFilename, String baseDir) {
def Map variableTypes = [:]
def String type = ''

// Read the schema
def slurper = new JsonSlurper()
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schema_filename)) )
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schemaFilename)) )

// Obtain the type of each variable in the schema
def Map properties = (Map) parsed['items']['properties']
Expand Down Expand Up @@ -498,10 +500,12 @@ class SchemaValidator extends PluginExtensionPoint {
// Function to validate a file by its schema
//
/* groovylint-disable-next-line UnusedPrivateMethodParameter */
boolean validateFile(Boolean monochrome_logs, String paramName, Object fileContent, String schema_filename, String baseDir) {
boolean validateFile(
Boolean monochrome_logs, String paramName, Object fileContent, String schemaFilename, String baseDir
) {

// Load the schema
def String schema_string = Files.readString( Path.of(getSchemaPath(baseDir, schema_filename)) )
def String schema_string = Files.readString( Path.of(getSchemaPath(baseDir, schemaFilename)) )
final rawSchema = new JSONObject(new JSONTokener(schema_string))
final SchemaLoader schemaLoader = SchemaLoader.builder()
.schemaJson(rawSchema)
Expand All @@ -523,7 +527,7 @@ class SchemaValidator extends PluginExtensionPoint {
//=====================================================================//
// Check for params with expected values
def slurper = new JsonSlurper()
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schema_filename)) )
def Map parsed = (Map) slurper.parse( Path.of(getSchemaPath(baseDir, schemaFilename)) )
def Map schemaParams = (Map) ["items": parsed.get('items')]

// Collect expected parameters from the schema
Expand Down Expand Up @@ -648,16 +652,25 @@ class SchemaValidator extends PluginExtensionPoint {
// Beautify parameters for --help
//
@Function
String paramsHelp(String command, String schema_filename='nextflow_schema.json') {
String paramsHelp(
Map options = null,
String command
) {
def Map params = initialiseExpectedParams(session.params)
def String baseDir = session.baseDir
def Boolean monochrome_logs = params.monochrome_logs
def colors = logColours(monochrome_logs)

def String schemaFilename = options?.containsKey('parameters_schema') ? options.parameters_schema as String : 'nextflow_schema.json'
def Boolean useMonochromeLogs = options?.containsKey('monochrome_logs') ? options.monochrome_logs as Boolean :
params.monochrome_logs ? params.monochrome_logs as Boolean :
params.monochromeLogs ? params.monochromeLogs as Boolean :
false

def colors = logColours(useMonochromeLogs)
Integer num_hidden = 0
String output = ''
output += 'Typical pipeline command:\n\n'
output += " ${colors.cyan}${command}${colors.reset}\n\n"
Map params_map = paramsLoad( Path.of(getSchemaPath(baseDir, schema_filename)) )
Map params_map = paramsLoad( Path.of(getSchemaPath(baseDir, schemaFilename)) )
Integer max_chars = paramsMaxChars(params_map) + 1
Integer desc_indent = max_chars + 14
Integer dec_linewidth = 160 - desc_indent
Expand Down Expand Up @@ -741,7 +754,7 @@ class SchemaValidator extends PluginExtensionPoint {
// Groovy Map summarising parameters/workflow options used by the pipeline
//
@Function
public LinkedHashMap paramsSummaryMap(WorkflowMetadata workflow, String schema_filename='nextflow_schema.json') {
public LinkedHashMap paramsSummaryMap(WorkflowMetadata workflow, String schemaFilename='nextflow_schema.json') {

def String baseDir = session.baseDir
def Map params = session.params
Expand All @@ -768,7 +781,7 @@ class SchemaValidator extends PluginExtensionPoint {

// Get pipeline parameters defined in JSON Schema
def Map params_summary = [:]
def Map params_map = paramsLoad( Path.of(getSchemaPath(baseDir, schema_filename)) )
def Map params_map = paramsLoad( Path.of(getSchemaPath(baseDir, schemaFilename)) )
for (group in params_map.keySet()) {
def sub_params = new LinkedHashMap()
def Map group_params = params_map.get(group) as Map // This gets the parameters of that particular group
Expand Down Expand Up @@ -816,15 +829,23 @@ class SchemaValidator extends PluginExtensionPoint {
// Beautify parameters for summary and return as string
//
@Function
public String paramsSummaryLog(WorkflowMetadata workflow, String schema_filename='nextflow_schema.json') {
public String paramsSummaryLog(
Map options = null,
WorkflowMetadata workflow
) {

def String baseDir = session.baseDir
def Map params = session.params

def Boolean monochrome_logs = params.monochrome_logs
def colors = logColours(monochrome_logs)
def String schemaFilename = options?.containsKey('parameters_schema') ? options.parameters_schema as String : 'nextflow_schema.json'
def Boolean useMonochromeLogs = options?.containsKey('monochrome_logs') ? options.monochrome_logs as Boolean :
params.monochrome_logs ? params.monochrome_logs as Boolean :
params.monochromeLogs ? params.monochromeLogs as Boolean :
false

def colors = logColours(useMonochromeLogs)
String output = ''
def LinkedHashMap params_map = paramsSummaryMap(workflow, schema_filename)
def LinkedHashMap params_map = paramsSummaryMap(workflow, schemaFilename)
def max_chars = paramsMaxChars(params_map)
for (group in params_map.keySet()) {
def Map group_params = params_map.get(group) as Map // This gets the parameters of that particular group
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.monochrome_logs = true
include { validateParameters } from 'plugin/nf-validation'

validateParameters('src/testResources/nextflow_schema.json')
validateParameters('src/testResources/nextflow_schema.json', monochrome_logs: params.monochrome_logs)
"""

when:
Expand Down Expand Up @@ -226,7 +226,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.validationFailUnrecognisedParams = true
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand All @@ -251,7 +251,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.outdir = 10
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand Down Expand Up @@ -303,7 +303,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.max_time = '10.day'
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand Down Expand Up @@ -378,7 +378,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.max_cpus = 1.2
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand All @@ -404,7 +404,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.max_memory = '10'
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand Down Expand Up @@ -432,7 +432,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{

def command = "nextflow run <pipeline> --input samplesheet.csv --outdir <OUTDIR> -profile docker"

def help_msg = paramsHelp(command, '$schema')
def help_msg = paramsHelp(command, parameters_schema: '$schema')
log.info help_msg
"""

Expand Down Expand Up @@ -466,7 +466,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.validationShowHiddenParams = true
def command = "nextflow run <pipeline> --input samplesheet.csv --outdir <OUTDIR> -profile docker"

def help_msg = paramsHelp(command, '$schema')
def help_msg = paramsHelp(command, parameters_schema: '$schema')
log.info help_msg
"""

Expand All @@ -493,7 +493,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{

def command = "nextflow run <pipeline> --input samplesheet.csv --outdir <OUTDIR> -profile docker"

def help_msg = paramsHelp(command, '$schema')
def help_msg = paramsHelp(command, parameters_schema: '$schema')
log.info help_msg
"""

Expand Down Expand Up @@ -526,7 +526,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{

def command = "nextflow run <pipeline> --input samplesheet.csv --outdir <OUTDIR> -profile docker"

def help_msg = paramsHelp(command, '$schema')
def help_msg = paramsHelp(command, parameters_schema: '$schema')
log.info help_msg
"""

Expand Down Expand Up @@ -554,7 +554,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.outdir = "outDir"
include { paramsSummaryLog } from 'plugin/nf-validation'

def summary_params = paramsSummaryLog(workflow, '$schema')
def summary_params = paramsSummaryLog(workflow, parameters_schema: '$schema')
log.info summary_params
"""

Expand Down Expand Up @@ -616,7 +616,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.input = 'src/testResources/samplesheet_wrong_pattern.csv'
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand All @@ -640,7 +640,7 @@ class PluginExtensionMethodsTest extends Dsl2Spec{
params.input = 'src/testResources/samplesheet_no_required.csv'
include { validateParameters } from 'plugin/nf-validation'

validateParameters('$schema')
validateParameters('$schema', monochrome_logs: params.monochrome_logs)
"""

when:
Expand Down