Metadata-Version: 2.4
Name: changeforge
Version: 0.1.5
Classifier: Topic :: Software Development :: Version Control
Classifier: Programming Language :: Rust
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
License-File: LICENCE
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

<p align="center">
    <img src="https://github.com/ricardoleal20/ChangeForge/blob/main/docs/img/banner.png" width="100%" height="100%" />
</p>
<p align="center">
    <b>Tool for teams that manage the creation and modification of the </b>CHANGELOG<b> based on a specified set of changes.</b>
</p>

![PyPi version](https://img.shields.io/pypi/v/changeforge?style=flat-square)
![CI checks](https://img.shields.io/github/actions/workflow/status/ricardoleal20/ChangeForge/rust-ci.yml)

## Installation

To install `ChangeForge`, you can do it through pip:

```
pip install changeforge
```

Please consider that it requires `Python >=3.9`

## Quickstart

1) Initialize configuration (once per repo):

```sh
changeforge init
```

Creates `changeforge.toml`, lets you enable 🤖 AI messages and 💾 commit‑after‑create, and optionally generates the CI workflows (`.github/workflows/bump_version.yml`, `.github/workflows/release_on_merge.yml`).

Example `changeforge.toml`:

```toml
[changeforge]
version_path = ["pyproject.toml", "Cargo.toml"]
changesets_dir = ".changesets"
changelog_path = "CHANGELOG.md"
ai_enabled = true
templates_dir = "templates/messages"   # empty to disable
commit_on_create = true
```

2) Create a changeset:

```sh
changeforge create
```

- Select the change type (MAJOR/MINOR/PATCH) and a tag
- Pick a module from Git changes or the filesystem, or type a path
- Changeset message: AI (if `ai_enabled`), a template from `templates_dir` (if any files exist), or manual text
- If `commit_on_create = true`, you'll be prompted to commit the changeset and the selected file

![Demo Create Command](https://github.com/ricardoleal20/ChangeForge/blob/main/docs/img/demo_create_command.gif)


3) View pending changes and next version:

```sh
changeforge list
```

This is how it looks the view

![Demo List Command](https://github.com/ricardoleal20/ChangeForge/blob/main/docs/img/demo_list_command.png)

4) Perform the bump (updates the version and `CHANGELOG.md`, clears `.changesets/`):

```sh
changeforge bump
```

For more options:

```sh
changeforge --help
```

## Optional CI

- `bump_version.yml`: automatically creates/updates a bump PR on `bump-new-version` (reads paths from `changeforge.toml`).
- `release_on_merge.yml`: creates a GitHub Release when the bump PR is merged, only if it comes from the configured bump branch.

## Contributing

Everyone can contribute. Before contributing, please read our [code of conduct](CODE_OF_CONDUCT.md).

To contribute to `ChangeForge`, follow these steps:

1. Fork this repository.
2. Create a new branch.
3. Make your changes and commit them.
4. Push your changes to your fork.
5. Create a pull request.

For a more detailed guide, please read our [contributing document](https://github.com/ricardoleal20/ChangeForge/blob/main/docs/CONTRIBUTING.md).

## License

Project Name is released under the [MIT License](LICENSE).

## Inspiration

Inspired by [Changesets](https://github.com/changesets/changesets).

