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

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

Uploaded Python 3Windows x86-64

changepacks-0.1.25-py3-none-win32.whl (3.8 MB view details)

Uploaded Python 3Windows x86

changepacks-0.1.25-py3-none-musllinux_1_2_x86_64.whl (4.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

changepacks-0.1.25-py3-none-musllinux_1_2_i686.whl (4.4 MB view details)

Uploaded Python 3musllinux: musl 1.2+ i686

changepacks-0.1.25-py3-none-musllinux_1_2_armv7l.whl (3.9 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

changepacks-0.1.25-py3-none-musllinux_1_2_aarch64.whl (4.0 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.1.25-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

changepacks-0.1.25-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

changepacks-0.1.25-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl (4.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ i686

changepacks-0.1.25-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (3.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

changepacks-0.1.25-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (4.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

changepacks-0.1.25-py3-none-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

changepacks-0.1.25-py3-none-macosx_10_12_x86_64.whl (4.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 41464538c9596d51c2e747a85be58ab7c965267aaa7f2c9cc4bcb9ff25c45cc9
MD5 5d1b60dade3e63919401470acb408e04
BLAKE2b-256 7fdcdad828caee674463c995eed5f22513167c2e1b0587e6ad0c79e5b4f89caa

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for changepacks-0.1.25-py3-none-win32.whl
Algorithm Hash digest
SHA256 00939c131df450ff3004f04aae85da88945b668d08887de23bc6236d9718dbd5
MD5 d8085e36aa8be7d3fcae13bc92c1a8dd
BLAKE2b-256 3fc62ae926fc8ba9d2d37a93b9e82d24ed157a13d129f9ab88c24d5ee1bb95ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0516301ac8b94c00f9208ccd6403beace2645cac2accd9eb59e7fcc0e8bef3b8
MD5 ac8c73fea785c6a681e0d0d088254d3c
BLAKE2b-256 f960982451f7d024aa592b42db14525b7efce1679d1e570fa39327cb61d0dabe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1dbd49f5ba35344652cea15960d282032315f3a1e99ab4c44a48cced3c81b624
MD5 26499d70fadb8267977fac6cdef2511c
BLAKE2b-256 1c4ac7be75419d6f8df1bafa1c73d7c3eea29dc3b09d728ebf8a8889d0d146e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 19acacf5b2069c4ccd503192a274aafb45e731ca33ce3ed6d8f36c1f58387bdb
MD5 1ac63d8dd627ede4e86fc9074037a97c
BLAKE2b-256 176f7ed1b8a2ea2ed1e32ea33c8e9e72b6b66c33e94df5ac14f3de5bd42397ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c4d14fba3f999e57834833b9aa51ca19a2ee2c4d67d97e211270077c7a808be9
MD5 a2e1fbce810bf739ea3ff5be89c29b71
BLAKE2b-256 1ebdbb525d66d7aac9befc4754819a4499aca1beedea290583af7fe6c41e2a31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8b7b4fd4a9c5cb838b5dff2e60b070b1dfcca98b6419a1a572fbc3289b4bb945
MD5 03edd604413139f47928478437b33bf3
BLAKE2b-256 3a8cc65c5d9efd7676acc541a71199be44669c12e1c0b9fe6462c4cbb124e4fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 5b48adf06501addab5b98cb731ee69364ceda64a36bffecc919158371ba0e532
MD5 1f0fa1a3dc556846f3bba0a2d1e1d98f
BLAKE2b-256 f4929f4feb45f60e804155563c91bc5abaece7a87929a1e3c9aa64251a772d8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 2bc025f48590c73be0dfbc6788cf2024164ee591706f73e00ed43364f01cf5d3
MD5 7ebb973b024b6754be0cae5580daa240
BLAKE2b-256 2006655e3f0abba7bf30623a04f1499366b473079c3d8f85cdd2f6a846ec6726

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 a7778c8ee0f426fd35c94a963ccfe48820194fa9e135855d3745247bb1bd0c3d
MD5 1d6367ad59647eb6ea94133c2c386fd3
BLAKE2b-256 1de170478d61e259bd0ace1defec026d88f7deeaf2db72aabb79914e6f0de077

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c544ff6e15f8e80860d094a9dddfc774a9845b9838814c75a6de1dbb22731b8b
MD5 afb0ab3992fa8e2a5f7b0aa90dce875d
BLAKE2b-256 aa7c45f5d88e480c0b2d2a1dcd2f530fbe919a31461d07a445a775a2cd2f09f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4da4240e154ead3c8fe87cf9b153b32a53349b4d6cc7d3aaa28add80bccaa561
MD5 3c60dc30cbce8b585bcd07c284a35f8b
BLAKE2b-256 1bc59d476929fd378c02b54283a866ad013e0fb6d64c802364bccc220baf8561

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.25-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 58919291f3560f263e2cf4d318cb7879af057806febd8bd96fe7352a7485e3bb
MD5 cc1e8bbfdc1e3d74cb5b3f19c023e20e
BLAKE2b-256 abf9bbad06ddc036731d36f5018c411b72cc8f6fe30617b4277d01cad89537a2

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