diff --git a/.github/workflows/create-test-lint-wf-template.yml b/.github/workflows/create-test-lint-wf-template.yml
index f219f9e944..dbe143fda6 100644
--- a/.github/workflows/create-test-lint-wf-template.yml
+++ b/.github/workflows/create-test-lint-wf-template.yml
@@ -44,6 +44,7 @@ jobs:
- "template_skip_code_linters.yml"
- "template_skip_citations.yml"
- "template_skip_gitpod.yml"
+ - "template_skip_codespaces.yml"
- "template_skip_multiqc.yml"
- "template_skip_changelog.yml"
runner:
@@ -127,6 +128,10 @@ jobs:
run: |
printf "org: my-prefix\nskip: changelog" > create-test-lint-wf/template_skip_changelog.yml
+ - name: Create template skip codespaces
+ run: |
+ printf "org: my-prefix\nskip: codespaces" > create-test-lint-wf/template_skip_codespaces.yml
+
# Create a pipeline from the template
- name: create a pipeline from the template ${{ matrix.TEMPLATE }}
run: |
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 97c52628b0..609c3aea06 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,7 @@
- add option to exclude code linters for custom pipeline template ([#3084](https://github.com/nf-core/tools/pull/3084))
- add option to exclude citations for custom pipeline template ([#3101](https://github.com/nf-core/tools/pull/3101))
- add option to exclude gitpod for custom pipeline template ([#3100](https://github.com/nf-core/tools/pull/3100))
+- add option to exclude codespaces from pipeline template ([#3105](https://github.com/nf-core/tools/pull/3105))
- add option to exclude multiqc from pipeline template ([#3103](https://github.com/nf-core/tools/pull/3103))
- add option to exclude changelog from custom pipeline template ([#3104](https://github.com/nf-core/tools/pull/3104))
diff --git a/nf_core/pipeline-template/.github/CONTRIBUTING.md b/nf_core/pipeline-template/.github/CONTRIBUTING.md
index 2d6ecc174a..5a58501bb2 100644
--- a/nf_core/pipeline-template/.github/CONTRIBUTING.md
+++ b/nf_core/pipeline-template/.github/CONTRIBUTING.md
@@ -118,6 +118,7 @@ If you are using a new feature from core Nextflow, you may bump the minimum requ
### Images and figures
For overview images and other documents we follow the nf-core [style guidelines and examples](https://nf-co.re/developers/design_guidelines).
+{%- if codespaces %}
## GitHub Codespaces
@@ -133,3 +134,4 @@ To get started:
Devcontainer specs:
- [DevContainer config](.devcontainer/devcontainer.json)
+ {% endif %}
diff --git a/nf_core/pipelines/create/create.py b/nf_core/pipelines/create/create.py
index 5c823d59ab..b04b28c473 100644
--- a/nf_core/pipelines/create/create.py
+++ b/nf_core/pipelines/create/create.py
@@ -103,6 +103,7 @@ def __init__(
],
"citations": ["assets/methods_description_template.yml"],
"gitpod": [".gitpod.yml"],
+ "codespaces": [".devcontainer/devcontainer.json"],
"multiqc": [
"assets/multiqc_config.yml",
"assets/methods_description_template.yml",
@@ -220,6 +221,7 @@ def obtain_jinja_params_dict(self, features_to_skip, pipeline_dir):
"code_linters": {"file": True, "content": True},
"citations": {"file": True, "content": True},
"gitpod": {"file": True, "content": True},
+ "codespaces": {"file": True, "content": True},
"multiqc": {"file": True, "content": True},
"changelog": {"file": True, "content": False},
}
@@ -520,6 +522,10 @@ def fix_linting(self):
if not self.jinja_params["github_badges"] or not self.jinja_params["github"]:
lint_config["readme"] = ["nextflow_badge"]
+ # Add codespaces specific configurations
+ if not self.jinja_params["codespaces"]:
+ lint_config["files_unchanged"].extend([".github/CONTRIBUTING.md"])
+
# Add multiqc specific configurations
if not self.jinja_params["multiqc"]:
lint_config.setdefault("files_unchanged", []).extend(
diff --git a/nf_core/pipelines/create/custompipeline.py b/nf_core/pipelines/create/custompipeline.py
index 3c3eea3c25..96b6df5062 100644
--- a/nf_core/pipelines/create/custompipeline.py
+++ b/nf_core/pipelines/create/custompipeline.py
@@ -65,6 +65,13 @@
This is useful to have all the tools ready for pipeline development.
"""
+markdown_codespaces = """
+The pipeline will include a devcontainer configuration.
+The devcontainer will create a GitHub Codespaces for Nextflow development with nf-core/tools and Nextflow installed.
+
+Github Codespaces (https://github.com/features/codespaces) is an online developer environment that runs in your browser, complete with VSCode and a terminal.
+"""
+
markdown_changelog = """
Having a `CHANGELOG.md` file in the pipeline root directory is useful to track the changes added to each version.
You can read more information on the recommended format here: https://keepachangelog.com/en/1.0.0/
@@ -127,6 +134,12 @@ def compose(self) -> ComposeResult:
"Include the configuration required to use Gitpod.",
"gitpod",
),
+ PipelineFeature(
+ markdown_codespaces,
+ "Include GitHub Codespaces",
+ "The pipeline will include a devcontainer configuration for GitHub Codespaces, providing a development environment with nf-core/tools and Nextflow installed.",
+ "codespaces",
+ ),
PipelineFeature(
markdown_multiqc,
"Use multiqc",
diff --git a/tests/__snapshots__/test_create_app.ambr b/tests/__snapshots__/test_create_app.ambr
index 231c038c66..f2c1c45c45 100644
--- a/tests/__snapshots__/test_create_app.ambr
+++ b/tests/__snapshots__/test_create_app.ambr
@@ -851,257 +851,257 @@
font-weight: 700;
}
- .terminal-1308777655-matrix {
+ .terminal-463758155-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-1308777655-title {
+ .terminal-463758155-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-1308777655-r1 { fill: #c5c8c6 }
- .terminal-1308777655-r2 { fill: #e3e3e3 }
- .terminal-1308777655-r3 { fill: #989898 }
- .terminal-1308777655-r4 { fill: #e1e1e1 }
- .terminal-1308777655-r5 { fill: #4ebf71;font-weight: bold }
- .terminal-1308777655-r6 { fill: #1e1e1e }
- .terminal-1308777655-r7 { fill: #0178d4 }
- .terminal-1308777655-r8 { fill: #454a50 }
- .terminal-1308777655-r9 { fill: #e2e2e2 }
- .terminal-1308777655-r10 { fill: #808080 }
- .terminal-1308777655-r11 { fill: #e2e3e3;font-weight: bold }
- .terminal-1308777655-r12 { fill: #000000 }
- .terminal-1308777655-r13 { fill: #e4e4e4 }
- .terminal-1308777655-r14 { fill: #14191f }
- .terminal-1308777655-r15 { fill: #507bb3 }
- .terminal-1308777655-r16 { fill: #dde6ed;font-weight: bold }
- .terminal-1308777655-r17 { fill: #001541 }
- .terminal-1308777655-r18 { fill: #7ae998 }
- .terminal-1308777655-r19 { fill: #0a180e;font-weight: bold }
- .terminal-1308777655-r20 { fill: #008139 }
- .terminal-1308777655-r21 { fill: #fea62b;font-weight: bold }
- .terminal-1308777655-r22 { fill: #a7a9ab }
- .terminal-1308777655-r23 { fill: #e2e3e3 }
+ .terminal-463758155-r1 { fill: #c5c8c6 }
+ .terminal-463758155-r2 { fill: #e3e3e3 }
+ .terminal-463758155-r3 { fill: #989898 }
+ .terminal-463758155-r4 { fill: #e1e1e1 }
+ .terminal-463758155-r5 { fill: #4ebf71;font-weight: bold }
+ .terminal-463758155-r6 { fill: #1e1e1e }
+ .terminal-463758155-r7 { fill: #0178d4 }
+ .terminal-463758155-r8 { fill: #454a50 }
+ .terminal-463758155-r9 { fill: #e2e2e2 }
+ .terminal-463758155-r10 { fill: #808080 }
+ .terminal-463758155-r11 { fill: #e2e3e3;font-weight: bold }
+ .terminal-463758155-r12 { fill: #000000 }
+ .terminal-463758155-r13 { fill: #e4e4e4 }
+ .terminal-463758155-r14 { fill: #14191f }
+ .terminal-463758155-r15 { fill: #507bb3 }
+ .terminal-463758155-r16 { fill: #dde6ed;font-weight: bold }
+ .terminal-463758155-r17 { fill: #001541 }
+ .terminal-463758155-r18 { fill: #7ae998 }
+ .terminal-463758155-r19 { fill: #0a180e;font-weight: bold }
+ .terminal-463758155-r20 { fill: #008139 }
+ .terminal-463758155-r21 { fill: #fea62b;font-weight: bold }
+ .terminal-463758155-r22 { fill: #a7a9ab }
+ .terminal-463758155-r23 { fill: #e2e3e3 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- nf-core create
+ nf-core create
-
-
-
- ⭘nf-core create — Create a new pipeline with the nf-core pipeline template
-
-
- Template features
-
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Use reference The pipeline will Hide help
- ▊▁▁▁▁▁▁▁▁▎ genomesbe configured to ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- use a copy of the
- most common
- reference genome
- files from
- iGenomes
-
-
- Nf-core pipelines are configured to use a copy of the most common
- reference genome files.
-
- By selecting this option, your pipeline will include a configuration
- file specifying the paths to these files.
-
- The required code to use these files will also be included in the
- template. When the pipeline user provides an appropriate genome key,
- the pipeline will automatically download the required reference ▂▂
- files.
-
-
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Add Github CI The pipeline will Show help
- ▊▁▁▁▁▁▁▁▁▎ testsinclude several ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- GitHub actions for
- Continuous
- Integration (CI)
- testing
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Add Github badgesThe README.md file Show help
- ▊▁▁▁▁▁▁▁▁▎of the pipeline ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- will include
- GitHub badges
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Back Continue
- ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
- d Toggle dark mode q Quit
+
+
+
+ ⭘nf-core create — Create a new pipeline with the nf-core pipeline template
+
+
+ Template features
+
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Use reference The pipeline will Hide help
+ ▊▁▁▁▁▁▁▁▁▎ genomesbe configured to ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ use a copy of the
+ most common
+ reference genome
+ files from
+ iGenomes
+
+
+ Nf-core pipelines are configured to use a copy of the most common
+ reference genome files.
+
+ By selecting this option, your pipeline will include a configuration
+ file specifying the paths to these files.▂▂
+
+ The required code to use these files will also be included in the
+ template. When the pipeline user provides an appropriate genome key,
+ the pipeline will automatically download the required reference ▂▂
+ files.
+
+
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Add Github CI The pipeline will Show help
+ ▊▁▁▁▁▁▁▁▁▎ testsinclude several ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ GitHub actions for
+ Continuous
+ Integration (CI)
+ testing
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Add Github badgesThe README.md file Show help
+ ▊▁▁▁▁▁▁▁▁▎of the pipeline ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ will include
+ GitHub badges
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Back Continue
+ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+ d Toggle dark mode q Quit
@@ -2233,255 +2233,255 @@
font-weight: 700;
}
- .terminal-557041160-matrix {
+ .terminal-2213530577-matrix {
font-family: Fira Code, monospace;
font-size: 20px;
line-height: 24.4px;
font-variant-east-asian: full-width;
}
- .terminal-557041160-title {
+ .terminal-2213530577-title {
font-size: 18px;
font-weight: bold;
font-family: arial;
}
- .terminal-557041160-r1 { fill: #c5c8c6 }
- .terminal-557041160-r2 { fill: #e3e3e3 }
- .terminal-557041160-r3 { fill: #989898 }
- .terminal-557041160-r4 { fill: #e1e1e1 }
- .terminal-557041160-r5 { fill: #4ebf71;font-weight: bold }
- .terminal-557041160-r6 { fill: #1e1e1e }
- .terminal-557041160-r7 { fill: #507bb3 }
- .terminal-557041160-r8 { fill: #e2e2e2 }
- .terminal-557041160-r9 { fill: #808080 }
- .terminal-557041160-r10 { fill: #dde6ed;font-weight: bold }
- .terminal-557041160-r11 { fill: #001541 }
- .terminal-557041160-r12 { fill: #14191f }
- .terminal-557041160-r13 { fill: #454a50 }
- .terminal-557041160-r14 { fill: #7ae998 }
- .terminal-557041160-r15 { fill: #e2e3e3;font-weight: bold }
- .terminal-557041160-r16 { fill: #0a180e;font-weight: bold }
- .terminal-557041160-r17 { fill: #000000 }
- .terminal-557041160-r18 { fill: #008139 }
- .terminal-557041160-r19 { fill: #fea62b;font-weight: bold }
- .terminal-557041160-r20 { fill: #a7a9ab }
- .terminal-557041160-r21 { fill: #e2e3e3 }
+ .terminal-2213530577-r1 { fill: #c5c8c6 }
+ .terminal-2213530577-r2 { fill: #e3e3e3 }
+ .terminal-2213530577-r3 { fill: #989898 }
+ .terminal-2213530577-r4 { fill: #e1e1e1 }
+ .terminal-2213530577-r5 { fill: #4ebf71;font-weight: bold }
+ .terminal-2213530577-r6 { fill: #1e1e1e }
+ .terminal-2213530577-r7 { fill: #507bb3 }
+ .terminal-2213530577-r8 { fill: #e2e2e2 }
+ .terminal-2213530577-r9 { fill: #808080 }
+ .terminal-2213530577-r10 { fill: #dde6ed;font-weight: bold }
+ .terminal-2213530577-r11 { fill: #001541 }
+ .terminal-2213530577-r12 { fill: #14191f }
+ .terminal-2213530577-r13 { fill: #454a50 }
+ .terminal-2213530577-r14 { fill: #7ae998 }
+ .terminal-2213530577-r15 { fill: #e2e3e3;font-weight: bold }
+ .terminal-2213530577-r16 { fill: #0a180e;font-weight: bold }
+ .terminal-2213530577-r17 { fill: #000000 }
+ .terminal-2213530577-r18 { fill: #008139 }
+ .terminal-2213530577-r19 { fill: #fea62b;font-weight: bold }
+ .terminal-2213530577-r20 { fill: #a7a9ab }
+ .terminal-2213530577-r21 { fill: #e2e3e3 }
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
- nf-core create
+ nf-core create
-
-
-
- ⭘nf-core create — Create a new pipeline with the nf-core pipeline template
-
-
- Template features
-
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Use reference The pipeline will Show help
- ▊▁▁▁▁▁▁▁▁▎ genomesbe configured to ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- use a copy of the
- most common
- reference genome
- files from
- iGenomes
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Add Github CI The pipeline will Show help
- ▊▁▁▁▁▁▁▁▁▎ testsinclude several ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- GitHub actions for
- Continuous
- Integration (CI)
- testing
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Add Github badgesThe README.md file Show help
- ▊▁▁▁▁▁▁▁▁▎of the pipeline ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- will include ▅▅
- GitHub badges
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Add configuration The pipeline will Show help
- ▊▁▁▁▁▁▁▁▁▎ filesinclude ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
- configuration
- profiles
- containing custom
- parameters
- requried to run
- nf-core pipelines
- at different
- institutions
-
- ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- ▊▎ Use code lintersThe pipeline will Show help
- ▊▁▁▁▁▁▁▁▁▎include code ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
- ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
- Back Continue
- ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
-
- d Toggle dark mode q Quit
+
+
+
+ ⭘nf-core create — Create a new pipeline with the nf-core pipeline template
+
+
+ Template features
+
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Use reference The pipeline will Show help
+ ▊▁▁▁▁▁▁▁▁▎ genomesbe configured to ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ use a copy of the
+ most common
+ reference genome
+ files from
+ iGenomes
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Add Github CI The pipeline will Show help
+ ▊▁▁▁▁▁▁▁▁▎ testsinclude several ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ GitHub actions for
+ Continuous
+ Integration (CI)
+ testing
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▆▆
+ ▊▎ Add Github badgesThe README.md file Show help
+ ▊▁▁▁▁▁▁▁▁▎of the pipeline ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ will include
+ GitHub badges
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Add configuration The pipeline will Show help
+ ▊▁▁▁▁▁▁▁▁▎ filesinclude ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+ configuration
+ profiles
+ containing custom
+ parameters
+ requried to run
+ nf-core pipelines
+ at different
+ institutions
+
+ ▊▔▔▔▔▔▔▔▔▎▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ ▊▎ Use code lintersThe pipeline will Show help
+ ▊▁▁▁▁▁▁▁▁▎include code ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+ ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
+ Back Continue
+ ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
+
+ d Toggle dark mode q Quit
diff --git a/tests/data/pipeline_create_template_skip.yml b/tests/data/pipeline_create_template_skip.yml
index d494982f21..21cdc0c3d5 100644
--- a/tests/data/pipeline_create_template_skip.yml
+++ b/tests/data/pipeline_create_template_skip.yml
@@ -14,5 +14,6 @@ skip_features:
- code_linters
- citations
- gitpod
+ - codespaces
- multiqc
- changelog