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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.1.24-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.24-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (5.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

changepacks-0.1.24-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.24-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 6fb99a79bfb1e807b77fe6c3282ca8b6583955ff750218ff4bcb96f2c21cad7b
MD5 722fee4950766e9ac8b44d57ad4681e0
BLAKE2b-256 f72c040db7c8f0abdbe5a1c4c2a5f09dbf18e65dee8d46ca97a812aea19d4b17

See more details on using hashes here.

File details

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

File metadata

  • Download URL: changepacks-0.1.24-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.24-py3-none-win32.whl
Algorithm Hash digest
SHA256 df7629c5a042df14a179a0b99372a0891eb348d24a54526e1d9500b1d8bd0e3d
MD5 f576106c0e5253429f67f1ba9e7501e3
BLAKE2b-256 e7843ee5f91e6f71a67371856998b5cb0329e2cd2c59ffe8321f0a2976a5481b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c90f6da3e26c3b031949f5491f8f5d6f1bcf2e51b566b932124693a99496c5c8
MD5 9fa01123f69f8ff23596a1b757f56d21
BLAKE2b-256 c6912e9eb782e6f22f29c276e01b0803dc8b9de55198548d402700e4555894ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b944b0266fa01fed7b74b00dfabe954225571d344f07e129fff43d500f8e9b8f
MD5 ee8dab284a9f8a5d98150e43a4c131fc
BLAKE2b-256 6f721b28c0587419c2406694ef5f11688b2ccd7f81880e0d673c73a4d9150e46

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d9fed2ff42de0578c47ca8739683878a282c4282d1cb764b660f4dfa52643fcb
MD5 0c1f2aaf4646b07af0cacb91cba4742f
BLAKE2b-256 34d13e76981722f06eb2fa77fd8b8c8bc2b24ddfe846d8083c27cb525da4fb38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ffd85a62c706a016cc2d7d41b9aaaa2c492c243ad97c47d0b7846d27f8be946a
MD5 9830afebe8d1c6c03bb2190330c3a9fc
BLAKE2b-256 973034062bc8201cf49d03b0ac157bfe10e24d79c0574603e331d305e08332e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cdc77429bb54cfdfc41c002018526d4406e9f6319cb59f755538b2f839d03b5c
MD5 ac9036a46c818c28824af95a592a613b
BLAKE2b-256 1166ef70350174a885c39d4334c6be344d37d86b80cb0869fd4484a99bc611d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 feb9d8c8ef7d934bbf3ad3b01ac0184b19411e37bb653ae70ebefa2f224cc517
MD5 be8f6f2eeddd567d7384e9634415c947
BLAKE2b-256 932674d4dfe19b1d46d86fa82ff816d9fea9673a57ea7cf2b786aef288f1696d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 0c04ab9e69ad4c3112d2eaa1d909e1c7daa4d18dd015dd1478fbea6538b7b92d
MD5 a80f59c862b3cb67817d7b5f79bcfdb4
BLAKE2b-256 65994da498612fea51d6f01e98baa64ed34d14f1dc54d0e5388d21b5f9a581eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 3111817c83130cf52b355071352e4e331ca6b309b5893252cc462989bf48712e
MD5 79b0ccc31d35333bee7da96ac82353f3
BLAKE2b-256 c263a34037f24f5a80cd26ac1d12c7d0b365eb657d4d2063627c2a576c212a5a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ba12c31520e91a6deb365f3bd1b55fe9e1baee46d4056a3a19a2715083a5d2b7
MD5 fdb0639b40b3d1556ffcc7f28c7a7ab7
BLAKE2b-256 32210063a2710d8eb7988814fec53ebc6380d1893de601176859ba1ea533661f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f153dc82a96479b26d6e2c075473683858b1162e744237b50e47db23f33985eb
MD5 e68b7c38073026a17ccbecbb6d9a5312
BLAKE2b-256 08c9b658c0131a98b2306cf125b61407b8319d3b0edfbe2daef9020ab6c1292e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.1.24-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1e4a4b634efa7e60b752588f7a932e3db51c2d5d3c3972553045b39bf79ebe7b
MD5 f55859d99e8d7e4ed09597d1a444b9e1
BLAKE2b-256 e2e2db6a133759e9209e2b7fcbc3bc93a294fefd3d7987387aa3189c30e6c5f8

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