openrepo-sync
openrepo-sync
A command-line tool that keeps a self-hosted OpenRepo package repository in sync with upstream software sources.
openrepo-sync checks GitHub Releases, direct download URLs, and SourceForge for new package versions, uploads them to OpenRepo, and removes releases older than a configured threshold.
Features
- Multiple upstream sources — GitHub Releases, direct URLs (static or LATEST), SourceForge
- Automatic version detection — extracts versions from filenames, or calls
dpkg-deb/rpmon the package itself - Configurable retention — keep the N newest releases, auto-prune the rest
- Dry-run mode — preview all actions without touching the repository
- Per-project YAML files — easy to add, remove, or disable individual packages
${ENV_VAR}expansion in config values for safe API key handling- Structured logging — quiet by default, full debug via
--verboseorRUST_LOG - Multi-platform Docker image —
linux/amd64,linux/arm64,linux/arm/v7
Quick Start
# 1. Edit the global config
cp config.yaml.example config.yaml
$EDITOR config.yaml
# 2. Add a project
mkdir -p projects/
cat > projects/curl.yaml <<EOF
name: curl
repo_uid: debian-stable
keep_versions: 3
source:
type: github
owner: curl
repo: curl
asset_filter: "*.deb"
EOF
# 3. Dry run
openrepo-sync --dry-run
# 4. Sync
openrepo-sync
Navigation
| Page | Description |
|---|---|
| Installation | Build from source, install binary and man page |
| Configuration | Global config and per-project YAML schema |
| Usage | CLI reference, examples, logging and debugging |
| Source Types | GitHub, direct URL, LATEST URL, SourceForge |
| API Reference | OpenRepo REST API endpoints used by this tool |
| Docker | Multi-platform container image |
| Coverage | Test coverage report and CI integration |