Skip to content

fix(nfcore_build): update to nf-core/tools 4.1.0 and current nf-core/demo - #1008

Closed
FriederikeHanssen wants to merge 2 commits into
fix/nfcore-build-batch-paramfrom
fix/nfcore-build-tools-drift
Closed

FriederikeHanssen wants to merge 2 commits into
fix/nfcore-build-batch-paramfrom
fix/nfcore-build-tools-drift

Conversation

@FriederikeHanssen

Copy link
Copy Markdown
Collaborator

Summary

The Hello nf-core course's documented tool output no longer matched nf-core/tools 4.1.0 or the current nf-core/demo pipeline. This PR updates the docs and solutions to match, and bumps the devcontainer pin from nf-core==4.0.2 to 4.1.0 in the same change. Docs and environment have to move together: on 4.0.2 the old text was correct (for example, modules install still raises NotADirectoryError).

Stacked on #1007 (→ #1006 → #1005). Review only the 2 commits in this PR.

Changes

Location Change
.devcontainer/local-features/uv-tools/install.sh nf-core==4.0.2 → 4.1.0. Only nf-core is installed by this script, and it's also what the ghcr.io/nextflow-io/training image build uses. No CI job runs nf-core commands.
nfcore_build/00_orientation.md, nfcore_use/00_orientation.md Version text 4.0.2 → 4.1.0
01 §1 demo tree nf-core/demo 1.2.0 now ships modules/local/cowpy. Updated the tree and replaced "there are no local modules" with a short local vs nf-core modules explanation.
01 §2.1 create output 4.1.0 banner. Removed Generated container configs…, which 4.1.0 doesn't print without a modules/ directory.
01 §5.1/5.2 Template excerpt now shows samplesheetToList(input, …) at line 84 (fresh 4.1.0 template), plus a note on where input comes from.
01 §5.5 output Adds the two WARN: Unrecognized config option 'validation.*' lines a fresh-template run prints
02 §1.3-1.4 Install output matches 4.1.0 (prints the include statement, no NotADirectoryError). Removed the "ignore the error" paragraph. "Reinstalling modules…" prose no longer names a version. Dropped the cd core-hello that failed for learners who used the start-fresh box.
02 §2 excerpts Input line now shows the real path(files_in, stageAs: 'to_concatenate/*', arity: '1..*'), with one sentence explaining it
03 §2 modules create uses lowercase cowpy (4.1.0 warns on COWPY). Documents the new Bioconda prompt. Generated main.nf blocks match the 4.1.0 template: leading blank lines, one-line input:, corrected linenums/hl_lines. Removed the unused def args from the stub (nextflow lint: Variable was declared but not used).
Solutions part1-4 .nf-core.yml nf_core_version: 4.1.0. workflows/hello.nf uses def ch_versions = … / def ch_collated_versions = …, as in the docs and the 4.1.0 template. cowpy stub args removed in part3/4.

Testing

Run with nf-core/tools 4.1.0, Nextflow 26.04.4, the v2 parser and Docker. An independent second pass re-reproduced each claim.

  • Every changed output block comes from a real run. Banner, pipelines create, modules install, modules create (prompts driven through a pty) and the §5.5 run all checked.
  • Applying the 03 §2.2-2.3 Before/After blocks in order to the freshly generated main.nf reproduces solutions/core-hello-part3/modules/local/cowpy/main.nf
  • Solutions part1-4 run with -profile test,docker and print Pipeline completed successfully. nextflow lint shows no errors.
  • Checked the bump with 4.0.2 vs 4.1.0 side by side: no other course runs nf-core commands. nf-schema stays at 2.5.1 and nextflowVersion is unchanged.
  • check_headings, /check-highlights and pre-commit pass

Not in this PR

  • docs/en/docs/nfcore_build/img/nf-core_demo_code_organization.svg doesn't show the new local/cowpy module and needs a manual diagram update.
  • Translations (11 languages) still say 4.0.2 and need regenerating after this series lands.
  • A Part 1 pipeline created with 4.1.0 differs slightly from solutions/core-hello-part1, which was made with 4.0.2 (extra cli_typecast input to UTILS_NFSCHEMA_PLUGIN, process_low_memory label). The lesson code doesn't depend on either.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown
Contributor

Nextflow linting complete!

❌ 1 files had 5 errors
⚠️ 19 files had 31 warnings
✅ 183 files had no errors
🔧 130 files would be changed by auto-formatting

