diff --git a/.github/workflows/changelog.yml b/.github/workflows/changelog.yml index c12022250..e9e723b87 100644 --- a/.github/workflows/changelog.yml +++ b/.github/workflows/changelog.yml @@ -1,4 +1,4 @@ -name: Generating / updating changelog +name: Changelog generation on: push: @@ -27,28 +27,12 @@ jobs: - name: Print the changelog run: cat "${{ steps.git-cliff.outputs.changelog }}" - - name: Create branch for changelog - run: | - git checkout -b changelog-update - git config user.name 'github-actions[bot]' - git config user.email 'github-actions[bot]@users.noreply.github.com' - - - name: Commit Changelog + - name: Commit changelog run: | + git checkout master + git config user.name 'belomaxorka' + git config user.email 'roman25052006.kelesh@gmail.com' set +e git add CHANGELOG.md git commit -m "Update CHANGELOG.md 📖" - - - name: Push changelog branch - run: | - git push origin changelog-update - - - name: Create Pull Request - uses: peter-evans/create-pull-request@v7 - with: - token: ${{ secrets.GITHUB_TOKEN }} - title: 'Update CHANGELOG.md 📖' - branch: changelog-update - assignees: belomaxorka - base: master - body: "This PR updates the changelog file based on the last merged PR. [br]`${{ steps.git-cliff.outputs.changelog }}`" + git push https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}.git master diff --git a/cliff.toml b/cliff.toml index 31fc7f1e3..2938b74f1 100644 --- a/cliff.toml +++ b/cliff.toml @@ -1,46 +1,83 @@ -# git-cliff ~ default configuration file +# git-cliff ~ TorrentPier 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 = "torrentpier" +repo = "torrentpier" + [changelog] # template for the changelog header header = """ -# Changelog\n +# 📖 Change Log\n """ # template for the changelog body # https://keats.github.io/tera/docs/#introduction body = """ +{%- macro remote_url() -%} + https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }} +{%- endmacro -%} + +{%- macro nightly_url() -%} + https://nightly.link/{{ remote.github.owner }}/{{ remote.github.repo }}/workflows/build/master/TorrentPier +{%- endmacro -%} + +{% macro print_commit(commit) -%} + - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ + {% if commit.breaking %}[**breaking**] {% endif %}\ + {{ commit.message | upper_first }} - \ + ([{{ commit.id | truncate(length=7, end="") }}]({{ self::remote_url() }}/commit/{{ commit.id }}))\ +{% endmacro -%} + {% if version %}\ - ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }} + {% if previous.version %}\ + ## [{{ version }}]\ + ({{ self::remote_url() }}/compare/{{ previous.version }}..{{ version }}) ({{ timestamp | date(format="%Y-%m-%d") }}) + {% else %}\ + ## {{ version }} ({{ timestamp | date(format="%Y-%m-%d") }}) + {% endif %}\ {% else %}\ - ## [unreleased] + ## [nightly]({{ self::nightly_url() }}) {% endif %}\ + {% 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::print_commit(commit=commit) }} + {%- endfor %} {% for commit in commits %} - - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\ - {% if commit.breaking %}[**breaking**] {% endif %}\ - {{ commit.message | upper_first }}\ - {% endfor %} -{% endfor %}\n + {%- if not commit.scope -%} + {{ self::print_commit(commit=commit) }} + {% endif -%} + {% endfor -%} +{% endfor -%} +{%- 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) %} + * [@{{ contributor.username }}](https://github.com/{{ contributor.username }}) made their first contribution + {%- if contributor.pr_number %} in \ + [#{{ contributor.pr_number }}]({{ self::remote_url() }}/pull/{{ contributor.pr_number }}) \ + {%- endif %} +{%- endfor -%} +{%- endif %} """ # template for the changelog footer footer = """ """ -# remove the leading and trailing s +# remove the leading and trailing whitespace from the templates trim = true # postprocessors postprocessors = [ - # { pattern = '', replace = "https://github.com/orhun/git-cliff" }, # replace repository URL + { pattern = '', replace = "https://github.com/torrentpier/torrentpier" }, # replace repository URL ] -# render body even when there are no releases to process -# render_always = true -# output file path -# output = "test.md" [git] # parse the commits based on https://www.conventionalcommits.org @@ -52,10 +89,10 @@ split_commits = false # regex for preprocessing the commit messages commit_preprocessors = [ # Replace issue numbers - #{ pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/issues/${2}))"}, + { pattern = '\((\w+\s)?#([0-9]+)\)', replace = "([#${2}](/pull/${2}))" }, # Check spelling of the commit with https://github.com/crate-ci/typos # If the spelling is incorrect, it will be automatically fixed. - #{ pattern = '.*', replace_command = 'typos --write-changes -' }, + # { pattern = '.*', replace_command = 'typos --write-changes -' }, ] # regex for parsing and grouping commits commit_parsers = [ @@ -75,9 +112,11 @@ commit_parsers = [ { message = "^revert", group = "◀️ Revert" }, { message = ".*", group = "💼 Other" }, ] +# 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 # sort the tags topologically topo_order = false # sort the commits inside sections by oldest/newest order -sort_commits = "oldest" +sort_commits = "newest"