Skip to main content

No project description provided

Project description

dcu

Dependency Check & Update — a fast, multi-ecosystem dependency updater written in Rust.

Like npm-check-updates, but for every language.

$ dcu
Checking Cargo.toml
 toml_edit  0.22  ->  0.25.4

Run dcu -u to upgrade Cargo.toml

Features

  • Multi-ecosystempackage.json, Cargo.toml, pyproject.toml in a single tool
  • Format-preserving — surgical byte-range patching for JSON; toml_edit for TOML. Your indentation, comments, and line endings stay intact
  • Fast — concurrent registry lookups across all manifests (futures::join_all)
  • Smart range checking — skips false positives where the resolved version already satisfies the current range
  • Deep scandcu -d recursively finds manifests in monorepos, respecting .gitignore
  • ncu-compatible UX — same flags you already know

Supported Ecosystems

Ecosystem Manifest Registry Crate
Node.js package.json npm dcu-node
Rust Cargo.toml crates.io dcu-rust
Python pyproject.toml PyPI dcu-python

Installation

# Rust (cargo)
cargo install dcu-cli

# Node.js (npm/bun)
npm install -g @dcu/cli
bun add -g @dcu/cli

# Python (pip/uv)
pip install dependency-check-updates
uv pip install dependency-check-updates

Usage

# Check for outdated dependencies
dcu

# Apply updates
dcu -u

# Recursively scan monorepo
dcu -d
dcu -d -u

# Target specific update level
dcu -t patch     # only patch bumps
dcu -t minor     # patch + minor bumps
dcu -t latest    # latest stable (default)

# Filter packages
dcu react eslint            # only check these
dcu -x typescript           # exclude these

# Specific manifest
dcu --manifest path/to/Cargo.toml

# JSON output
dcu --format json

# CI mode (exit 1 if updates exist)
dcu -e 2

# Verbose logging
dcu -v    # info
dcu -vv   # debug
dcu -vvv  # trace

Architecture

Follows the changepacks pattern — one crate per language ecosystem, with bridge crates for cross-language distribution:

.
├── crates/
│   ├── dcu-cli/       # Binary + async CLI orchestration
│   ├── dcu-core/      # Shared traits (ManifestHandler, RegistryClient, Scanner)
│   ├── dcu-node/      # Node.js: package.json parser + npm registry
│   ├── dcu-rust/      # Rust: Cargo.toml parser (toml_edit) + crates.io
│   ├── dcu-python/    # Python: pyproject.toml parser (toml_edit) + PyPI
│   └── dcu-testkit/   # Test fixtures and helpers
├── bridge/
│   ├── node/          # napi-rs N-API binding → npm distribution (@dcu/cli)
│   └── python/        # maturin bin binding → PyPI distribution (dependency-check-updates)
├── Cargo.toml         # Workspace root
└── package.json       # Bun workspace (build/lint/test scripts)

Format Preservation

  • JSON (package.json): Surgical byte-range replacement — finds exact byte offsets of version values, replaces only those bytes. Indent, line endings, trailing newline, key ordering all preserved byte-for-byte.
  • TOML (Cargo.toml, pyproject.toml): toml_edit document model preserves comments, table ordering, inline table formatting, and whitespace.

Shared Traits

Each ecosystem crate implements two core traits from dcu-core:

  • ManifestHandler — parse manifest files, collect dependencies, apply format-preserving updates
  • RegistryClient — resolve versions from package registries with concurrency control

Range Satisfaction

Before reporting an update, the resolver checks if the selected version already satisfies the current range (e.g., ^3 already covers 3.5.1). This eliminates false positives that plague naive string comparison.

Development

# Install dependencies
bun install

# Build everything (CLI + napi + maturin)
bun run build

# Dev build
bun run build:dev

# Lint (clippy + fmt)
bun run lint

# Test
bun run test

# Run CLI
bun run run -- --help
bun run run -- --manifest Cargo.toml -v

