From 3433f2fe2e7bc6996d8b36e0b98145bf34a61242 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Fri, 28 Jun 2024 15:26:46 -0600 Subject: [PATCH] Remove git_ops and use git-cliff to generate changelog --- CHANGELOG.md | 15 +++++++++ README.md | 8 ++++- cliff.toml | 80 +++++++++++++++++++++++++++++++++++++++++++++++ config/config.exs | 30 ------------------ mix.exs | 5 ++- 5 files changed, 104 insertions(+), 34 deletions(-) create mode 100644 cliff.toml diff --git a/CHANGELOG.md b/CHANGELOG.md index e69de29..46dc92a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Changed + +- Add tests + + + diff --git a/README.md b/README.md index e791bbc..26faf45 100644 --- a/README.md +++ b/README.md @@ -106,10 +106,16 @@ gitly("username/repo", force: true, format: :zip, ref: "main") For more detailed documentation, run `mix docs` and open `doc/index.html` in your browser. +This project uses [git-cliff](https://github.com/orhun/git-cliff) for changelog generation. + ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License -This project is licensed under the [MIT License](LICENSE). \ No newline at end of file +This project is licensed under the [MIT License](LICENSE). + +## Changelog + +See [CHANGELOG.md](CHANGELOG.md) for the latest changes. diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 0000000..27d727f --- /dev/null +++ b/cliff.toml @@ -0,0 +1,80 @@ +# git-cliff ~ configuration file +# https://git-cliff.org/docs/configuration + +[changelog] +# template for the changelog footer +header = """ +# Changelog\n +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).\n +""" +# template for the changelog body +# https://keats.github.io/tera/docs/#introduction +body = """ +{% if version -%} + ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} +{% else -%} + ## [Unreleased] +{% endif -%} +{% for group, commits in commits | group_by(attribute="group") %} + ### {{ group | upper_first }} + {% for commit in commits %} + - {{ commit.message | upper_first }}\ + {% endfor %} +{% endfor %}\n +""" +# template for the changelog footer +footer = """ +{% for release in releases -%} + {% if release.version -%} + {% if release.previous and release.previous.version -%} + [{{ release.version | trim_start_matches(pat="v") }}]: \ + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\ + /compare/{{ release.previous.version }}..{{ release.version }} + {% endif -%} + {% else -%} + {% if release.previous and release.previous.version %} + [unreleased]: https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}\ + /compare/{{ release.previous.version }}..HEAD + {% endif -%} + {% endif -%} +{% endfor %} + +""" +# remove the leading and trailing whitespace from the templates +trim = true + +[git] +# parse the commits based on https://www.conventionalcommits.org +conventional_commits = true +# filter out the commits that are not conventional +filter_unconventional = true +# process each line of a commit as an individual commit +split_commits = false +# regex for parsing and grouping commits +commit_parsers = [ + { message = "^.*: add", group = "Added" }, + { message = "^.*: support", group = "Added" }, + { message = "^.*: remove", group = "Removed" }, + { message = "^.*: delete", group = "Removed" }, + { message = "^test", group = "Fixed" }, + { message = "^fix", group = "Fixed" }, + { message = "^.*: fix", group = "Fixed" }, + { message = "^.*", group = "Changed" }, +] +# protect breaking changes from being skipped due to matching a skipping commit_parser +protect_breaking_commits = false +# filter out the commits that are not matched by commit parsers +filter_commits = true +# regex for matching git tags +tag_pattern = "v[0-9].*" +# regex for skipping tags +skip_tags = "v0.1.0-beta.1" +# regex for ignoring tags +ignore_tags = "" +# sort the tags topologically +topo_order = false +# sort the commits inside sections by oldest/newest order +sort_commits = "oldest" diff --git a/config/config.exs b/config/config.exs index 76a608a..d1186fe 100644 --- a/config/config.exs +++ b/config/config.exs @@ -1,33 +1,3 @@ import Config import_config "#{config_env()}.exs" - -config :git_ops, - mix_project: Mix.Project.get!(), - changelog_file: "CHANGELOG.md", - repository_url: "https://github.com/iwatakeshi/gitly_ex", - types: [ - # Makes an allowed commit type called `tidbit` that is not - # shown in the changelog - tidbit: [ - hidden?: true - ], - # Makes an allowed commit type called `important` that gets - # a section in the changelog with the header "Important Changes" - important: [ - header: "Important Changes" - ] - ], - tags: [ - # Only add commits to the changelog that has the "backend" tag - allowed: [], - # Filter out or not commits that don't contain tags - allow_untagged?: true - ], - # Instructs the tool to manage your mix version in your `mix.exs` file - # See below for more information - manage_mix_version?: true, - # Instructs the tool to manage the version in your README.md - # Pass in `true` to use `"README.md"` or a string to customize - manage_readme_version: "README.md", - version_tag_prefix: "v" diff --git a/mix.exs b/mix.exs index 4d163c4..5ec0d48 100644 --- a/mix.exs +++ b/mix.exs @@ -29,7 +29,7 @@ defmodule Gitly.MixProject do main: "readme", source_url: @source_url, source_ref: "v#{@version}", - extras: ["README.md", "LICENSE", "CHANGELOG.md"], + extras: ["README.md", "LICENSE", "CHANGELOG.md"] ] ] end @@ -50,8 +50,7 @@ defmodule Gitly.MixProject do {:excoveralls, "~> 0.18.1", only: :test}, {:plug, "~> 1.16", only: :test}, {:ex_doc, "~> 0.34.1", only: :dev, runtime: false}, - {:mix_test_watch, "~> 1.2", only: [:dev, :test], runtime: false}, - {:git_ops, "~> 2.6.1", only: :dev } + {:mix_test_watch, "~> 1.2", only: [:dev, :test], runtime: false} ] end