Skip to main content

No project description provided

Project description

changepacks logo

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

Publish Packages

Publish packages to their respective registries:

changepacks publish

Options:

changepacks publish --dry-run           # Preview what would be published without actually publishing
changepacks publish --yes               # Skip confirmation prompts
changepacks publish --format json       # Output results in JSON format
changepacks publish --remote            # Use remote branch for change detection

The publish command will:

  1. Discover all projects in your workspace
  2. Show which projects will be published
  3. Execute the publish command for each project (using language-specific defaults or custom commands from config)

Default publish commands by language:

  • Node.js: npm publish
  • Python: uv publish
  • Rust: cargo publish
  • Dart: dart pub publish

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",
  "publish": {
    "node": "npm publish",
    "python": "uv publish",
    "rust": "cargo publish",
    "dart": "dart pub publish",
    "bridge/node/package.json": "npm publish --access public"
  }
}

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).
  • Custom publish commands (publish):
    • Set language-specific commands using language keys: "node", "python", "rust", "dart".
    • Set project-specific commands using relative paths (e.g., "bridge/node/package.json").
    • If not specified, default commands are used (see Publish Packages section).

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.2.4-py3-none-win_amd64.whl (4.2 MB view details)

Uploaded Python 3Windows x86-64

changepacks-0.2.4-py3-none-win32.whl (3.9 MB view details)

Uploaded Python 3Windows x86

changepacks-0.2.4-py3-none-musllinux_1_2_x86_64.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

changepacks-0.2.4-py3-none-musllinux_1_2_i686.whl (4.5 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

changepacks-0.2.4-py3-none-musllinux_1_2_armv7l.whl (4.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

changepacks-0.2.4-py3-none-musllinux_1_2_aarch64.whl (4.2 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

changepacks-0.2.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

changepacks-0.2.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (4.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

changepacks-0.2.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (4.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

changepacks-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

changepacks-0.2.4-py3-none-macosx_11_0_arm64.whl (4.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

changepacks-0.2.4-py3-none-macosx_10_12_x86_64.whl (4.2 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 058774110384b486c434a03be57a77756ce43b48f009606a953f87d6bcd404ca
MD5 9da7181613934695e810951d60ab60f0
BLAKE2b-256 b5a2330bb69770991b124931c4d0bfc53d575fc4bfedf2fea3197c14fea352ab

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for changepacks-0.2.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 b8c879d720fcbc17c836c5bd15c07a9a9415f4a7e8240d6ac7c5db80360dabee
MD5 de22e366c9d1e6e2250707f318399717
BLAKE2b-256 3918d8f4ab78b27d8447cd65ff26acd738808ec7cbe31907837e24f8c5a65059

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35cb8a72bbc89eb42ef31b07476229f543f4873a3779b106210089c7b6a8cdf5
MD5 2417db8de4f33b9cecef2b811e58ba8e
BLAKE2b-256 3c2833cf4ea7c6a0b1c160d74fb4ce8fda1528055224fadeb35e0d04eb27b130

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ffc89b9cd53fb712fb96406083cc77156b5307eef8e3666852cc7fa8661f65fd
MD5 67c613f04300fcc40f52f5ee2f2e0936
BLAKE2b-256 9accae6a511d80b86e96a8d9194558f00acabb864c8e36df0607514f9991f594

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 56bb6089a761151ab4a3664426bd68f46e5a2f08ff26d5632bac406c3687ea13
MD5 cc59836732023762f19877e3acb8f45a
BLAKE2b-256 4d98a2e5dea90c7d5afe94fedd23b07cb0bdec29e3ee2923f610466de835602e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d1e517669fc6eb2531d784abe4e2e06ff2fe57d5f03f16e63b4432f0b58dfac7
MD5 a9d280e9bcbe67a5db1a4c8be7791d19
BLAKE2b-256 7ae77a3626bf5d755ebdd7ca6081755e622681c5ad8a46d769c427bd1b99c90d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6203112a5c8458632b527938edccf07cd6cc67501e1feae5b618c85ba4db2306
MD5 4869dfd3c215a93c828b81b7b1ae51ef
BLAKE2b-256 ae0bc0caa1d9435851bd2bbeb2953d1e0cbe6bed6c913d415444932be72116fe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 29583fb4892fec3293bbcc75e136e23a073eb03af5b23c40aec160c369545b73
MD5 d1d912af4993a597273c84cead605a7e
BLAKE2b-256 11c65851c479f0abe8a99e21b33b5c14eb0566fedf91d21062b0f71d11f08146

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 e6bd4810ac6f0d26dc27154ae202ee1f4dddae46baec831d28f06384230a853e
MD5 69e3b5c87063f3958509e74f2e648a69
BLAKE2b-256 3c17b4192f236de47aa2111b2f2ed809d00fe355c9ef9d9a0e064a91942a7951

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 bb09a376daac41e9333f4ae135d96a6a1894848604378fb71994aeb4bdbf2f93
MD5 a657a867d136585aaeda7846f39fc6d4
BLAKE2b-256 0333165895ec990b03fd9052231074cfaf1db01645c7c79f52f2767afd9508f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 447ea3210fc74a8021452884f5734aef802b1af09b246122d226a35db767a0a5
MD5 9d1e47877af0b0b8f42ef8bb451e1e23
BLAKE2b-256 8fa319dd973504be6ee5a5d91ba553e5efa1b1127aeede94fa6be08bfcbec916

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0a56d775d1dc23413f81e00f76d770615f14dbed6edacd3d269375939d717b0a
MD5 87546868f60aca8dcc79ae375274d477
BLAKE2b-256 48dc490424230e6929a5b0cb7d760a0fdd0f27117cef2715705d15cc6ebddcf0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.4-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0d1a4c277f9f64339dc6a4497830681d2eefd21418ddaf743916a2af7cd4cd22
MD5 dbb405f4f148aa7a7d1f6a2fc7931dcc
BLAKE2b-256 6e1380074c3680bb5b4e72846c296021f5b072c8e31baf0d7fda000f3bdd48eb

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