forked from azuyalabs/yasumi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcliff.toml
More file actions
148 lines (117 loc) · 5.21 KB
/
cliff.toml
File metadata and controls
148 lines (117 loc) · 5.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# git-cliff ~ configuration file
# https://git-cliff.org/docs/configuration
#
# Lines starting with "#" are comments.
# Configuration options are organized into tables and keys.
# See documentation for more information on available options.
[remote.github]
owner = "azuyalabs"
repo = "yasumi"
[changelog]
header = """
# Changelog\n
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html) and
[Conventional Commits](https://conventionalcommits.org) for commit conventions.
Changes related to the logic of the holidays or their providers are listed first,
followed by any architectural or technical changes.\n
"""
body = """
{% if version -%}
## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else -%}
## [unreleased]
{% endif -%}
{% for group, commits in commits | unique(attribute="message") | filter(attribute="merge_commit", value=false) | group_by(attribute="group") %}
### {{ group | striptags | trim | upper_first }}
{% for commit in commits %}
- {% if commit.scope %}({{ commit.scope | upper_first }}) {% endif%}{{ commit.message | split(pat="\n") | first | split(pat=": ") | last | trim | upper_first }}
{%- endfor %}
{% endfor %}\n
{%- if github -%}
{% if github.contributors | filter(attribute="is_first_time", value=true) | length != 0 %}
## New Contributors ❤️
{% endif %}\
{% for contributor in github.contributors | filter(attribute="is_first_time", value=true) | sort(attribute="username") %}
* @{{ contributor.username }} made their first contribution
{%- endfor -%}
{%- endif %}\n\n
"""
footer = """
{%- macro remote_url() -%}
https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
{%- endmacro -%}
{% for release in releases -%}
{% if release.version -%}
{% if release.previous.version -%}
[{{ release.version | trim_start_matches(pat="v") }}]: \
{{ self::remote_url() }}/compare/{{ release.previous.version }}..{{ release.version }}
{% endif -%}
{% else -%}
[unreleased]: {{ self::remote_url() }}/compare/{{ release.previous.version }}..HEAD
{% endif -%}
{% endfor %}
"""
# Remove leading and trailing whitespaces from the changelog's body.
trim = true
# An array of regex based postprocessors to modify the changelog.
postprocessors = [
# Replace the placeholder `<REPO>` with a URL.
{ pattern = '<REPO>', replace = "https://github.com/azuyalabs/yasumi" }, # replace repository URL
]
[git]
# Parse commits according to the conventional commits specification.
# See https://www.conventionalcommits.org
conventional_commits = true
# Exclude commits that do not match the conventional commits specification.
filter_unconventional = true
# Split commits on newlines, treating each line as an individual commit.
split_commits = false
# An array of regex based parsers to modify commit messages prior to further processing.
commit_preprocessors = [
{ pattern = "\\(#([0-9]+)\\)", replace = "([#${1}](<REPO>/issues/${1}))"},
# Check spelling of the commit message using https://github.com/crate-ci/typos.
# If the spelling is incorrect, it will be fixed automatically.
{ pattern = '.*', replace_command = 'typos --write-changes -' }
]
# An array of regex based parsers for extracting data from the commit message.
# Assigns commits to groups.
# Optionally sets the commit's scope and can decide to exclude commits from further processing.
commit_parsers = [
# skip commits related to composer (e.g. package updates)
{ message = "^chore\\(composer\\)", skip = true },
{ message = ".*dependencies", skip = true },
# skip commits related to fixes of code style issues
{ message = "^chore\\(style\\)", skip = true },
{ message = "^docs:.*copyright", skip = true },
{ message = "^chore\\(changelog\\)", skip = true },
{ message = "^chore\\(readme\\)", skip = true },
{ message = "^chore\\(release\\): prepare for", skip = true },
# skip merge commits
{ message = "^[Mm]erge", skip = true },
{ message = "^feat", group = "<!-- 0 -->Features" },
{ message = "^fix", group = "<!-- 1 -->Fixes" },
{ message = "^refactor", group = "<!-- 2 -->Refactor" },
{ message = "^perf", group = "<!-- 3 -->Performance" },
{ message = "^doc", group = "<!-- 4 -->Documentation" },
{ message = "^style", group = "<!-- 5 -->Code Style" },
{ message = "^test", group = "<!-- 6 -->Testing" },
{ message = "^chore|^ci|^build", group = "<!-- 7 -->Other" },
]
# Prevent commits that are breaking from being excluded by commit parsers.
protect_breaking_commits = false
# Exclude commits that are not matched by any commit parser.
filter_commits = true
# Regex to select git tags that represent releases.
tag_pattern = "[0-9].*"
# Regex to select git tags that do not represent proper releases.
# Takes precedence over `tag_pattern`.
# Changes belonging to these releases will be included in the next release.
skip_tags = "beta|alpha"
# Regex to exclude git tags after applying the tag_pattern.
ignore_tags = ""
# Order releases topologically instead of chronologically.
topo_order = false
# Order of commits in each group/release within the changelog.
# Allowed values: newest, oldest
sort_commits = "newest"