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/janus.git
cd janus
# Create a Python virtual environment (Python 3.11+)
python -m venv .venv
source .venv/bin/activate
# Install development tools
pip install pre-commit
# Install and activate the pre-commit hooks
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¶
nf-test (Nextflow module tests)¶
Module tests live in tests/modules/local/<module_name>/main.nf.test and use test fixtures.
Full pipeline test¶
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 be green 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.