Inspirations

  • npm-check-updates — the original ncu that inspired dcu's UX and flag design
  • changepacks — workspace architecture pattern (crates/* + bridge/*), multi-language bridge distribution via napi-rs and maturin, and the overall project structure that dcu follows

License

MIT

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 Distributions

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

dependency_check_updates-0.1.3-py3-none-win_amd64.whl (3.1 MB view details)

Uploaded Python 3Windows x86-64

dependency_check_updates-0.1.3-py3-none-win32.whl (2.7 MB view details)

Uploaded Python 3Windows x86

dependency_check_updates-0.1.3-py3-none-musllinux_1_2_x86_64.whl (3.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

dependency_check_updates-0.1.3-py3-none-musllinux_1_2_i686.whl (3.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

dependency_check_updates-0.1.3-py3-none-musllinux_1_2_armv7l.whl (2.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

dependency_check_updates-0.1.3-py3-none-musllinux_1_2_aarch64.whl (3.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

dependency_check_updates-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

dependency_check_updates-0.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

dependency_check_updates-0.1.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (3.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

dependency_check_updates-0.1.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (2.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

dependency_check_updates-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

dependency_check_updates-0.1.3-py3-none-macosx_11_0_arm64.whl (3.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

dependency_check_updates-0.1.3-py3-none-macosx_10_12_x86_64.whl (3.2 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file dependency_check_updates-0.1.3-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c31776da4f05e416a698e4fa85499a69bff7da79bd8b3a0e2da4afdc65704cbd
MD5 3ba2182781f9f52a42942f3f10925aad
BLAKE2b-256 2696d9bbe81ec555aa7bfbda8f42425606a93b75d98aa463682eb0e0363bf70b

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-win32.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 fa914f0bc038a1e995775f33bd053bedb6ab656b966d50547584a1f4104d9d89
MD5 e30e45810f96747f6dee08be78c873ae
BLAKE2b-256 3f021104996950895edb921f9add4d5835ae85ecd8db5e25779ce023d26a3d88

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7d50be1d63595147f2b7d2cd383f111d590be4ea7eac1ebcb30161657bff5748
MD5 42a85044afb54b68db4da4096b810baf
BLAKE2b-256 4f7fe4c2edd48af481294ec037e137f3525052307c984d3f031b4b8a1166fa76

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2116c683146f7c59832bba2d7c768d6f23af9494238e1742e9a6c7ecb9eae6c1
MD5 39c561fdb8e717eea02ac74b97a29f4f
BLAKE2b-256 c7456daf9dab3d36bb8fb3b3226b5d0a9671b2713c6ac94cf208d8dcea0350c3

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 12395b84b816f054b4671d6f7e4f91176cb5ce0d9db2db02a595c9164dfbc3db
MD5 ef04f19cb4aee71343bedfe2a991823c
BLAKE2b-256 e2a0f8e48392d7ae627b599adf8f438e4cf5c0b248ec7383975e854e8b2c2d9a

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da57705f025fac7f1e925c6cfd5d26dd025811e6edc250d6388d68aed25760a7
MD5 45426292764b20963093cdce7b670660
BLAKE2b-256 64e1392d510ab57928c8a9da41057c3be9ab3f2900ab336d1a09c967639bc326

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5f4f1e90fe428f84687596cc015eb0e8fa2acf1f3f54099a6537ec5a721343b3
MD5 961cf271b916d2990e75324a72b7a36f
BLAKE2b-256 f67b27a20d78a86c1d2e844c5af2c624064a012c4ffb9d180037cedc29940c97

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 15b538e8a2e365c86932d345f70535ac431097aaba4b26f9797188e3c89280cd
MD5 3d3297550e1de4f085806c1d863f94c6
BLAKE2b-256 c40f8bb7d3e16db819d46e9657d6a0af8088cbea202394c30227e12a06b0cb35

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 a60af7b238f35b73d869d789c2776eaf2d362360dde1fc0717a7968759542d96
MD5 27f297dc425e71a351b728fb101580ed
BLAKE2b-256 569b309fb1d3c2d8d53d25124a40eb1defbc2b7f592d1d5f29b872040079e606

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 25b15c83d6027de9e48109b08f4e3e64b6799a703d250405f6ef52d9749bb568
MD5 1236bf77795c04da70d44f9873740782
BLAKE2b-256 d6b24aeac0c3ec0d2df8fa96e9e4d21fc103558e9fab2b87ad05058ea0a2aa23

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f89b58b4238fa70906bc12a36f23c6ac43c77102b5c31ea7b390a45323685ebc
MD5 4a24368525a1ead89ac7ba00e0af0171
BLAKE2b-256 d32548bd96db7ce5855a5383092009cc0631f76828a973de61e19a2394187819

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e828fd05423ee11d147ab17ad68349d3864377e33d9a519d18005913d13a0dd5
MD5 98e5415fa95d7a9814ec1659e80eefad
BLAKE2b-256 c1988a1d0c68be674bf247769265d1847d2aa48d4f910ba39966c2215780e220

See more details on using hashes here.

File details

Details for the file dependency_check_updates-0.1.3-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for dependency_check_updates-0.1.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 eb28ded161987269c95dd31ef2a71da6f39d503bb8bec5e19083c3e76e52220c
MD5 f3804894a156132b1471449719654ddf
BLAKE2b-256 66374217ba84cfb184b1c8a8f07e4a2a7a3f62a21eeb733387f1c5985470db38

See more details on using hashes here.

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