title: Source code
eleventyNavigation:
key: 🐍 Source code
parent: Reference guides
order: 3
If you're interested in developing on
borgmatic, here's
an abridged primer on how its Python source code is organized to help you get
started. Starting at the top level, we have:
- borgmatic: The main borgmatic source module. Most of the code is here. Within that:
- actions: borgmatic-specific logic for running each action (create, list, check, etc.).
- borg: Lower-level code that's responsible for interacting with Borg to run each action.
- commands: Looking to add a new flag or action? Start here. This contains borgmatic's entry point, argument parsing, and shell completion.
- config: Code responsible for loading, normalizing, and validating borgmatic's configuration. Interested in adding a new configuration option? Check out
schema.yaml here.
- hooks: Looking to add a new database, filesystem, or monitoring integration? Start here.
- credential: Credential hooks—for loading passphrases and secrets from external providers.
- data_source: Database and filesystem hooks—anything that produces data or files to go into a backup archive.
- monitoring: Monitoring hooks—integrations with third-party or self-hosted monitoring services.
- docs: How-to and reference documentation, including the document you're reading now.
- sample: Example configurations for cron and systemd.
- scripts: Dev-facing scripts for things like building documentation and running end-to-end tests.
- tests: Automated tests organized by: end-to-end, integration, and unit.
So, broadly speaking, the control flow goes: commands → config followed by
commands → actions → borg and hooks.