Skip to main content

No project description provided

Project description

changepacks 📦

A unified version management and changelog tool for multi-language projects.

Overview

changepacks is a CLI tool that helps you efficiently manage versioning and changelogs across different programming languages and package managers. It provides a unified interface for managing versions in Node.js, Python, Rust, and Dart projects.

Features

  • 🚀 Multi-language Support: Native support for Node.js, Python, Rust, and Dart
  • 📝 Unified Version Management: Consistent versioning across different package managers
  • 🔄 Automated Updates: Smart version bumping based on project changes
  • CLI Interface: Simple and intuitive command-line interface
  • 🎯 Project Detection: Automatic detection of projects in your workspace
  • 📊 Status Tracking: Track which projects need version updates

Supported Languages & Package Managers

Language Package Manager File Status
Node.js npm, pnpm, yarn package.json ✅ Supported
Python pip, uv pyproject.toml ✅ Supported
Rust Cargo Cargo.toml ✅ Supported
Dart pub pubspec.yaml ✅ Supported

Installation

winget install Changepacks.Changepacks

cargo install changepacks

pip install changepacks
uv add changepacks
# run
uvx changepacks

npm install @changepacks/cli
bun install @changepacks/cli
pnpm install @changepacks/cli
yarn install @changepacks/cli
# run
npx @changepacks/cli
bunx @changepacks/cli
pnpm dlx @changepacks/cli

Requirements

  • Rust 1.91+ (for development)
  • Cargo
  • Git repository (for project detection)

Build from Source

git clone https://github.com/changepacks/changepacks.git
cd changepacks
cargo build --release

The binary will be available at target/release/changepacks (or target/release/changepacks.exe on Windows).

Usage

Initialize Project

Initialize changepacks in your repository:

changepacks init

This creates a .changepacks/ directory with configuration files.

Check Project Status

Discover and display all projects in your workspace:

changepacks check

Filter by project type:

changepacks check --filter workspace  # Show only workspaces
changepacks check --filter package    # Show only packages

Update Versions

Update project versions based on changes:

changepacks update

Options:

changepacks update --dry-run    # Preview changes without applying
changepacks update --yes        # Skip confirmation prompts

Check Config

View the loaded changepacks config (from .changepacks/config.json):

changepacks config

This prints the merged and defaulted configuration, for example:

{
  "ignore": [
    "**/*",
    "!crates/changepacks/Cargo.toml",
    "!bridge/node/package.json",
    "!bridge/python/pyproject.toml"
  ],
  "baseBranch": "main",
  "latestPackage": "crates/changepacks/Cargo.toml"
}

You can edit .changepacks/config.json to customize:

  • Files/projects to ignore (ignore) using glob patterns (default: empty).
  • The base branch to compare against for changes (baseBranch, default: "main").
  • The default main package for versioning (latestPackage, optional).

If the config file is missing or empty, sensible defaults are used.

Default Command

Running changepacks without arguments starts an interactive session to select projects and create a changepack log.

Project Structure

changepacks/
├── crates/
│   ├── cli/          # CLI interface and commands
│   ├── core/         # Core types and traits
│   ├── node/         # Node.js project support
│   ├── python/       # Python project support
│   ├── rust/         # Rust project support
│   ├── dart/         # Dart project support
│   └── utils/        # Utility functions
├── examples/         # Example projects for testing
├── Cargo.toml        # Workspace configuration
└── README.md

How It Works

  1. Project Detection: Scans your repository for supported project files
  2. Change Tracking: Monitors file changes to determine which projects need updates
  3. Version Management: Provides unified version bumping across different package managers
  4. Update Coordination: Ensures consistent versioning across related projects

Development

Build Workspace

cargo build

Run Tests

cargo test

Lint Check

cargo clippy

Run Examples

Test with example projects:

cd examples/node/common
changepacks check

Architecture

The project is built with a modular architecture:

  • Core: Defines common traits and types for workspaces and packages
  • Language Crates: Implement language-specific project detection and management
  • CLI: Provides the user interface and command orchestration
  • Utils: Shared utilities for path handling, version calculation, and more

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Sponsors

We're grateful to our sponsors for supporting changepacks development! If you're interested in sponsoring this project, please get in touch.

Used By

The following open-source projects and companies are using changepacks:

If you're using changepacks in your project, we'd love to feature you here! Please open a Pull Request to add your project or company.

License

This project is distributed under the MIT License. See the LICENSE file for more details.

Roadmap

  • Node.js package management support
  • Python package management support
  • Rust package management support
  • Dart package management support
  • CI/CD integration support
  • Plugin system for additional languages

Support

If you encounter any issues or have feature requests, please let us know on the Issues page.

Inspirations

  • changesets - Version management for JavaScript projects

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.

changepacks-0.1.21-py3-none-win_amd64.whl (4.0 MB view details)

Uploaded Python 3Windows x86-64

changepacks-0.1.21-py3-none-win32.whl (3.7 MB view details)

Uploaded Python 3Windows x86