💡 Tip: Click filename locations to go directly to that code.

View all 36 issues
Type Location Message
Error hello-nextflow/solutions/6-hello-config/hello-config.nf:44:16 sayHello is not defined
Error hello-nextflow/solutions/6-hello-config/hello-config.nf:47:16 convertToUpper is not defined
Error hello-nextflow/solutions/6-hello-config/hello-config.nf:50:16 collectGreetings is not defined
Error hello-nextflow/solutions/6-hello-config/hello-config.nf:53:16 collectGreetings is not defined
Error hello-nextflow/solutions/6-hello-config/hello-config.nf:56:16 cowpy is not defined
Warning nfcore-build/solutions/core-hello-part1/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:30:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part1/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:33:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part1/workflows/hello.nf:61:9 Variable was declared but not used
Warning nfcore-build/solutions/core-hello-part2/modules/nf-core/find/concatenate/main.nf:19:5 The when section is deprecated -- use conditional logic in the calling workflow, or the process.when config option to disable a process at runtime
Warning nfcore-build/solutions/core-hello-part2/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:30:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part2/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:33:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part2/workflows/hello.nf:45:55 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part2/workflows/hello.nf:70:9 Variable was declared but not used
Warning nfcore-build/solutions/core-hello-part3/modules/local/cowpy/main.nf:17:5 The when section is deprecated -- use conditional logic in the calling workflow, or the process.when config option to disable a process at runtime
Warning nfcore-build/solutions/core-hello-part3/modules/nf-core/find/concatenate/main.nf:19:5 The when section is deprecated -- use conditional logic in the calling workflow, or the process.when config option to disable a process at runtime
Warning nfcore-build/solutions/core-hello-part3/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:30:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part3/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:33:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part3/workflows/hello.nf:67:9 Variable was declared but not used
Warning nfcore-build/solutions/core-hello-part4/modules/local/cowpy/main.nf:17:5 The when section is deprecated -- use conditional logic in the calling workflow, or the process.when config option to disable a process at runtime
Warning nfcore-build/solutions/core-hello-part4/modules/nf-core/find/concatenate/main.nf:19:5 The when section is deprecated -- use conditional logic in the calling workflow, or the process.when config option to disable a process at runtime
Warning nfcore-build/solutions/core-hello-part4/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:30:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part4/subworkflows/local/utils_nfcore_hello_pipeline/main.nf:33:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-part4/workflows/hello.nf:67:9 Variable was declared but not used
Warning nfcore-build/solutions/core-hello-start/workflows/hello.nf:18:5 Parameter was not used -- prefix with _ to suppress warning
Warning nfcore-build/solutions/core-hello-start/workflows/hello.nf:45:9 Variable was declared but not used
Warning side-quests/solutions/debugging/buggy_workflow.nf:91:44 Implicit closure parameter is deprecated, declare an explicit parameter instead
Warning side-quests/solutions/essential_scripting_patterns/main.nf:59:25 Parameter was not used -- prefix with _ to suppress warning
Warning side-quests/solutions/essential_scripting_patterns/main.nf:63:53 Parameter was not used -- prefix with _ to suppress warning
Warning side-quests/solutions/essential_scripting_patterns/main.nf:68:5 Variable was declared but not used
Warning side-quests/solutions/essential_scripting_patterns/main.nf:69:5 Variable was declared but not used
Warning side-quests/solutions/metadata/1.2/main.nf:5:5 Variable was declared but not used
Warning side-quests/solutions/splitting_and_grouping/main.nf:11:25 Parameter was not used -- prefix with _ to suppress warning
Warning side-quests/solutions/splitting_and_grouping/main.nf:14:25 Parameter was not used -- prefix with _ to suppress warning
Warning side-quests/solutions/splitting_and_grouping/main.nf:29:5 Variable was declared but not used
Warning side-quests/solutions/working_with_files/6/main.nf:10:43 Variable was declared but not used
Warning side-quests/solutions/working_with_files/6/main.nf:30:22 Parameter was not used -- prefix with _ to suppress warning
View formatting changes
FileDiff
hello-nextflow/solutions/1-hello-world/hello-world-2.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     output:
     path 'output.txt'
 
