README.md
# `changelog-go`
[![changelog](https://snapcraft.io//changelog/badge.svg)](https://snapcraft.io/changelog)
[![Go Report Card](https://goreportcard.com/badge/gitlab.com/l0nax/changelog-go)](https://goreportcard.com/report/gitlab.com/l0nax/changelog-go)
[![Maintainability](https://api.codeclimate.com/v1/badges/49aa4776dd7cc094658b/maintainability)](https://codeclimate.com/github/l0nax/changelog-go/maintainability)
A Changelog Management Tool written in Go which is compatible with Linux, Windows and Mac OS-X.
## Demo
[![asciicast](https://asciinema.org/a/291463.svg)](https://asciinema.org/a/291463)
## Motivation
Think about that: You have a Project where you work with other 4-5 Peoples. How do you track changes so that they can
easily added to a Changelog File?
This Tool helps you to keep track of you Changelog (and changes) and its fully
compatible with (eg.) the Git Flow. This Tool does **not** aim to replace Tools
like _Jira_ moreover, it extends it. Create Changelog Files easily with one
Command (`changelog release <version>`).
Feature branches can contain Changelog Entries and can be merged whenever you want!
It does not break the functionality.
**And** this Tool does _not_ disturb any other Tool (eg IDE, CI/CD, Artifact, ...)
## Features
- seamless integration into your Workflow and CI/CD environment
- works with Git, SVN, ... (every version control system)
- highly customizable
* `CHANGELOG.md` output can be easily changed without writting any code
* for internal and OpenSource Projects
- MIT license
- wide range of supported (and pre-compiled) Operating Systems
- keep track of changes made in your Project
- generates a changelog exactly the way you want it
- _free_ and _fast_ support
## Installation
There are many possibilities to install this Application.
### snap
[![Get it from the Snap Store](https://snapcraft.io/static/images/badges/en/snap-store-black.svg)](https://snapcraft.io/changelog)
```bash
~] snap install changelog
```
### script
You can also install `changelog-go` via a shell script:
```bash
~] curl https://gitlab.com/l0nax/changelog-go/raw/master/install.sh | bash
```
### RPM/ Deb
```bash
### (1) download the file from https://gitlab.com/l0nax/changelog-go/-/releases
### (2) install it via
~] rpm -iv PATH/TO/FILE
# or
~] dep -iv PATH/TO/FILE
```
### binary
1. Download the binary file from the [Release Page](https://gitlab.com/l0nax/changelog-go/-/releases)
2. Add the Path to the binary to your `$PATH` environment variable
## Usage
_NOTE: You don't have to be at the root path (eg. where your `.git` relies) to
generate/ create a Changelog(-Entry)_
### Initialize directory
1. Run `changelog init` and edit the config file (`.changelog-go.yaml`)
### Create a new change entry
1. Run `changelog new "<title>"` and then choose from the list which category
is the best fit.
2. Add and commit the new Changelog File
Example:
```bash
## (1) create changelog entry
~] changelog new "Fix 'go pos'-Parser Bug"
Using config file: /root/.go/src/gitlab.com/l0nax/test/.changelog-go.yaml
[0] New Feature (Added)
[1] Bug Fix (Fixed)
[2] Feature change (Changed)
[3] New deprecation (Deprecated)
[4] Feature removal (Removed)
[5] Security fix (Security)
[6] Other (Other)
>> 1
## (2) add and commit changelog Entry
~] git add .changelogs/unreleased/bugfix_P71128-114_bug-in-go-to-parser-gnAfCUyu
~] git commit -m "Add changelog entry"
## (3) push/ merge your changes or create (ie.) a Pull-Request
```
### Release a new version
Releasing a new Version is as simple as creating a new changelog entry:
1. Run `changelog release <version>`
2. Add and Commit the new `CHANGELOG.md` and changed files under `.changelogs`
Example:
```bash
## (1) generate new changelog
~] changelog release 2.0.0
## (2) commit CHANGELOG.md and `.changelogs`
~] git add .changelogs CHANGELOG.md
~] git commit -m "Generating new CHANGELOG.md"
## (3) push/ merge your changes or create (ie.) a Pull-Request
```