# GitScribe
- A tool to help you maintain a changelog file in your project with semantic versioning.
## Installation
### Requirements
#### rust toolchain
- install from rustup:
### install from cates.io
- `cargo install gitscribe`
### For A Better Experience
#### enforce the use of Conventional Commits in your project
-
- you need to install the pre-commit tool first:
## Usage
```sh
gitscribe --help
```
### setup your project
```sh
# go through the init process to create a new config file
gitscribe init
```
### make a new release
```sh
# depending on the changes you made, you can use the following commands to make a new release version
gitscribe patch | minor | major
```
behind the scenes, it will do the following:
- if no config file is found, it will create a new one
- update the version in gitscribe.json
- update or create a new changelog file
- default file name is CHANGELOG.md and is placed in the root of the project
- add and commit the changes
![failed_patch](./images/failed_patch.png)
As seen above, you must have a clean working tree.
Below you can see a successful example
![successful_patch](./images/successful_patch.png)
With the default configuration you get a new markdown changelog generated at the root of your project and new commit on your working branch that is a `chore` commit with the new version.
This tool will **only** output valid commits following conventional commit spec.
### Setting aliases
to make it easier to use, you can set an alias in your shell configuration file
```sh
alias gs="gitscribe"
```
## features
- [x] create a new changelog file
- [x] create multiple changelog files for different output formats
- [x] sync other package management files (pyproject.toml, package.json, cargo.toml) with the gitscribe.json version.
- [ ] more to come..