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