free-wrap 0.1.0

Provide a easy way to define NewType Wrapper
Documentation
# configuration for https://github.com/orhun/git-cliff



[changelog]

# changelog header

header = """
# Changelog\n
All notable changes to this project will be documented in this file.\n
"""

# template for the changelog body

# https://keats.github.io/tera/docs/#introduction

body = """
{% if version %}\

    {% if previous.version %}\

        ## [{{ version | trim_start_matches(pat="v") }}](<REPO>/compare/{{ previous.version }}..{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
    {% else %}\

        ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
    {% endif %}\

{% else %}\

    ## [unreleased]
{% endif %}\


{% macro commit(commit) -%}
    - {% if commit.scope %}*({{ commit.scope }})* {% endif %}{% if commit.breaking %}[**breaking**] {% endif %}\

        {{ commit.message | upper_first }} - ([{{ commit.id | truncate(length=7, end="") }}](<REPO>/commit/{{ commit.id }}))\

{% endmacro -%}

{% for group, commits in commits | group_by(attribute="group") %}
    ### {{ group | striptags | trim | upper_first }}
    {% for commit in commits
    | filter(attribute="scope")
    | sort(attribute="scope") %}
        {{ self::commit(commit=commit) }}
    {%- endfor -%}
    {% raw %}\n{% endraw %}\

    {%- for commit in commits %}
        {%- if not commit.scope -%}
            {{ self::commit(commit=commit) }}
        {% endif -%}
    {% endfor -%}
{% endfor %}\n
"""

# template for the changelog footer

footer = """
<!-- generated by git-cliff -->
"""

# remove the leading and trailing whitespace from the templates

trim = true

# postprocessors

postprocessors = [

  { pattern = '<REPO>', replace = "https://github.com/vainjoker/free-wrap" },

]



[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 preprocessing the commit messages

commit_preprocessors = [

  # replace issue numbers

  { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](<REPO>/issues/${2}))" },

  # remove emoji

  { pattern = '^[^a-zA-Z]*', replace = "" },

  # remove commit body

  { pattern = '\n.*', replace = "" },

]

# regex for parsing and grouping commits

commit_parsers = [

  { message = "^feat", group = "<!-- 0 -->✨ Features" },

  { message = "^fix", group = "<!-- 1 -->🐛 Bug Fixes" },

  { message = "^doc", group = "<!-- 3 -->📚 Documentation" },

  { message = "^perf", group = "<!-- 4 -->âšĄī¸ Performance" },

  { message = "^refactor", group = "<!-- 2 -->🚜 Refactor" },

  { message = "^?style", group = "<!-- 5 -->🎨 Styling" },

  { message = "^test", group = "<!-- 6 -->✅ Testing" },

  { message = "^(chore|ci)", group = "<!-- 7 -->đŸĒļ Miscellaneous Tasks" },

  { message = "^build", group = "<!-- 8 -->đŸ“Ļī¸ Build" },

  { message = "^revert", group = "<!-- 9 -->â—€ī¸ Revert" },

  { message = "^chore\\(release\\): prepare for", skip = true },

  { message = "^chore\\(deps\\)", skip = true },

  { message = "^chore\\(pr\\)", skip = true },

  { message = "^chore\\(pull\\)", skip = true },

  { body = ".*security", group = "<!-- 10 -->đŸ›Ąī¸ Security" },

]

# 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 = false

# regex for matching git tags

tag_pattern = "v[0-9].*"

# regex for skipping tags

skip_tags = "beta|alpha"

# regex for ignoring tags

ignore_tags = "rc"

# sort the tags topologically

topo_order = false

# sort the commits inside sections by oldest/newest order

sort_commits = "newest"