Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
55ee26f
Hello nextflow: New workflow inputs + outputs + strict syntax
ewels Dec 3, 2025
4965a05
Copy completed modules and scripts from earlier sections into solutio…
ewels Dec 3, 2025
06f13f1
Move parameters down, above workflow
ewels Dec 4, 2025
1e0c8c9
Run nextflow format on solutions
ewels Dec 4, 2025
9492dae
Run nextflow format on starter files
ewels Dec 4, 2025
c4325fd
Merge branch 'master' into hello-nextflow-inputs-outputs-strict
ewels Dec 4, 2025
d2cd86b
Starting on #752
vdauwera Jan 2, 2026
b3dc75a
Updated the inputs and console output formatting
vdauwera Jan 3, 2026
0324680
Updated formatting to be more streamlined
vdauwera Jan 3, 2026
efe2ecd
syntax updates to NR
vdauwera Jan 3, 2026
12f2b36
Merge branch 'master' into gvda-hello-v3
vdauwera Jan 6, 2026
8774221
Updated admonition types
vdauwera Jan 7, 2026
8d62a66
Merge branch 'gvda-hello-v3' of https://github.com/nextflow-io/traini…
vdauwera Jan 7, 2026
d60aec1
Testing columns
vdauwera Jan 7, 2026
d1b25de
Alternative option using grid cards
vdauwera Jan 7, 2026
1d03fe1
yet another test
vdauwera Jan 7, 2026
d208180
testing display when size differences
vdauwera Jan 7, 2026
fb6f790
using a tab thing ???
vdauwera Jan 7, 2026
25926e6
and now nesting the blocks
vdauwera Jan 7, 2026
9303c81
getting there
vdauwera Jan 7, 2026
ff7d264
testing custom admonition
vdauwera Jan 7, 2026
9eb0ddd
override custom admonition from theme?
vdauwera Jan 7, 2026
5d0dd6a
maybe don't set an icon?
vdauwera Jan 7, 2026
29e0867
more custom admonitions!
vdauwera Jan 7, 2026
8858a64
tweak colors
vdauwera Jan 7, 2026
4c99a9d
move setup under help
vdauwera Jan 7, 2026
81bc3b4
more tweaks
vdauwera Jan 7, 2026
9e6c0fa
Streamline homepage
vdauwera Jan 7, 2026
ddff1cc
Reorganized the catalog
vdauwera Jan 7, 2026
ef7bf69
fix
vdauwera Jan 7, 2026
9dcbb70
tweak
vdauwera Jan 7, 2026
a94f1e4
Update environment setup pages
vdauwera Jan 8, 2026
2271738
Update installation instructions
vdauwera Jan 8, 2026
13f2162
tweak
vdauwera Jan 8, 2026
5efc274
Styling: tidy up the new homepage design
ewels Jan 8, 2026
e4e26fb
minor tweaks
vdauwera Jan 8, 2026
fef9543
start updates on the help page
vdauwera Jan 8, 2026
1b5a7c1
fix formatting
vdauwera Jan 9, 2026
9b15099
format fixes on re-drafted help page
vdauwera Jan 9, 2026
819510d
format fix for cards
vdauwera Jan 9, 2026
08fe753
revamp help page
vdauwera Jan 9, 2026
8f47af4
tweaks
vdauwera Jan 9, 2026
6ffe1d1
more tweaks
vdauwera Jan 9, 2026
aaecaf5
yet more tweaks
vdauwera Jan 9, 2026
6fc8251
revert this
vdauwera Jan 9, 2026
a96875a
Improve overview of environment options
vdauwera Jan 9, 2026
6e615c3
Improve blurbs/ cards
vdauwera Jan 9, 2026
cad8728
Blurbs
vdauwera Jan 9, 2026
2ea1f6c
Tweak language
vdauwera Jan 9, 2026
671418e
refine blurb
vdauwera Jan 9, 2026
de0a145
final (?) tweaks to env setup
vdauwera Jan 9, 2026
9480a6c
update sidebar
vdauwera Jan 9, 2026
022cdb8
Remove some <hr>s, add some <hr>s..
ewels Jan 9, 2026
542ceb7
Update SQ and NF4Sci courses to strict syntax (#763)
vdauwera Jan 10, 2026
dbc6152
Bump Nextflow version and set v2 syntax (#764)
vdauwera Jan 10, 2026
da954a1
Hello nextflow: New workflow inputs + outputs + strict syntax
ewels Dec 3, 2025
98a4279
Copy completed modules and scripts from earlier sections into solutio…
ewels Dec 3, 2025
6aa3952
Move parameters down, above workflow
ewels Dec 4, 2025
c48413e
Run nextflow format on solutions
ewels Dec 4, 2025
12cc0c9
Run nextflow format on starter files
ewels Dec 4, 2025
89572d9
Starting on #752
vdauwera Jan 2, 2026
b0a8507
Updated the inputs and console output formatting
vdauwera Jan 3, 2026
cc17472
Updated formatting to be more streamlined
vdauwera Jan 3, 2026
0f7ca83
syntax updates to NR
vdauwera Jan 3, 2026
4ceddf7
Updated admonition types
vdauwera Jan 7, 2026
999c00f
Update index and orientation pages for clarity and consistency + add …
vdauwera Jan 10, 2026
060020a
Merge branch 'gvda-hello-v3' of https://github.com/nextflow-io/traini…
vdauwera Jan 10, 2026
c0c7fa9
Merge branch 'master' into gvda-hello-v3
vdauwera Jan 10, 2026
7a84d1e
Merge branch 'master' into 3.0-feature-strict-syntax
vdauwera Jan 10, 2026
63f1038
Merge branch 'gvda-hello-v3' into 3.0-feature-strict-syntax
vdauwera Jan 10, 2026
e6ac76b
Make orientation consistent across courses
vdauwera Jan 10, 2026
7e78256
small tweak
vdauwera Jan 10, 2026
f1c644a
whoops mucked up some ??? blocks
vdauwera Jan 10, 2026
d4c16c9
caught a whole bunch
vdauwera Jan 10, 2026
bd74125
smacking down some notes
vdauwera Jan 10, 2026
b1187dc
Started THE GREAT REFACTORING
vdauwera Jan 10, 2026
c20e6a6
Hello World overhaul complete (?)
vdauwera Jan 12, 2026
079433d
fix headings
vdauwera Jan 12, 2026
c63e547
Small fixes
vdauwera Jan 12, 2026
3453b3e
Start of Channels updated
vdauwera Jan 13, 2026
224a849
Completed parts 1-3 of Channels
vdauwera Jan 13, 2026
9203971
Finished updating Hello Channels
vdauwera Jan 13, 2026
3a82b9c
update orientation to match greetings being under data
vdauwera Jan 13, 2026
a252d4c
minor tweaks
vdauwera Jan 13, 2026
3021587
minor tweaks
vdauwera Jan 13, 2026
790ef5e
line highlights
vdauwera Jan 13, 2026
7d54809
Updated solutions and tweaked first section
vdauwera Jan 14, 2026
6733de2
Finished Part 3 (workflows) and Part 4 (modules)
vdauwera Jan 15, 2026
2d1ecd4
tiny fixes
vdauwera Jan 15, 2026
ef9c388
fix
vdauwera Jan 15, 2026
89eb311
Updated Part 5 (Containers)
vdauwera Jan 15, 2026
2156b54
minor fixes
vdauwera Jan 15, 2026
df992e0
Merge branch 'master' into 3.0-feature-strict-syntax
vdauwera Jan 15, 2026
b7e56e8
minor fixes
vdauwera Jan 15, 2026
3c6688b
Merge branch '3.0-feature-strict-syntax' of https://github.com/nextfl…
vdauwera Jan 15, 2026
80b4429
Fix issues in Hello Nextflow Parts 2-6
pinin4fjords Jan 16, 2026
2e246e9
Update 06_hello_config.md
vdauwera Jan 16, 2026
5243945
Merge branch '3.0-feature-strict-syntax' of https://github.com/nextfl…
vdauwera Jan 16, 2026
6c4f29d
Revamp the Hello Nextflow index
vdauwera Jan 18, 2026
bd9d9d0
No prettier on pages with grid cards
vdauwera Jan 18, 2026
612ceef
styling for videos admonition
vdauwera Jan 18, 2026
2cb3767
tweaks
vdauwera Jan 18, 2026
83be294
tweak
vdauwera Jan 18, 2026
1203746
removing size comment
vdauwera Jan 18, 2026
edb10e3
simplify
vdauwera Jan 18, 2026
272b581
minor fix
vdauwera Jan 18, 2026
b84ecf2
drafted a summary page
vdauwera Jan 18, 2026
7239b81
Replace Next Steps with Course Summary
vdauwera Jan 19, 2026
cdd103e
Streamlining a bit more
vdauwera Jan 19, 2026
5ac09e6
reverting file name
vdauwera Jan 19, 2026
46cbfe2
didn't like the folded final results
vdauwera Jan 19, 2026
4e3e1f1
Custom template style for course index pages (#776)
ewels Jan 21, 2026
07ca96b
Tweaks to course index pages mostly
vdauwera Jan 22, 2026
9380436
Wording tweaks to overviews
vdauwera Jan 22, 2026
1f4f5b7
Hello Config revamp
vdauwera Jan 23, 2026
2303bf8
fix numbers
vdauwera Jan 23, 2026
6ad5729
small fixes
vdauwera Jan 23, 2026
699fadb
Updated batch names
vdauwera Jan 23, 2026
6511c8f
more minor tweaks
vdauwera Jan 23, 2026
ba137e6
Updated all code files for Nextflow Run
vdauwera Jan 24, 2026
23350e0
Updated instructions for Nextflow Run (part 1) + assorted fixes
vdauwera Jan 24, 2026
2c60424
minor fixes and tweaks
vdauwera Jan 24, 2026
12d682e
Image refinements
vdauwera Jan 24, 2026
353eea8
A few more tweaks
vdauwera Jan 24, 2026
776ea7a
Improve full-code display
vdauwera Jan 24, 2026
c3bf109
Updated instructions for Nextflow Run part 2
vdauwera Jan 24, 2026
f68f8e9
minor tweak
vdauwera Jan 24, 2026
a377631
clarified some of the explanations
vdauwera Jan 24, 2026
41eb4a6
Add recap + tweaks
vdauwera Jan 24, 2026
5feee69
Updated Nextflow Run part 3 (config) + related bits of HN
vdauwera Jan 24, 2026
9926ad4
Updated index and next steps
vdauwera Jan 25, 2026
902cf76
remove numbering
vdauwera Jan 25, 2026
9915566
minor fixes
vdauwera Jan 25, 2026
53dacd6
Added diagrams to Hello & basics
vdauwera Jan 25, 2026
af44c00
added diagrams for input channel steps
vdauwera Jan 25, 2026
b908da9
added more diagrams
vdauwera Jan 25, 2026
f085d69
two more diagrams
vdauwera Jan 25, 2026
d77e2f5
more ascii art
vdauwera Jan 25, 2026
bb623b0
more ascii art
vdauwera Jan 25, 2026
3beb9c6
index fixes
vdauwera Jan 25, 2026
b2e0234
Update mkdocs.yml
vdauwera Jan 26, 2026
53d1ff2
Complete debugging side quest documentation
pinin4fjords Jan 26, 2026
1483553
Fix bugs in nextflow_run Parts 1-3 found during tutorial walkthrough
pinin4fjords Jan 26, 2026
a8014af
Update debugging side quest for NXF_SYNTAX_PARSER=v2 compatibility
pinin4fjords Jan 26, 2026
4c4f59b
Update nf-test side quest for NXF_SYNTAX_PARSER=v2 compatibility
pinin4fjords Jan 26, 2026
795c519
Fix nf-test build: install Maven before building
pinin4fjords Jan 26, 2026
fa62172
Fix nf-test build and clean up
pinin4fjords Jan 26, 2026
626711c
Update workflows_of_workflows side quest for v2 parser compatibility
pinin4fjords Jan 26, 2026
b4d0f1b
Update run-tutorial skill to use v2 parser by default
pinin4fjords Jan 26, 2026
96cfe42
Fix broken documentation links
pinin4fjords Jan 26, 2026
d494155
prettier
pinin4fjords Jan 26, 2026
4c94134
Fix additional broken nxf_versions.md links
pinin4fjords Jan 26, 2026
73fc2bf
Fix issues in docs/info/ files
pinin4fjords Jan 26, 2026
d553e89
Fix markdown formatting in run-tutorial skill
pinin4fjords Jan 26, 2026
08e12a6
minor fixes
vdauwera Jan 26, 2026
ee438c2
Merge branch '3.0-feature-strict-syntax' of https://github.com/nextfl…
vdauwera Jan 27, 2026
a054c38
Fix typos
mribeirodantas Jan 27, 2026
200faca
minor fix
vdauwera Jan 27, 2026
2081dd7
Merge branch '3.0-feature-strict-syntax' of https://github.com/nextfl…
vdauwera Jan 27, 2026
58e53bd
small fixes
vdauwera Jan 27, 2026
aa957b1
remove TODOs
vdauwera Jan 27, 2026
6c09988
Address TODOs
vdauwera Jan 27, 2026
395505c
Fixes indentation (consistency)
mribeirodantas Jan 27, 2026
00d3066
addressed more TODOs
vdauwera Jan 27, 2026
a5f586f
Merge branch '3.0-feature-strict-syntax' of https://github.com/nextfl…
vdauwera Jan 27, 2026
32dc47d
claude found bugs
vdauwera Jan 27, 2026
6c98ec8
update outputs
vdauwera Jan 27, 2026
5f676c4
add prereq warning to rnaseq course part 2
vdauwera Jan 27, 2026
92d8d88
Add preview_release.py script for serving docs at production URL (#778)
ewels Jan 27, 2026
e504d4b
Add VSCode code . tip to orientation pages (#779)
ewels Jan 27, 2026
0552d3a
Fix Hello Genomics tutorials for v2 syntax parser (#777)
pinin4fjords Jan 28, 2026
ba568f0
Add quiz questions to Hello Nextflow and Nextflow Run courses (#780)
ewels Jan 28, 2026
2e20c89
Add 'Learn more' links to quiz feedback content (#781)
ewels Jan 28, 2026
40cac01
Fix Essential Scripting Patterns for v2 syntax parser
pinin4fjords Jan 28, 2026
7bbdc5e
Merge master into 3.0-feature-strict-syntax
pinin4fjords Jan 28, 2026
f31dace
Add strict syntax parser (v2) instruction back to run-tutorial
pinin4fjords Jan 28, 2026
eb96558
Fix splitting and grouping side quest documentation
pinin4fjords Jan 28, 2026
229dae6
Fix Working with Files side quest for v2 syntax parser
pinin4fjords Jan 28, 2026
88efb48
Add mkdocs-quiz CLI support (#786)
ewels Jan 29, 2026
76288d0
Add mkdocs-quiz to codespaces setup (#788)
ewels Jan 29, 2026
d198a7e
Nextflow Run: Phil polishing with a feather duster ✨ (#784)
ewels Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions .claude/skills/run-tutorial/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,22 @@ Do not proceed until the container is confirmed running.

**If existing environment:** Verify Nextflow is installed with `nextflow -version`

### Strict Syntax Parser (v2)

**Always use the strict syntax parser** when running Nextflow commands:

```bash
NXF_SYNTAX_PARSER=v2 nextflow run ...
```

In Docker:

```bash
docker exec -e NXF_SYNTAX_PARSER=v2 nf-training nextflow run ...
```

This validates tutorials against the strict syntax that will become default in future Nextflow versions.

---

## Working Directory Mapping
Expand Down
3 changes: 2 additions & 1 deletion .devcontainer/codespaces-dev/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@
// Nextflow installation version
"NXF_HOME": "/workspaces/.nextflow",
"NXF_EDGE": "0",
"NXF_VER": "25.04.3",
"NXF_VER": "25.10.2",
"NXF_SYNTAX_PARSER": "v2",
// Other env vars
"HOST_PROJECT_PATH": "/workspaces/training",
"SHELL": "/bin/bash" // Ush bash
Expand Down
3 changes: 2 additions & 1 deletion .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
// Nextflow installation version
"NXF_HOME": "/workspaces/.nextflow",
"NXF_EDGE": "0",
"NXF_VER": "25.04.3",
"NXF_VER": "25.10.2",
"NXF_SYNTAX_PARSER": "v2",
// Other env vars
"HOST_PROJECT_PATH": "/workspaces/training",
"SHELL": "/bin/bash" // Ush bash
Expand Down
3 changes: 2 additions & 1 deletion .devcontainer/local-dev/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
// Nextflow installation version
"NXF_HOME": "/workspaces/training/.nextflow",
"NXF_EDGE": "0",
"NXF_VER": "25.04.3",
"NXF_VER": "25.10.2",
"NXF_SYNTAX_PARSER": "v2",
// Other env vars
"HOST_PROJECT_PATH": "/workspaces/training",
"SHELL": "/bin/bash" // Ush bash
Expand Down
1 change: 1 addition & 0 deletions .devcontainer/local-features/uv-tools/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@

uv tool install pre-commit
uv tool install nf-core==3.4.1
uv tool install "mkdocs-quiz>=1.5.2"
22 changes: 22 additions & 0 deletions .devcontainer/setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,26 @@ export PS1='\[\e[3;36m\]${PWD#/workspaces/} ->\[\e[0m\] '
nextflow self-update
nextflow -version

# Build nf-test from main branch with v2 parser support (PR #336)
# TODO: Remove this once nf-test releases a version with strict syntax support
# See: https://github.com/askimed/nf-test/pull/336
NFTEST_COMMIT="350bb147a23a7f0aa657c13342d9726c0e3edacc"
echo "Building nf-test from commit ${NFTEST_COMMIT} (v2 parser support)..."

# Install Maven if not present
if ! command -v mvn &> /dev/null; then
echo "Installing Maven..."
apt-get update -qq && apt-get install -y -qq maven > /dev/null
fi

cd /tmp
git clone --quiet https://github.com/askimed/nf-test.git
cd nf-test
git checkout --quiet ${NFTEST_COMMIT}
mvn install -DskipTests -q
cp target/nf-test.jar ~/.nf-test/nf-test.jar
cd /workspaces/training
rm -rf /tmp/nf-test ~/.m2/repository
echo "nf-test updated with v2 parser support"

cat /usr/local/etc/vscode-dev-containers/first-run-notice.txt
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@ results
transcript-index
.vscode
site/
.playwright-mcp/
.preview-release/
__pycache__
*.pyc
6 changes: 6 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
# Complex formatting on the home and help pages
docs/index.md
docs/help.md
docs/envsetup/index.md
docs/hello_nextflow/index.md

# Ignore all files in side-quests/solutions
side-quests/solutions/nf-core/**/*.js
side-quests/solutions/nf-core/**/*.md
Expand Down
139 changes: 139 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@ Table of contents:
- [Nextflow linting](#nextflow-linting)
- [Headings CI tests](#headings-ci-tests)
- [Admonitions](#admonitions)
- [Index page template](#index-page-template)
- [Known limitations](#known-limitations)
- [Code annotations](#code-annotations)
- [Word highlighting](#word-highlighting)
- [TODO / FIXME](#todo--fixme)
- [Preview Release](#preview-release)

## Contribution model

Expand Down Expand Up @@ -185,6 +187,84 @@ Please see the [official docs](https://squidfunk.github.io/mkdocs-material/refer
- `!!!` does a regular admonition, `???` makes it collapsed (click to expand).
- Indentation is important! Make sure you check the rendered site, as it's easy to make a mistake.

### Index page template

Course and module index pages can use a special template system that generates Material for MkDocs grid cards from structured frontmatter data.
This keeps the index pages consistent and makes them easier to maintain.

To use the template, add `page_type: index_page` to your frontmatter and include the `<!-- additional_information -->` marker in your content.

#### Basic structure

```markdown
---
title: Course Title
hide:
- toc
page_type: index_page
index_type: course
additional_information:
technical_requirements: true
learning_objectives:
- First objective
- Second objective
audience_prerequisites:
- "**Audience:** Description of target audience"
- "**Skills:** Required skills"
videos_playlist: https://www.youtube.com/playlist?list=...
---

# Course Title

Summary paragraph describing the course.
This content appears in the "Course summary" card.

<!-- additional_information -->

## Rest of page

Content after the marker appears below the grid cards.
```

#### Frontmatter fields

| Field | Type | Required | Description |
| ------------------------ | -------------- | -------- | ------------------------------------------------------------- |
| `page_type` | `"index_page"` | Yes | Enables the index page template |
| `index_type` | string | No | Badge label displayed in top-right (e.g., "course", "module") |
| `additional_information` | object | No | Container for the collapsible admonitions |

#### Additional information fields

All fields within `additional_information` are optional:

| Field | Type | Description |
| ------------------------ | ---------------- | ------------------------------------------------------------------------------------------------- |
| `technical_requirements` | `true` or string | If `true`, uses default text about GitHub/local installation. If a string, uses that custom text. |
| `learning_objectives` | list of strings | Rendered as a bulleted list. Must be a list, not `true`. |
| `audience_prerequisites` | list of strings | Rendered as a bulleted list. Supports markdown formatting. Must be a list, not `true`. |
| `videos_playlist` | URL string | Uses default video description text plus a link to the playlist. |
| `videos` | string | Custom video description text (no link). Mutually exclusive with `videos_playlist`. |

#### Default content

When `technical_requirements: true` is set:

> You will need a GitHub account OR a local installation of Nextflow. See [Environment options](../envsetup/index.md) for more details.

When `videos_playlist` is set, the following text precedes the link:

> Videos are available for each chapter, featuring an instructor working through the exercises. The video for each part of the course is embedded at the top of the corresponding page.

#### Requirements

- The page must have an H1 heading (`# Title`)
- The page must include the `<!-- additional_information -->` marker
- `learning_objectives` and `audience_prerequisites` must be lists (not `true`)
- `videos` and `videos_playlist` are mutually exclusive

The build will fail with a descriptive error if these requirements are not met.

## Known limitations

There are a couple of known limitations that I haven't figured out how to get around yet
Expand Down Expand Up @@ -214,3 +294,62 @@ I recommend the [Todo Tree VSCode extension](https://marketplace.visualstudio.co
A list of key ones also included here:

- Remove plugin install from Phil's GitHub fork in `requirements.txt` and `.github/mkdocs.Dockerfile` when [this PR](https://github.com/timvink/mkdocs-enumerate-headings-plugin/pull/33) is merged

## Preview Release

The `preview_release.py` script serves the training docs locally at `https://training.nextflow.io/` with the current branch appearing as a specified version release.
This is useful for recording videos or previewing how a release will look before it's published.

### How it works

1. Fetches existing released versions from the `gh-pages` branch
2. Builds the current branch's docs using Docker
3. Updates `versions.json` to show your version as "latest"
4. Generates trusted TLS certificates using mkcert
5. Adds a temporary entry to `/etc/hosts` to redirect the domain locally
6. Serves the site using Caddy on port 443
7. Cleans up the hosts entry when you stop the server (Ctrl+C)

### First-time setup

Install the mkcert root CA (one-time, as your regular user):

```bash
mkcert -install
```

This adds a local certificate authority to your system keychain so browsers trust the generated certificates.
Restart your browser after running this command.

### Usage

The easiest way to run the script is with [uv](https://docs.astral.sh/uv/), which handles dependencies automatically:

```bash
# Serve current branch as version 3.0
sudo uv run ./preview_release.py --version 3.0

# Check current status
uv run ./preview_release.py status

# Clean up work directory on exit (default keeps it for faster restarts)
sudo uv run ./preview_release.py --version 3.0 --clean
```

The script requires `sudo` because it needs to:

- Modify `/etc/hosts` to redirect `training.nextflow.io` to localhost
- Bind to port 443 for HTTPS

### Caching

The script caches:

- Downloaded gh-pages content (existing released versions)
- Built docs for your version
- Generated TLS certificates

A hash of source files (`docs/`, `mkdocs.yml`) is computed to detect changes.
If you modify source files, the docs will be rebuilt automatically on the next run.

Use `--clean` to delete the work directory on exit, or manually remove `.preview-release/` to force a fresh build.
Loading