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@refanduses: owner/repo/path@ref - ignores local actions such as
./actionanddocker://actions
npm / pnpm / yarn
package.json- lockfile-aware display when one of these is present:
package-lock.jsonpnpm-lock.yamlyarn.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:
- built-in defaults
~/.ruckuprc./.ruckuprcRUCKUP_*environment variables
Both TOML and JSON are supported for .ruckuprc.
Supported settings
preserve_rangecargo_concurrencynpm_concurrencypypi_concurrencygithub_actions_concurrency
Example .ruckuprc
preserve_range = true
cargo_concurrency = 5
npm_concurrency = 16
pypi_concurrency = 10
github_actions_concurrency = 8
Environment variables
RUCKUP_PRESERVE_RANGERUCKUP_CARGO_CONCURRENCYRUCKUP_NPM_CONCURRENCYRUCKUP_PYPI_CONCURRENCYRUCKUP_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
checkis the default command, soruckupandruckup checkare 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@refworkflow references; floating refs likestableandrelease/v1are left alone. - Python dependency detection only activates for
pyproject.tomlfiles 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl.
File metadata
- Download URL: ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl
- Upload date:
- Size: 4.0 MB
- Tags: Python 3, manylinux: glibc 2.39+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ab2536b48d3a1f98fe8d1aad3fea7ce2ccb5caa30d3af5bcf6f8747b57d019a
|
|
| MD5 |
6a4266e4c1a284739dac76ac6d0af9a9
|
|
| BLAKE2b-256 |
50fe4c7a8f45b29a2c977e5f8f3da04500326b699b222ec531d6fd5119a0609d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ruckup-0.4.5-py3-none-manylinux_2_39_x86_64.whl -
Subject digest:
9ab2536b48d3a1f98fe8d1aad3fea7ce2ccb5caa30d3af5bcf6f8747b57d019a - Sigstore transparency entry: 1368765298
- Sigstore integration time:
-
Permalink:
ruckc/ruckup@56e7e6f4ed7e16c904f2a54056fd0d344543b82c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/ruckc
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56e7e6f4ed7e16c904f2a54056fd0d344543b82c -
Trigger Event:
workflow_dispatch
-
Statement type: