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