changepacks-0.1.21-py3-none-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

changepacks-0.1.21-py3-none-musllinux_1_2_i686.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

changepacks-0.1.21-py3-none-musllinux_1_2_armv7l.whl (3.8 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

changepacks-0.1.21-py3-none-musllinux_1_2_aarch64.whl (3.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.1.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

changepacks-0.1.21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

changepacks-0.1.21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

changepacks-0.1.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

changepacks-0.1.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

changepacks-0.1.21-py3-none-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

changepacks-0.1.21-py3-none-macosx_10_12_x86_64.whl (4.0 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file changepacks-0.1.21-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 c371c3fe38c4d7b8e5881525a8a18ec2349a7c1e1482e99da6c8db3d4186974f
MD5 f61625c37209d6a265c4d9b265ef738f
BLAKE2b-256 a68c8bea490dc54d9705f3248eb44dfc25edd43130b98d7c3ea6903d04c6d4bc

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-win32.whl.

File metadata

  • Download URL: changepacks-0.1.21-py3-none-win32.whl
  • Upload date:
  • Size: 3.7 MB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.6

File hashes

Hashes for changepacks-0.1.21-py3-none-win32.whl
Algorithm Hash digest
SHA256 5e33c674a6846e08a26c96244a5777b6f2bb82d832d2dc08560412c73db4d11a
MD5 222cfedc060f69c8597336dfa79a2108
BLAKE2b-256 9adad553775082fdddb6740232fb0af4c59813de95df4c4afe3759d4816a4caa

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c3552df0c45d7d05d596978a53713bffe73e13ff25b82535e6c01acab296afef
MD5 5ad64c6ea1b6738278d4853306703bd2
BLAKE2b-256 8c4cfe0e582524e5382962c1befb2a09e947fb55d8b014ccadb776403380dd4f

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 bc107e50f4580e8745407fddbfca278c36fb35f13c74c81d25a37e8dffefe326
MD5 918b5e87c8deeab4762fe167d1824805
BLAKE2b-256 16130162c77dacd2ebcad209ca045a926a942d6f7735e402983602bd1c60971e

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 37c8ca1ee0003aaa1b81a46cd47b5055b0204362dfae56c376001c2a287bf249
MD5 5414bd10dc76e36d0248282a478a4132
BLAKE2b-256 5058176d046e04f955f19a52b755ace4b7c6191ec9f6326a2da00e878e531cc8

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bbda68e8b9dd2e66ab92e7a4f56344bf0895a080743dd5feb8cc67f5615c298e
MD5 84ff82db7652c773330ef9dc3ad7ec36
BLAKE2b-256 2b5b7ece2386334e3a5e1633628b13e6d7e38e92a3fea9d10ce606922fb6c075

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d12bc5120a39422e05a2d7a70d2ed6c53aca3cbd62e626f79eecf05b5cf48ef
MD5 68982b379f4b52b2bfa68885f97a913c
BLAKE2b-256 6348d7a28e6230e2e49980ce02de46696d85f0a712c5032a4a81a6b54d112a08

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 9956a1e5c85071a314564e142bd56e7dbd6c7b1a5c9901efb74b176b0eb26bb4
MD5 fa911db995030a8f4741e5caef46e043
BLAKE2b-256 ce5f841e12f6f84495a38d0d98a421691daef8201e1db3aba8e6369524c9e160

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 08c29c934472562a4be0c1f27a4ec9490cb30f5e6a19afc4325fe6de79037a6f
MD5 b4702e4f49b67c5ff556451d269889bf
BLAKE2b-256 3a1902f5df8f6fe51ecfee105035b5ab675b1eab36cf75c0c176847c076b870a

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6c8d8dff818684d8d74c0c7ccba5f1dbd3207e5e6dffa199ed7fd2d734159412
MD5 185c994a154153e16b91b1193dde8f38
BLAKE2b-256 d81d8d1c8dda89f03ae38e23e033be253f560edf48426017ae8e7310dc69c949

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 931930c4b23d949cefe8c65078998e276f9ee037226cbbfb25927c1778c3bd48
MD5 72af053e13ce75d2c12a78db6362e0fa
BLAKE2b-256 71043d1d3f989da1fbd7de0d335c3ed5ab1129e41ba70e7e1526ba7e35bc93f1

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 73d855e0769336dbe546a62ac798bf5181e22c3a68e2288d6e73e287cc46918d
MD5 cf24d93216dfeadd4000dd3aecee99ce
BLAKE2b-256 7337cc134a7950945cc3a2e67206ef9c161e90fff503b8ba399a135e05a9b16a

See more details on using hashes here.

File details

Details for the file changepacks-0.1.21-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.21-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f293376b68b85d5ee5829163d35ad145396abce7907953fe2566b509b591cabe
MD5 2ad9db9984e1543f113fea7b8c26d2dc
BLAKE2b-256 28002ffd03cc9eb2a33b75d347645f26ea35594800c39623d3a34ebac4417e99

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