xclog 0.3.2

xcodebuild build-log formater and parser
Documentation
[changelog]
# changelog header
header = """
# Changelog
"""
# template for the changelog body
# https://tera.netlify.app/docs/#introduction
body = """
{%- set repo = "https://github.com/tami5/xclog" -%}\

{% if version %}\
    ## 🎉 [{{ version }}]({{ repo }}/tree/{{ version }}) - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
  ## 🔥 [Unreleased]({{ repo }})
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}\
### {{ group | upper_first }}
{% for commit in commits | filter(attribute="scope") | sort(attribute="scope") %}\
  <dl><dd><details><summary>\
    <b><a href="{{ repo }}/commit/{{ commit.id }}">{{ commit.message | upper_first }}</a></b> <code>#{{ commit.scope }}</code> {%- if commit.body %} <u><b>....</b></u> {%- endif -%}
    </summary>\
      {%- if commit.body %}<br />\
        \n\n {{ commit.body }}  {%- endif -%}\
      {%- if commit.breaking %}<br /><br />\
        <sup><b>BREAKING</b>: {{commit.breaking_description}}</sup>
      {%- endif -%}
    </details></dd></dl>\n
{% endfor %}\n

{%- for commit in commits %}
   {%- if commit.scope -%}
     {% else -%}
      <dl><dd><details><summary>\
        <b><a href="{{ repo }}/commit/{{ commit.id }}">{{ commit.message | upper_first }}</a></b> <code>#general</code> {%- if commit.body %} <u><b>....</b></u> {%- endif -%}
        </summary>\
          {%- if commit.body %}<br />\
            \n\n{{ commit.body }}\
          {%- endif -%}\
          {%- if commit.breaking %}<br /><br />\
            <sup><b>BREAKING</b>: {{commit.breaking_description}}</sup>
          {%- endif -%}
        </details></dd></dl>\n
     {% endif -%}
   {% endfor -%}
{% endfor %}\n
"""


# remove the leading and trailing whitespaces from the template
trim = true
# changelog footer
footer = ""

[git]
# parse the commits based on https://www.conventionalcommits.org
conventional_commits = true
# filter out the commits that are not conventional
filter_unconventional = true
# regex for parsing and grouping commits
commit_parsers = [
    { message = "^feat", group = "<!-- 0 -->Features"},
    { message = "^fix", group = "<!-- 1 -->Bug Fixes"},
    { message = "^ref", group = "<!-- 2 -->Refactor"},
    { message = "^enh", group = "<!-- 3 -->Enhancement"},
    { message = "^perf", group = "<!-- 4 -->Performance"},
    { message = "^doc: update readme*.", skip = true},
    { message = "^doc", group = "<!-- 5 --> Documentation"},
    { message = "^chore(deps)", group = "<!-- 6 -->Dependencies"},
    { message = "^chore: update changelog*.", skip = true},
    { message = "^style", group = "Styling"},
    { message = "^test", group = "Testing"},
    { message = "^release*.", skip = true},
    { message = "^chore", skip = true },
    { body = ".*security", group = "Security"},
]
# filter out the commits that are not matched by commit parsers
filter_commits = false
# glob pattern 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"