hello-nextflow/solutions/1-hello-world/hello-world-3.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
hello-nextflow/solutions/2-hello-channels/hello-channels-1.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -29,7 +28,7 @@ workflow {
     main:
     // create a channel for inputs
     greeting_ch = channel.of('Hello Channels!')
-                        .view()
+        .view()
     // emit a greeting
... (truncated)
hello-nextflow/solutions/2-hello-channels/hello-channels-2.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -29,7 +28,7 @@ workflow {
     main:
     // create a channel for inputs
     greeting_ch = channel.of('Hello', 'Bonjour', 'Hola')
-                        .view()
+        .view()
     // emit a greeting
... (truncated)
hello-nextflow/solutions/2-hello-channels/hello-channels-3.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -28,12 +27,12 @@ workflow {
 
     main:
     // declare an array of input greetings
-    greetings_array = ['Hello','Bonjour','Hola']
+    greetings_array = ['Hello', 'Bonjour', 'Hola']
     // create a channel for inputs
... (truncated)
hello-nextflow/solutions/2-hello-channels/hello-channels-4.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -29,11 +28,11 @@ workflow {
     main:
     // create a channel for inputs from a CSV file
     greeting_ch = channel.fromPath(params.input)
-                        .view { csv -> "Before splitCsv: $csv" }
-                        .splitCsv()
-                        .view { csv -> "After splitCsv: $csv" }
... (truncated)
hello-nextflow/solutions/3-hello-workflow/hello-workflow-1.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -21,7 +20,6 @@ process sayHello {
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
... (truncated)
hello-nextflow/solutions/3-hello-workflow/hello-workflow-2.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -21,7 +20,6 @@ process sayHello {
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
... (truncated)
hello-nextflow/solutions/3-hello-workflow/hello-workflow-3.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -21,7 +20,6 @@ process sayHello {
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
... (truncated)
hello-nextflow/solutions/3-hello-workflow/hello-workflow-4.nf
View
@@ -4,7 +4,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
@@ -21,7 +20,6 @@ process sayHello {
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
... (truncated)
hello-nextflow/solutions/4-hello-modules/hello-modules-2.nf
View
@@ -7,7 +7,6 @@ include { sayHello } from './modules/sayHello.nf'
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
 
@@ -24,7 +23,6 @@ process convertToUpper {
  * Collect uppercase greetings into a single output file
  */
 process collectGreetings {
-
     input:
     path input_files
... (truncated)
hello-nextflow/solutions/4-hello-modules/hello-modules-3.nf
View
@@ -8,7 +8,6 @@ include { convertToUpper } from './modules/convertToUpper.nf'
  * Collect uppercase greetings into a single output file
  */
 process collectGreetings {
-
     input:
     path input_files
     val batch_name
@@ -38,8 +37,8 @@ workflow {
     main:
     // create a channel for inputs from a CSV file
     greeting_ch = channel.fromPath(params.input)
-                        .splitCsv()
-                        .map { line -> line[0] }
+        .splitCsv()
... (truncated)
hello-nextflow/solutions/4-hello-modules/hello-modules-4.nf
View
@@ -18,8 +18,8 @@ workflow {
     main:
     // create a channel for inputs from a CSV file
     greeting_ch = channel.fromPath(params.input)
-                        .splitCsv()
-                        .map { line -> line[0] }
+        .splitCsv()
+        .map { line -> line[0] }
     // emit a greeting
     sayHello(greeting_ch)
     // convert the greeting to uppercase
hello-nextflow/solutions/4-hello-modules/modules/collectGreetings.nf
View
@@ -2,7 +2,6 @@
  * Collect uppercase greetings into a single output file
  */
 process collectGreetings {
-
     input:
     path input_files
     val batch_name
hello-nextflow/solutions/4-hello-modules/modules/convertToUpper.nf
View
@@ -2,7 +2,6 @@
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
 
hello-nextflow/solutions/4-hello-modules/modules/sayHello.nf
View
@@ -2,7 +2,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
hello-nextflow/solutions/5-hello-containers/hello-containers-2.nf
View
@@ -20,8 +20,8 @@ workflow {
     main:
     // create a channel for inputs from a CSV file
     greeting_ch = channel.fromPath(params.input)
-                        .splitCsv()
-                        .map { line -> line[0] }
+        .splitCsv()
+        .map { line -> line[0] }
     // emit a greeting
     sayHello(greeting_ch)
     // convert the greeting to uppercase
hello-nextflow/solutions/5-hello-containers/modules/collectGreetings.nf
View
@@ -2,7 +2,6 @@
  * Collect uppercase greetings into a single output file
  */
 process collectGreetings {
-
     input:
     path input_files
     val batch_name
hello-nextflow/solutions/5-hello-containers/modules/convertToUpper.nf
View
@@ -2,7 +2,6 @@
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
 
hello-nextflow/solutions/5-hello-containers/modules/sayHello.nf
View
@@ -2,7 +2,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
hello-nextflow/solutions/6-hello-config/modules/collectGreetings.nf
View
@@ -2,7 +2,6 @@
  * Collect uppercase greetings into a single output file
  */
 process collectGreetings {
-
     input:
     path input_files
     val batch_name
hello-nextflow/solutions/6-hello-config/modules/convertToUpper.nf
View
@@ -2,7 +2,6 @@
  * Use a text replacement tool to convert the greeting to uppercase
  */
 process convertToUpper {
-
     input:
     path input_file
 
hello-nextflow/solutions/6-hello-config/modules/sayHello.nf
View
@@ -2,7 +2,6 @@
  * Use echo to print 'Hello World!' to a file
  */
 process sayHello {
-
     input:
     val greeting
 
hello-nextflow/solutions/6-hello-config/nextflow.config
View
@@ -2,19 +2,19 @@ docker.enabled = false
 conda.enabled = true
 
 /*
-* Process settings
-*/
+ * Process settings
+ */
 process {
     memory = 1.GB
-    withName: 'cowpy' {
+    withName: cowpy {
         memory = 2.GB
         cpus = 2
     }
... (truncated)
nfcore-build/solutions/composable-hello/hello.nf
View
@@ -14,7 +14,6 @@ include { collectGreetings } from './modules/collectGreetings.nf'
 include { cowpy } from './modules/cowpy.nf'
 
 workflow HELLO {
-
     take:
     // channel of greetings
     greeting_ch
nfcore-build/solutions/composable-hello/main.nf
View
@@ -9,12 +9,12 @@ params.greeting = 'greetings.csv'
 workflow {
     // create a channel for inputs from a CSV file
     greeting_ch = channel.fromPath(params.greeting)
-                        .splitCsv()
-                        .map { line -> line[0] }
+        .splitCsv()
+        .map { line -> line[0] }
 
     // call the imported workflow on the channel of greetings
     HELLO(greeting_ch)
 
     // view the outputs emitted by the workflow
-    HELLO.out.view { output -> "Output: $output" }
+    HELLO.out.view { output -> "Output: ${output}" }
... (truncated)
nfcore-build/solutions/composable-hello/modules/collectGreetings.nf
View
@@ -10,8 +10,8 @@ process collectGreetings {
     val batch_name
 
     output:
-    path "COLLECTED-${batch_name}-output.txt" , emit: outfile
-    val count_greetings , emit: count
+    path "COLLECTED-${batch_name}-output.txt", emit: outfile
+    val count_greetings, emit: count
 
     script:
     count_greetings = input_files.size()
nfcore-build/solutions/composable-hello/modules/convertToUpper.nf
View
@@ -13,6 +13,6 @@ process convertToUpper {
 
     script:
     """
-    cat $input_file | tr '[a-z]' '[A-Z]' > UPPER-${input_file}
+    cat ${input_file} | tr '[a-z]' '[A-Z]' > UPPER-${input_file}
     """
 }
nfcore-build/solutions/composable-hello/modules/cowpy.nf
View
@@ -15,6 +15,6 @@ process cowpy {
 
     script:
     """
-    cat $input_file | cowpy -c "$character" > cowpy-${input_file}
+    cat ${input_file} | cowpy -c "${character}" > cowpy-${input_file}
     """
 }
nfcore-build/solutions/composable-hello/modules/sayHello.nf
View
@@ -13,6 +13,6 @@ process sayHello {
 
     script:
     """
-    echo '$greeting' > '$greeting-output.txt'
+    echo '${greeting}' > '${greeting}-output.txt'
     """
 }
nfcore-build/solutions/core-hello-part1/conf/base.config
View
@@ -1,23 +1,23 @@
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    core/hello Nextflow base config file
+core/hello Nextflow base config file
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    A 'blank slate' config file, appropriate for general use on most high performance
-    compute environments. Assumes that all software is installed and available on
-    the PATH. Runs in `local` mode - all jobs will be run on the logged in environment.
+A 'blank slate' config file, appropriate for general use on most high performance
+compute environments. Assumes that all software is installed and available on
+the PATH. Runs in `local` mode - all jobs will be run on the logged in environment.
 ----------------------------------------------------------------------------------------
-*/
+ */
... (truncated)
nfcore-build/solutions/core-hello-part1/conf/modules.config
View
@@ -1,21 +1,16 @@
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Config file for defining DSL2 per module options and publishing paths
+Config file for defining DSL2 per module options and publishing paths
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Available keys to override module options:
-        ext.args   = Additional arguments appended to command in module.
-        ext.args2  = Second set of arguments appended to command in module (multi-tool modules).
-        ext.args3  = Third set of arguments appended to command in module (multi-tool modules).
-        ext.prefix = File name prefix for output files.
+Available keys to override module options:
+ext.args   = Additional arguments appended to command in module.
+ext.args2  = Second set of arguments appended to command in module (multi-tool modules).
+ext.args3  = Third set of arguments appended to command in module (multi-tool modules).
... (truncated)
nfcore-build/solutions/core-hello-part1/conf/test.config
View
@@ -1,31 +1,27 @@
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Nextflow config file for running minimal tests
+Nextflow config file for running minimal tests
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Defines input files and everything required to run a fast and simple pipeline test.
+Defines input files and everything required to run a fast and simple pipeline test.
 
-    Use as follows:
-        nextflow run core/hello -profile test,<docker/singularity> --outdir <OUTDIR>
+Use as follows:
+nextflow run core/hello -profile test,<docker/singularity> --outdir <OUTDIR>
 
 ----------------------------------------------------------------------------------------
... (truncated)
nfcore-build/solutions/core-hello-part1/conf/test_full.config
View
@@ -1,17 +1,17 @@
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Nextflow config file for running full-size tests
+Nextflow config file for running full-size tests
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Defines input files and everything required to run a full size pipeline test.
+Defines input files and everything required to run a full size pipeline test.
 
-    Use as follows:
-        nextflow run core/hello -profile test_full,<docker/singularity> --outdir <OUTDIR>
+Use as follows:
+nextflow run core/hello -profile test_full,<docker/singularity> --outdir <OUTDIR>
 
 ----------------------------------------------------------------------------------------
... (truncated)
nfcore-build/solutions/core-hello-part1/main.nf
View
@@ -1,32 +1,31 @@
 #!/usr/bin/env nextflow
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    core/hello
+core/hello
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Github : https://github.com/core/hello
+Github : https://github.com/core/hello
 ----------------------------------------------------------------------------------------
-*/
+ */
 
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
... (truncated)
nfcore-build/solutions/core-hello-part1/modules/local/collectGreetings.nf
View
@@ -10,8 +10,8 @@ process collectGreetings {
     val batch_name
 
     output:
-    path "COLLECTED-${batch_name}-output.txt" , emit: outfile
-    val count_greetings , emit: count
+    path "COLLECTED-${batch_name}-output.txt", emit: outfile
+    val count_greetings, emit: count
 
     script:
     count_greetings = input_files.size()
nfcore-build/solutions/core-hello-part1/modules/local/convertToUpper.nf
View
@@ -13,6 +13,6 @@ process convertToUpper {
 
     script:
     """
-    cat $input_file | tr '[a-z]' '[A-Z]' > UPPER-${input_file}
+    cat ${input_file} | tr '[a-z]' '[A-Z]' > UPPER-${input_file}
     """
 }
nfcore-build/solutions/core-hello-part1/modules/local/cowpy.nf
View
@@ -7,14 +7,14 @@ process cowpy {
     conda 'conda-forge::cowpy==1.1.5'
 
     input:
-        path input_file
-        val character
+    path input_file
+    val character
 
     output:
-        path "cowpy-${input_file}"
+    path "cowpy-${input_file}"
 
     script:
     """
... (truncated)
nfcore-build/solutions/core-hello-part1/modules/local/sayHello.nf
View
@@ -13,6 +13,6 @@ process sayHello {
 
     script:
     """
-    echo '$greeting' > '$greeting-output.txt'
+    echo '${greeting}' > '${greeting}-output.txt'
     """
 }
nfcore-build/solutions/core-hello-part1/nextflow.config
View
@@ -1,40 +1,40 @@
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    core/hello Nextflow config file
+core/hello Nextflow config file
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    Default config options for all compute environments
+Default config options for all compute environments
 ----------------------------------------------------------------------------------------
-*/
+ */
 
 // Global default params, used in configs
 params {
 
... (truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/local/utils_nfcore_hello_pipeline/main.nf
View
@@ -4,36 +4,35 @@
 
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS
+IMPORT FUNCTIONS / MODULES / SUBWORKFLOWS
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-*/
+ */
 
-include { UTILS_NFSCHEMA_PLUGIN     } from '../../nf-core/utils_nfschema_plugin'
-include { paramsSummaryMap          } from 'plugin/nf-schema'
-include { samplesheetToList         } from 'plugin/nf-schema'
-include { paramsHelp                } from 'plugin/nf-schema'
-include { completionSummary         } from '../../nf-core/utils_nfcore_pipeline'
... (truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/nf-core/utils_nextflow_pipeline/main.nf
View
@@ -4,15 +4,15 @@
 
 /*
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    SUBWORKFLOW DEFINITION
+SUBWORKFLOW DEFINITION
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-*/
+ */
 
 workflow UTILS_NEXTFLOW_PIPELINE {
     take:
-    print_version        // boolean: print version
-    dump_parameters      // boolean: dump parameters
-    outdir               //    path: base directory used to publish pipeline results
... (truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config
View
@@ -1,9 +1,9 @@
 manifest {
-    name            = 'nextflow_workflow'
-    author          = """nf-core"""
-    homePage        = 'https://127.0.0.1'
-    description     = """Dummy pipeline"""
+    name = 'nextflow_workflow'
+    author = """nf-core"""
+    homePage = 'https://127.0.0.1'
+    description = """Dummy pipeline"""
     nextflowVersion = '!>=23.04.0'
-    version         = '9.9.9'
-    doi             = 'https://doi.org/10.5281/zenodo.5070524'
+    version = '9.9.9'
+    doi = 'https://doi.org/10.5281/zenodo.5070524'
... (truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/nf-core/utils_nfcore_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part1/subworkflows/nf-core/utils_nfschema_plugin/main.nf(truncated)
nfcore-build/solutions/core-hello-part1/workflows/hello.nf(truncated)
nfcore-build/solutions/core-hello-part2/conf/base.config(truncated)
nfcore-build/solutions/core-hello-part2/conf/modules.config(truncated)
nfcore-build/solutions/core-hello-part2/conf/test.config(truncated)
nfcore-build/solutions/core-hello-part2/conf/test_full.config(truncated)
nfcore-build/solutions/core-hello-part2/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/modules/local/collectGreetings.nf(truncated)
nfcore-build/solutions/core-hello-part2/modules/local/convertToUpper.nf(truncated)
nfcore-build/solutions/core-hello-part2/modules/local/cowpy.nf(truncated)
nfcore-build/solutions/core-hello-part2/modules/local/sayHello.nf(truncated)
nfcore-build/solutions/core-hello-part2/modules/nf-core/find/concatenate/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/local/utils_nfcore_hello_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/nf-core/utils_nextflow_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/nf-core/utils_nfcore_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part2/subworkflows/nf-core/utils_nfschema_plugin/main.nf(truncated)
nfcore-build/solutions/core-hello-part2/workflows/hello.nf(truncated)
nfcore-build/solutions/core-hello-part3/conf/base.config(truncated)
nfcore-build/solutions/core-hello-part3/conf/modules.config(truncated)
nfcore-build/solutions/core-hello-part3/conf/test.config(truncated)
nfcore-build/solutions/core-hello-part3/conf/test_full.config(truncated)
nfcore-build/solutions/core-hello-part3/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/local/collectGreetings.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/local/convertToUpper.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/local/cowpy.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/local/cowpy/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/local/sayHello.nf(truncated)
nfcore-build/solutions/core-hello-part3/modules/nf-core/find/concatenate/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/local/utils_nfcore_hello_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/nf-core/utils_nextflow_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/nf-core/utils_nfcore_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part3/subworkflows/nf-core/utils_nfschema_plugin/main.nf(truncated)
nfcore-build/solutions/core-hello-part3/workflows/hello.nf(truncated)
nfcore-build/solutions/core-hello-part4/conf/base.config(truncated)
nfcore-build/solutions/core-hello-part4/conf/modules.config(truncated)
nfcore-build/solutions/core-hello-part4/conf/test.config(truncated)
nfcore-build/solutions/core-hello-part4/conf/test_full.config(truncated)
nfcore-build/solutions/core-hello-part4/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/local/collectGreetings.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/local/convertToUpper.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/local/cowpy.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/local/cowpy/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/local/sayHello.nf(truncated)
nfcore-build/solutions/core-hello-part4/modules/nf-core/find/concatenate/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/local/utils_nfcore_hello_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/nf-core/utils_nextflow_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/nf-core/utils_nfcore_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-part4/subworkflows/nf-core/utils_nfschema_plugin/main.nf(truncated)
nfcore-build/solutions/core-hello-part4/workflows/hello.nf(truncated)
nfcore-build/solutions/core-hello-start/conf/base.config(truncated)
nfcore-build/solutions/core-hello-start/conf/modules.config(truncated)
nfcore-build/solutions/core-hello-start/conf/test.config(truncated)
nfcore-build/solutions/core-hello-start/conf/test_full.config(truncated)
nfcore-build/solutions/core-hello-start/main.nf(truncated)
nfcore-build/solutions/core-hello-start/nextflow.config(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/local/utils_nfcore_hello_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/nf-core/utils_nextflow_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/nf-core/utils_nextflow_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/nf-core/utils_nfcore_pipeline/main.nf(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/nf-core/utils_nfcore_pipeline/tests/nextflow.config(truncated)
nfcore-build/solutions/core-hello-start/subworkflows/nf-core/utils_nfschema_plugin/main.nf(truncated)
nfcore-build/solutions/core-hello-start/workflows/hello.nf(truncated)
side-quests/solutions/debugging/buggy_workflow.nf(truncated)
side-quests/solutions/essential_scripting_patterns/main.nf(truncated)
side-quests/solutions/essential_scripting_patterns/modules/generate_report.nf(truncated)
side-quests/solutions/metadata/1.2/main.nf(truncated)
side-quests/solutions/metadata/1.3/main.nf(truncated)
side-quests/solutions/metadata/1.4/main.nf(truncated)
side-quests/solutions/metadata/1.5/main.nf(truncated)
side-quests/solutions/metadata/2.1/main.nf(truncated)
side-quests/solutions/metadata/2.2/main.nf(truncated)
side-quests/solutions/metadata/2.3/main.nf(truncated)
side-quests/solutions/metadata/2.4/main.nf(truncated)
side-quests/solutions/metadata/3.2/main.nf(truncated)
side-quests/solutions/workflows_of_workflows/main.nf(truncated)
side-quests/solutions/working_with_files/6/main.nf(truncated)

FriederikeHanssen and others added 2 commits October 13, 2026 15:21
…and nf-core/demo

- 01: show demo's local cowpy module, drop container-config log line,
  update samplesheetToList excerpt and linenums, add validation WARN lines
  to the test-profile run output
- 02: update modules install output, remove NotADirectoryError note,
  make install step work from either starting point, show real
  find/concatenate input declaration
- 03: use lowercase tool name for modules create, document Bioconda prompt,
  show real generated main.nf, drop unused args from stub
- solutions: use def for ch_versions/ch_collated_versions as in the
  template; drop unused args from cowpy stub

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Pin nf-core==4.1.0 in the devcontainer, update the English nfcore_build
and nfcore_use orientation pages and the schema-build banner in
04_input_validation, and set nf_core_version: 4.1.0 in the
core-hello-part1..4 solution .nf-core.yml files.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@FriederikeHanssen
FriederikeHanssen force-pushed the fix/nfcore-build-batch-param branch from 8fd4864 to bc21722 Compare October 13, 2026 13:21
@FriederikeHanssen
FriederikeHanssen force-pushed the fix/nfcore-build-tools-drift branch from 4dae36d to 3eab420 Compare October 13, 2026 13:21
@pinin4fjords

Copy link
Copy Markdown
Collaborator

Superseded by #1012. Carried over: the demo local/cowpy tree, the samplesheetToList(input, ...) excerpt, def ch_collated_versions, the lowercase modules create cowpy and Bioconda prompt, the generated main.nf, the stageAs/arity signature, and the cd core-hello fix. These turned out to apply to 4.0.2 too. Not carried over: the bump to nf-core/tools 4.1.0 and the 4.1.0-only output, because the training runs on the 4.0.2 image.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants