Skip to content

Add files via upload #83

Add files via upload

Add files via upload #83

Workflow file for this run

name: Update Changelog
permissions:
contents: write
on:
push:
branches:
- main
jobs:
changelog:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Git identity
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Generate Changelog
run: |
repo_url="https://github.com/workofaditya/ChatBot"
repo_blob="$repo_url/blob/main"
> CHANGELOG.md
tags=($(git tag --sort=-v:refname))
latest_tag=${tags[0]}
if [ -n "$latest_tag" ]; then
echo "## Unreleased" >> CHANGELOG.md
echo -e "| Date | Commit | Change | File |\n|------|--------|--------|------|" >> CHANGELOG.md
git log $latest_tag..HEAD --date=short --pretty=format:"%H|%h|%ad|%s" \
--invert-grep --grep="Auto-update CHANGELOG.md" | while IFS="|" read hash short date msg; do
files=$(git show --name-only --pretty="" "$hash" | sed '/^$/d')
file_links=""
for f in $files; do
file_links+="[${f}](${repo_blob}/${f}) "
done
echo "| ${date} | [${short}](${repo_url}/commit/${hash}) | ${msg} | ${file_links} |" >> CHANGELOG.md
done
echo -e "\n" >> CHANGELOG.md
fi
for ((i=0; i<${#tags[@]}; i++)); do
current_tag=${tags[$i]}
next_tag=${tags[$i+1]}
echo "## $current_tag" >> CHANGELOG.md
echo -e "| Date | Commit | Change | File |\n|------|--------|--------|------|" >> CHANGELOG.md
if [ -n "$next_tag" ]; then
range="$next_tag..$current_tag"
else
range="$current_tag"
fi
git log $range --date=short --pretty=format:"%H|%h|%ad|%s" \
--invert-grep --grep="Auto-update CHANGELOG.md" | while IFS="|" read hash short date msg; do
files=$(git show --name-only --pretty="" "$hash" | sed '/^$/d')
file_links=""
for f in $files; do
file_links+="[${f}](${repo_blob}/${f}) "
done
echo "| ${date} | [${short}](${repo_url}/commit/${hash}) | ${msg} | ${file_links} |" >> CHANGELOG.md
done
echo -e "\n" >> CHANGELOG.md
done
- name: Commit & Push Changelog
run: |
if git diff --quiet; then
echo "No changes in CHANGELOG.md, skipping commit."
exit 0
fi
git add CHANGELOG.md
git commit -m "Auto-update CHANGELOG.md"
git push