An open API service indexing awesome lists of open source software.

https://github.com/ljnsn/cz-conventional-gitmoji

A commitizen plugin that combines gitmoji and conventional commits.
https://github.com/ljnsn/cz-conventional-gitmoji

commitizen conventional-commits git gitmoji semantic-versioning semver

Last synced: 16 days ago
JSON representation

A commitizen plugin that combines gitmoji and conventional commits.

Awesome Lists containing this project

README

          

# cz-conventional-gitmoji

A [commitizen](https://github.com/commitizen-tools/commitizen) plugin that combines [gitmoji](https://gitmoji.dev/) and [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/).

## Installation

With `pip` or any other package manager of your choice, the usual way:

```bash
pip install cz-conventional-gitmoji
```

## Usage

This package can be used as a normal `commitizen` plugin, either by specifying the name on the command line

```bash
cz --name cz_gitmoji commit
```

or by setting it in your **pyproject.toml**

```toml
[tool.commitizen]
name = "cz_gitmoji"
```

This will make `commitizen` use the commit message parsing rules defined by this plugin, which are 100% compatible with [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/). As such, the gitmojis are completely optional and all commands will continue to validate commit messages in conventional format just fine. This is useful if you're transitioning an existing repo to `cz-conventional-gitmoji` or you work in a team in which some colleagues don't like gitmojis.

### gitmojify

Apart from the conventional-gitmoji rules, this package provides the `gitmojify` command which is also available as a pre-commit hook. The command reads a commit message either from cli or a commit message file and prepends the correct gitmoji based on the type. If the message already has a gitmoji, it is returned as is.

```bash
$ gitmojify -m "init: initial version"
๐ŸŽ‰ init: initial version
```

To use it as a pre-commit hook, install this packages as well as `commitizen` and put the following into your **.pre-commit-config.yaml**

```yaml
repos:
- repo: https://github.com/ljnsn/cz-conventional-gitmoji
rev: 0.7.0 # double-check the latest version (or run pre-commit autoupdate)
hooks:
- id: conventional-gitmoji
```

To use `commitizen` hooks with `conventional-gitmoji`, you need to add the package as an extra dependency.

```yaml
- repo: https://github.com/commitizen-tools/commitizen
rev: v3.29.0
hooks:
- id: commitizen
additional_dependencies: [cz-conventional-gitmoji]
```

Make sure to install the relevant pre-commit hooks with

```bash
pre-commit install --install-hooks
```

Commit with a message in conventional format that contains a valid type mapped by conventional gitmoji and the gitmoji will automagically be added.

### Type mappings

Types to gitmojis

| Type | Emoji |
|------|-------|
| `fix` | ๐Ÿ› |
| `feat` | โœจ |
| `docs` | ๐Ÿ“ |
| `style` | ๐ŸŽจ |
| `refactor` | โ™ป๏ธ |
| `perf` | โšก๏ธ |
| `test` | โœ… |
| `build` | ๐Ÿ‘ท |
| `ci` | ๐Ÿ’š |
| `revert` | โช๏ธ |
| `dump` | ๐Ÿ”ฅ |
| `hotfix` | ๐Ÿš‘๏ธ |
| `deploy` | ๐Ÿš€ |
| `ui` | ๐Ÿ’„ |
| `init` | ๐ŸŽ‰ |
| `security` | ๐Ÿ”’๏ธ |
| `secret` | ๐Ÿ” |
| `bump` | ๐Ÿ”– |
| `fix`-lint | ๐Ÿšจ |
| `wip` | ๐Ÿšง |
| `dep-drop` | โฌ‡๏ธ |
| `dep-bump` | โฌ†๏ธ |
| `pin` | ๐Ÿ“Œ |
| `analytics` | ๐Ÿ“ˆ |
| `dep-add` | โž• |
| `dep-rm` | โž– |
| `config` | ๐Ÿ”ง |
| `script` | ๐Ÿ”จ |
| `lang` | ๐ŸŒ |
| `typo` | โœ๏ธ |
| `poop` | ๐Ÿ’ฉ |
| `merge` | ๐Ÿ”€ |
| `package` | ๐Ÿ“ฆ๏ธ |
| `external` | ๐Ÿ‘ฝ๏ธ |
| `resource` | ๐Ÿšš |
| `license` | ๐Ÿ“„ |
| `boom` | ๐Ÿ’ฅ |
| `asset` | ๐Ÿฑ |
| `accessibility` | โ™ฟ๏ธ |
| `source-docs` | ๐Ÿ’ก |
| `beer` | ๐Ÿป |
| `text` | ๐Ÿ’ฌ |
| `db` | ๐Ÿ—ƒ๏ธ |
| `logs-add` | ๐Ÿ”Š |
| `logs-rm` | ๐Ÿ”‡ |
| `people` | ๐Ÿ‘ฅ |
| `ux` | ๐Ÿšธ |
| `arch` | ๐Ÿ—๏ธ |
| `design` | ๐Ÿ“ฑ |
| `mock` | ๐Ÿคก |
| `egg` | ๐Ÿฅš |
| `ignore` | ๐Ÿ™ˆ |
| `snap` | ๐Ÿ“ธ |
| `experiment` | โš—๏ธ |
| `seo` | ๐Ÿ”๏ธ |
| `types` | ๐Ÿท๏ธ |
| `seed` | ๐ŸŒฑ |
| `flag` | ๐Ÿšฉ |
| `catch` | ๐Ÿฅ… |
| `animation` | ๐Ÿ’ซ |
| `deprecation` | ๐Ÿ—‘๏ธ |
| `auth` | ๐Ÿ›‚ |
| `fix-simple` | ๐Ÿฉน |
| `exploration` | ๐Ÿง |
| `dead` | โšฐ๏ธ |
| `test-fail` | ๐Ÿงช |
| `logic` | ๐Ÿ‘” |
| `health` | ๐Ÿฉบ |
| `infra` | ๐Ÿงฑ |
| `devxp` | ๐Ÿง‘โ€๐Ÿ’ป |
| `money` | ๐Ÿ’ธ |
| `threading` | ๐Ÿงต |
| `validation` | ๐Ÿฆบ |
| `chore` | ๐Ÿงน1 |

1 This is an addition to the original Gitmojis.

## Features

- [x] Enable conventional gitmoji commit messages via `cz commit`.
- [x] Add hook to automatically prepend the appropriate gitmoji for the commit's type.
- [ ] Add `--simple-emojis` option to use only the emojis relating to `cz_conventional_commits` types.
- [ ] Add `--simple-types` option to use only the types used by `cz_conventional_commits`.
- [ ] Add `--conventional` option to put the emoji in the commit message, making it compatible with `cz_conventional_commits`.

## Inspiration

- [`commitizen-emoji`](https://github.com/marcelomaia/commitizen-emoji)