Development and Maintenance
This project includes a comprehensive Makefile for installation, testing, linting, and other maintenance tasks.
Quick Setup
# Set up development environment
make setup-dev
# Run all tests
make test-all
# Run linting
make lint
# Show all available targets
make help
Available Make Targets
Installation:
- make install
- Install package dependencies
- make install-dev
- Install development dependencies (includes pytest)
- make install-lint
- Install linting tools (flake8, black, isort, mypy)
- make setup-dev
- Set up complete development environment
Testing:
- make test
- Run all available tests
- make test-bash
- Run bash implementation tests
- make test-python
- Run Python tests with pytest
- make test-all
- Run all tests (bash and python if available)
Linting and Code Quality:
- make lint
- Run all linting tools
- make lint-python
- Run Python linting (flake8, black, isort, mypy)
- make lint-bash
- Run bash script linting (shellcheck)
- make format
- Format code using black and isort
Build and Package:
- make build
- Build package (syntax check, make executable)
- make package
- Create distributable package
- make check-deps
- Check if required dependencies are available
Maintenance:
- make clean
- Clean temporary files and build artifacts
- make docs
- Show usage documentation
- make demo
- Run a quick demo with test data
Development Workflows:
- make ci
- Run full CI pipeline (install, test, lint)
- make dev-check
- Quick development check (test + lint)
- make quick-start
- Show quick start guide
Dependencies
The Makefile handles dependency installation automatically. For manual installation:
Required for Python implementation: - Python 3.12+ - vobject 0.9.0+ - click 8.0.0+
Development dependencies: - pytest 7.0.0+
Linting tools (optional): - flake8, black, isort, mypy for Python - shellcheck for bash scripts
Error Handling
The script includes robust error handling for:
Non-existent source directories
Empty directories with no VCF files
Malformed VCF files
File system permissions issues
Invalid characters in filenames