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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.1.22-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.22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.0 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

changepacks-0.1.22-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.22-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 ec5c385b605092ff69a9dec6fc89b241071d23c468df79bd93a7fd4a7cb05a09
MD5 990c618fe6061c53183eca591673f815
BLAKE2b-256 52295c7eb4fedf922d0574c0eca533ada679294532422165e4f0c88c1f9f1961

See more details on using hashes here.

File details

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

File metadata

  • Download URL: changepacks-0.1.22-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.22-py3-none-win32.whl
Algorithm Hash digest
SHA256 ecbc417c8395ca971026236a607d76b39b2e6e795348a0d664d0269f3252f5ab
MD5 8c13be27866c4eae9497c62455d427bb
BLAKE2b-256 e5e9b6f251ae4c99f8e73bf0d92ac8208f96d9252e7a833eb10abdc39862d247

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ac5129cb5a0d0cbaac301842cefe8933b127040c2b05302ec76b274a6442c671
MD5 cf7c83a2a58e136ff7e9414901a4f590
BLAKE2b-256 79853fb0469d012a7c3488c5d82f8db70c9617ffee6a600fa588bfae00a232f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 3590a02b11d4b374b4d1240359aec696803b18fc09084018290e9981aaf6efe0
MD5 53b1139bf250dd740f363348e447a417
BLAKE2b-256 768625293cf282595281b7421fa6f7f835af43c08e164786e19f1e30e6660871

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7362ffd60efb7284caad0ce66018f7e96338c81105629ebcb2e7971e3d85daed
MD5 7bcc065dc51198815db7696035e16455
BLAKE2b-256 c5994322a21b331cdf24ed789201f80bb3ce84f143061c807d308d6177706f49

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 26e94a8c84ed0df4fe53221fbc432979a22dde1466966860323b7c6293571aba
MD5 0ae55d383cfff681035a76c7f76df1d4
BLAKE2b-256 e8328a7d559abbedb7682bf32525408cc7185ab516271dfa196d7243e8539d2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8909a68ada33b62bf19ea56f09cab841cb509adca8b3545de9d0abd76974ba90
MD5 3923711c4e889dd916004d252f8f7324
BLAKE2b-256 4dfe9feefb0e9475aa76842c5368ea8ed6453bed7144bff281f5ca11e9c0acea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 da2675b239f1603a9c490245cc5a92ce15d60dedd13a1dd39ab8df831efbb103
MD5 7342bc5554b57e025bdc7a02155db88c
BLAKE2b-256 5a4ba9c68b38b46042e461b41583626177973d04d2eb3681dc67d7ce92d17eba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 03bc9a27419ea4edf40814ca393d4134c88dce1909aaf70bfdf14b65d8dc8720
MD5 d2eb74a615a6ee514d9edf14e8c8c150
BLAKE2b-256 624e58aabf586bf9bd6caa51cbdb0991f6f30c8e99baf6bdd3eda3c68e46ead0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 381d1209cde94af978064a397ab9bfac8d56f5edbd3bfdf75dd3d00755bf8672
MD5 8430223ab915674aa459c582726aba38
BLAKE2b-256 8b7322d9eb741ab2cb7a9c845711c0b969ce54ce7ceea767b478f489a4a91c4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 685cc36b594ca03227e66a30bc08982a12d4f1081a9593c3c7aacd56d5dd242c
MD5 3e3360c08e53df4811310868247af4cf
BLAKE2b-256 103de652157294e383c0b9e982ccecfec26ed74c5027c1b70b15d13b834c0f74

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9327cad3f9a9d5fdf216d30c4692abdcaa68d1b8f739b374af447cc93d61b5ef
MD5 a760ff83114664a4934005bbeb74880b
BLAKE2b-256 b6a8a5b18074cc6384a32c2e9020ebd6628d74cc85cb17fa45906aeaa5a557db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.22-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a99b6871db97dddb740d4ce3cf9fab9febccef86f8fd931b3fc6f9f3c5d8b854
MD5 4f84e3f23d45b96dc96c24a3a76d8b68
BLAKE2b-256 267f5aee0f641be58d168e72d091b48600961599490b68cfe152c34605b4ca25

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