confmark 0.3.0

Bidirectional CLI tool for converting Markdown to Confluence markup and Confluence markup back to Markdown.
Documentation
# git-cliff ~ configuration file
# https://git-cliff.org/docs/configuration

[changelog]
header = """
# Changelog\n
All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.\n
---
"""
body = """
{% if version %}\
    {% if previous.version %}\
        ## [{{ version | trim_start_matches(pat="v") }}](https://github.com/{{ remote.github.owner }}/{{ remote.github.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 %}\
{% for group, commits in commits | group_by(attribute="group") %}
{% if not loop.first %}
{% endif %}### {{ group | striptags | trim | upper_first }}
    {% for commit in commits
    | filter(attribute="scope")
    | sort(attribute="scope") %}
        - **({{commit.scope}})**{% if commit.breaking %} [**breaking**]{% endif %} \
            {{ commit.message }} - ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}/commit/{{ commit.id }})) \
            `+{{ commit.statistics.additions | default(value=0) }} / -{{ commit.statistics.deletions | default(value=0) }} across {{ commit.statistics.files_changed | default(value=0) }} file(s)` - {{ commit.author.name }}
    {%- endfor %}
    {%- for commit in commits %}
        {%- if commit.scope -%}
        {% else %}
- {% if commit.breaking %} [**breaking**]{% endif %}\
    {{ commit.message }} - ([{{ commit.id | truncate(length=7, end="") }}](https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}/commit/{{ commit.id }})) \
    `+{{ commit.statistics.additions | default(value=0) }} / -{{ commit.statistics.deletions | default(value=0) }} across {{ commit.statistics.files_changed | default(value=0) }} file(s)` - {{ commit.author.name }}
        {%- endif -%}
    {% endfor -%}
{% endfor %}
{% set_global total_additions = 0 -%}
{% set_global total_deletions = 0 -%}
{% set_global total_files = 0 -%}
{% for commit in commits -%}
    {% set additions = commit.statistics.additions | default(value=0) -%}
    {% set deletions = commit.statistics.deletions | default(value=0) -%}
    {% set files = commit.statistics.files_changed | default(value=0) -%}
    {% set_global total_additions = total_additions + additions -%}
    {% set_global total_deletions = total_deletions + deletions -%}
    {% set_global total_files = total_files + files -%}
{% endfor %}
### Statistics

- {{ statistics.commit_count }} commit(s) contributed to the release.
- {{ statistics.commits_timespan | default(value=0) }} day(s) between first and last commit.
- {{ statistics.conventional_commit_count }} commit(s) parsed as conventional.
- Diff totals: +{{ total_additions }} / -{{ total_deletions }} across {{ total_files }} file change(s) (sum across commits, may double-count files touched in multiple commits).
{%- if statistics.days_passed_since_last_release %}
- {{ statistics.days_passed_since_last_release }} day(s) since the previous release.
{%- endif %}
\n
"""
footer = ""
trim = true

[git]
# Parse commits according to the conventional commits specification.
# See https://www.conventionalcommits.org
conventional_commits = true
filter_unconventional = true
split_commits = false
commit_parsers = [
    { message = "^feat", group = "Features" },
    { message = "^fix", group = "Bug Fixes" },
    { message = "^doc", group = "Documentation" },
    { message = "^perf", group = "Performance" },
    { message = "^refactor", group = "Refactoring" },
    { message = "^style", group = "Style" },
    { message = "^revert", group = "Revert" },
    { message = "^test", group = "Tests" },
    { message = "^ci", group = "CI/CD" },
    { message = "^chore\\(version\\):", skip = true },
    { message = "^chore\\(release\\): update CHANGELOG", skip = true },
    { message = "^chore\\(release\\): bump version to", skip = true },
    { message = "^chore", group = "Miscellaneous Chores" },
    { body = ".*security", group = "Security" },
    { message = "^import:", skip = true },
]
filter_commits = false
topo_order = false
sort_commits = "oldest"

[bump]
features_always_bump_minor = true
breaking_always_bump_major = true
initial_tag = "v0.1.0"