Contributing¶
Contributions are welcome. This document describes how to set up a development environment and the conventions the project follows.
Development setup¶
git clone https://github.com/exterex/advena.git
cd advena
# Install Node.js dependencies (Prettier)
npm install
# Install and activate the pre-commit hooks
pip install pre-commit
pre-commit install
Code style¶
Nextflow (.nf, .config)¶
Nextflow files are formatted with Prettier via prettier-plugin-groovy.
Pre-commit hooks¶
The following hooks run automatically on git commit:
| Hook | Purpose |
|---|---|
prettier |
Formatting for Nextflow, JSON, YAML, Markdown |
trailing-whitespace |
Strip trailing whitespace |
end-of-file-fixer |
Ensure files end with a newline |
check-yaml |
Validate YAML syntax |
check-json |
Validate JSON syntax |
mixed-line-ending |
Enforce LF line endings |
Run all hooks manually:
Testing¶
Stub run (fast, no software required)¶
All 34 processes should complete successfully. This validates the channel topology without executing any real tools.
Full pipeline test¶
Requires Docker and an accessible ICEscreen installation (ICESCREEN_ROOT).
nf-test¶
Tests live in tests/.
Branching and pull requests¶
mainis the stable release branch.- Feature branches:
feature/<description> - Bug/hot fixes:
fix/<description> - Non-code tasks:
chore/<description> - Preparing a release:
release/<description> - Open a pull request against
main; CI must pass before merge.
Releases¶
Releases follow Semantic Versioning. To cut a release:
- Update the version in
nextflow.config(manifest.version). - Commit with message
release: bump version to X.Y.Z. - Push a
X.Y.Ztag — therelease.ymlworkflow creates the GitHub Release automatically.