CLI-Only Mode
dist-git-manager can be used without a YAML configuration file for single-repository updates using only command-line arguments.
Overview
CLI-only mode is useful for:
One-off repository updates
CI/CD pipelines
Scripting
Testing a single package without creating a config file
When you don’t need to manage multiple projects
Quick Example
dist-git-manager --repo-url https://src.fedoraproject.org/rpms/htop.git \
--package-name htop \
--version-source anitya --anitya-id 1234 \
--spec-manager packit \
--release-type semver --default-branch rawhide \
--upstream-url https://github.com/htop-dev/htop \
--upstream-tag-template "v{version}" \
--dry-run
Required Arguments
When not using --config, these arguments are required:
--repo-url URL Dist-git repository URL
--package-name NAME Package name
--version-source TYPE Version source: anitya, crates_io, or pypi
--spec-manager TYPE Spec manager: packit, rust2rpm, or pyp2spec
--release-type TYPE Release type: semver or rolling
--default-branch BRANCH Default branch name (e.g., rawhide, main)
Version Source Options
Anitya
--version-source anitya --anitya-id 1234
Additional required arguments:
--anitya-id ID: Anitya project ID (integer)
Optional arguments:
--anitya-token TOKEN: API token for higher rate limits
crates.io
--version-source crates_io
No additional arguments required. Package name from --package-name is used as crate name.
PyPI
--version-source pypi
No additional arguments required. Package name from --package-name is used.
Spec Manager Options
Packit
--spec-manager packit \
--upstream-url https://github.com/user/project \
--upstream-tag-template "v{version}"
Additional required arguments:
--upstream-url URL: Upstream project repository URL--upstream-tag-template TEMPLATE: Git tag template (use{version}placeholder)
rust2rpm
--spec-manager rust2rpm
No additional arguments required.
Prerequisites: rust2rpm must be installed (dnf install rust2rpm)
pyp2spec
--spec-manager pyp2spec
No additional arguments required.
Prerequisites: pyp2spec must be installed (dnf install pyp2spec)
Optional Arguments
--work-dir DIR Working directory (default: /tmp/dist-git-manager)
--git-user-name NAME Git user name for commits
--git-user-email EMAIL Git user email for commits
--auto-push Automatically push changes to remote
--dry-run Preview changes without applying
-v, --verbose Enable verbose logging
Utility Commands
--list-plugins List available version sources and spec managers
--version Show version and exit
--help Show help and exit
Complete Examples
Example 1: Anitya + Packit (Dry Run)
dist-git-manager \
--repo-url https://src.fedoraproject.org/rpms/htop.git \
--package-name htop \
--version-source anitya \
--anitya-id 1234 \
--spec-manager packit \
--upstream-url https://github.com/htop-dev/htop \
--upstream-tag-template "{version}" \
--release-type semver \
--default-branch rawhide \
--dry-run --verbose
Example 2: crates.io + rust2rpm
dist-git-manager \
--repo-url https://src.fedoraproject.org/rpms/rust-serde.git \
--package-name serde \
--version-source crates_io \
--spec-manager rust2rpm \
--release-type semver \
--default-branch rawhide \
--git-user-name "Rust Bot" \
--git-user-email "rust-bot@example.com"
Example 3: PyPI + pyp2spec with Auto-push
dist-git-manager \
--repo-url https://src.fedoraproject.org/rpms/python-requests.git \
--package-name requests \
--version-source pypi \
--spec-manager pyp2spec \
--release-type semver \
--default-branch rawhide \
--git-user-name "Python Bot" \
--git-user-email "python-bot@example.com" \
--auto-push
Example 4: Rolling Release
dist-git-manager \
--repo-url https://src.fedoraproject.org/rpms/vim.git \
--package-name vim \
--version-source anitya \
--anitya-id 5678 \
--spec-manager packit \
--upstream-url https://github.com/vim/vim \
--upstream-tag-template "v{version}" \
--release-type rolling \
--default-branch rawhide
Validation
CLI-only mode validates that:
All required arguments are provided
Arguments are not mixed with
--config(mutually exclusive)Version source and spec manager specific requirements are met
If validation fails, an error message indicates which arguments are missing.
When to Use CLI-Only vs Config-Driven
Use CLI-only mode when:
Updating a single repository
Running in CI/CD pipelines
Quick one-off updates
Testing before creating a config file
Scripting individual package updates
Use config-driven mode when:
Managing multiple projects
Running regularly (cron, systemd timer)
Complex multi-package setups
Want to version control configuration
Need to share configuration with team
Mixing Modes
You cannot mix CLI-only arguments with --config:
# This is an error:
dist-git-manager --config config.yaml --repo-url https://...
Choose either config-driven OR CLI-only mode, not both.
Environment Variables
Environment variables work the same in CLI-only mode:
ANITYA_API_TOKEN: Anitya API token (alternative to--anitya-token)
export ANITYA_API_TOKEN="your-token"
dist-git-manager --version-source anitya --anitya-id 1234 ...