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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

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

Uploaded Python 3musllinux: musl 1.2+ x86-64

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

Uploaded Python 3musllinux: musl 1.2+ i686

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

Uploaded Python 3musllinux: musl 1.2+ ARMv7l

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

Uploaded Python 3musllinux: musl 1.2+ ARM64

changepacks-0.2.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ppc64le

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

Uploaded Python 3manylinux: glibc 2.17+ i686

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

Uploaded Python 3manylinux: glibc 2.17+ ARMv7l

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ ARM64

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0ba27d6ea04b9397a8c8eeacf8ca6cb4e9ca081a1c74b39f90495e26114f8b88
MD5 6422b0d0b1b4bc07d2a02b115240e9e1
BLAKE2b-256 657b182ac6e33419e258a31fd3aa1c654ef1f00230f47538e2bab685bb967e9c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: changepacks-0.2.7-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.7-py3-none-win32.whl
Algorithm Hash digest
SHA256 00997b211af3419c53ba44aac4d16e77bf642046a5b3cf90250fe81a47e76931
MD5 64ab54474b32273440f70b7a6a4fc5b6
BLAKE2b-256 a35ecd864122fb8835d7eae698a3d7d8680500d291bdb9c2c5ab20e37d742d03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7ecb98f917ef65d0583ae0b3bccde3d73b42e355c7032f475dd925a07a2740b2
MD5 8d44e6507d5029ecf19d85475c52c6c9
BLAKE2b-256 21dfb9339ccdbd93348bfe25ba1b11b34ff7a1760519992f1a55ee5f7b3bbcd7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 105ab177421866e4fe4e1ab1b545a842b1404d94ed9c3d5bb60916a58e3ea15f
MD5 fdb9d7969a14a84fdf43b91d0d7c2390
BLAKE2b-256 e378f56f7a44e9b5ef6a9b6d4f9387782197ef21faefd03ac7df3697573caccd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3238abdd6921da80c8c619a872f4f33578f6b12c91d4b05fadcce6b3a83666bf
MD5 89d5a556397bdc9447d0c5c427b6916b
BLAKE2b-256 030913a1027b515ad112f2015748996814fd5173d0e0eeef77be741656200978

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1ef6d61442300ab1b0c80d597580521699e2ffc23d3f7dd33022db1adf40c9c9
MD5 217db7105c8d51a3593a7974a83d09ac
BLAKE2b-256 4f03e77babf12ef47b80b9fae2140ed01c4ac624578b2182c623fe78e79a3219

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3bc2294fa0079e3d2df009658b8fb882ac7cef1222711ee9d050b97f4ce3304f
MD5 5363a3833b52745066961a6e8156f03f
BLAKE2b-256 477a69ad61f82b23055f998e8e3dcd45bd10681b9676138964c2b3fb7e358f53

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 38c39bc25e8389eac49d30eda0f22d84651d064ec58592908bec24184158ac37
MD5 eb9765ee56452f219bb4b8739603226d
BLAKE2b-256 f89dcbd3697056f33160d9aee5ac45e3ff86366ff6d2cb46b4c1a26efbe21c14

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 558321685a8eb8b698db954c609ba80db3e332f4ffd16cb29ad40d0c8bde6d81
MD5 e46cf6ea66517e338c502963f4b0da45
BLAKE2b-256 8e544fc8858d97b5ce994601ba5fa0c5b413f9c3e4c209c5f467752db7b21ba8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 58bb0fed237afa960cb2b9d61aa5b2becc0b3184a0eb182196a0aaf77f561805
MD5 9f715b21e017dcdc32a32cce8cae8e61
BLAKE2b-256 07b0f5417d0dad0b015bbbed59a2da153d8244d0f80a8e38873a979a5e608112

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 11a365a3e284426b8e285474613d9b0444ea39d3022ab323c56959826f89d6d0
MD5 3cd4978b80c4604ea08cc286330d4192
BLAKE2b-256 e51afa6bcf67d87d7678a9692e691e41539ee5055349a985419fdc04a9d55f6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 184d4b5bcdc1b3e42fa7a99368775562f31f0215146df87d520a362218d2f794
MD5 89ed9caf19892ce399c089830251a799
BLAKE2b-256 a2589374beffbdef2a64390b19dc5142f0846b941266eb7e3d5c9a575f77a9bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for changepacks-0.2.7-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fcf4a7fe54f987fc407c7a24a15736999e5207b3ee34b328bdf9eaf6236ec6cc
MD5 3e1e8b130ecbdf6fbbce33047ccf2b16
BLAKE2b-256 e2d17f4ccc7a174a62f57822aa63f8490577ced019a2275c640259ae6a0e4795

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