Skip to main content

Check and update dependencies across Cargo, npm, and pyproject projects

Project description

ruckup

ruckup checks and updates dependencies across multiple package managers from a single CLI.

Today it supports:

  • Rust crates in Cargo.toml
  • GitHub Actions in .github/workflows/*.yml
  • JavaScript dependencies in package.json
  • Python dependencies in pyproject.toml

It is useful for repos that mix Rust, Node, and Python tooling and want one place to:

  • list detected dependencies
  • check for newer versions
  • interactively apply updates
  • filter work to a specific ecosystem or package name

Features

  • Auto-detects supported manifest files in the current directory
  • Checks latest versions from crates.io, GitHub Actions, npm, and PyPI
  • Preserves dependency groups such as normal, dev, build, and optional
  • Supports interactive updates with multi-select prompts
  • Understands npm peer dependency constraints and shows when packages are held back
  • Supports project and global config through .ruckuprc
  • Supports env var overrides for concurrency and version-range behavior

Supported Files

Cargo

  • Cargo.toml
  • dependency sections:
    • [dependencies]
    • [dev-dependencies]
    • [build-dependencies]

GitHub Actions

  • .github/workflows/*.yml
  • scans uses: owner/repo@ref and uses: owner/repo/path@ref
  • ignores local actions such as ./action and docker:// actions

npm / pnpm / yarn

  • package.json
  • lockfile-aware display when one of these is present:
    • package-lock.json
    • pnpm-lock.yaml
    • yarn.lock

Python

  • pyproject.toml
  • dependency sources:
    • [project.dependencies]
    • [project.optional-dependencies]
    • [tool.uv.dev-dependencies]
    • [dependency-groups]

Installation

From source

cargo install --path .

Local development

cargo run -- --help

Usage

Check and update dependencies across package managers

Usage: ruckup [OPTIONS] [COMMAND]

Commands:
  check   Check for available dependency updates (default)
  update  Interactively select and apply dependency updates
  list    List detected dependency files and their dependencies
  help    Print this message or the help of the given subcommand(s)

Options:
  -o, --only <ONLY>      Only check these specific package managers (cargo, github-actions, npm, pyproject)
  -f, --filter <FILTER>  Filter to specific dependency names
  -h, --help             Print help
  -V, --version          Print version

Examples

Check all supported manifests in the current directory:

ruckup

Check only Cargo dependencies:

ruckup --only cargo

Check only GitHub Actions versions:

ruckup check --only github-actions

Check only npm dependencies matching a package name:

ruckup check --only npm --filter react

List detected dependencies without checking registries:

ruckup list

Interactively choose updates:

ruckup update

Update everything without prompts:

ruckup update --all

Check only Python dependencies:

ruckup check --only pyproject

Filter multiple ecosystems or names with comma-separated values:

ruckup check --only cargo,npm --filter serde,clap

Configuration

Configuration is resolved in this order, with later layers winning:

  1. built-in defaults
  2. ~/.ruckuprc
  3. ./.ruckuprc
  4. RUCKUP_* environment variables

Both TOML and JSON are supported for .ruckuprc.

Supported settings

  • preserve_range
  • cargo_concurrency
  • npm_concurrency
  • pypi_concurrency
  • github_actions_concurrency

Example .ruckuprc

preserve_range = true
cargo_concurrency = 5
npm_concurrency = 16
pypi_concurrency = 10
github_actions_concurrency = 8

Environment variables

  • RUCKUP_PRESERVE_RANGE
  • RUCKUP_CARGO_CONCURRENCY
  • RUCKUP_NPM_CONCURRENCY
  • RUCKUP_PYPI_CONCURRENCY
  • RUCKUP_GITHUB_ACTIONS_CONCURRENCY

Examples:

RUCKUP_PRESERVE_RANGE=false ruckup update --all
RUCKUP_NPM_CONCURRENCY=8 ruckup check --only npm
RUCKUP_GITHUB_ACTIONS_CONCURRENCY=4 ruckup check --only github-actions

Notes

  • check is the default command, so ruckup and ruckup check are equivalent.
  • npm results include peer dependency conflict reporting so you can see what is blocking an upgrade.
  • GitHub Actions updates rewrite pinned uses: owner/repo@ref workflow references; floating refs like stable and release/v1 are left alone.
  • Python dependency detection only activates for pyproject.toml files that actually declare Python dependencies.

Release Status

The repository currently includes CI and release automation, with crates.io publishing prioritized first. Additional package publishing targets can be enabled incrementally as the release workflow evolves.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.39+ x86-64

File details

Details for the file ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 9ab2536b48d3a1f98fe8d1aad3fea7ce2ccb5caa30d3af5bcf6f8747b57d019a
MD5 6a4266e4c1a284739dac76ac6d0af9a9
BLAKE2b-256 50fe4c7a8f45b29a2c977e5f8f3da04500326b699b222ec531d6fd5119a0609d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl:

Publisher: release.yml on ruckc/ruckup

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page