generate-changelog.sh 1.1 KB

12345678910111213141516171819202122232425262728
  1. #!/bin/bash
  2. # based on https://gist.github.com/joelittlejohn/5937573
  3. #
  4. if [ "$#" -ne 1 ]; then
  5. echo "Usage: ./generate-changelog.sh user/repo"
  6. exit 1
  7. fi
  8. IFS=$'\n'
  9. echo "# Changelog" > CHANGELOG.md
  10. for m in $(curl -s "https://api.github.com/repos/$1/milestones?state=closed" | jq -c '.[] | [.title, .number, .description]' | sort -r); do
  11. mid=$(echo $m | sed 's/\[".*",\(.*\),".*"\]/\1/')
  12. title=$(echo $m | sed 's/\["\(.*\)",.*,".*"\]/\1/')
  13. echo "Processing milestone: $title..."
  14. echo $m | sed 's/\["\(.*\)",.*\]/## \1/' >> CHANGELOG.md
  15. echo "" >> CHANGELOG.md
  16. echo '### Description' >> CHANGELOG.md
  17. echo $m | sed 's/\[".*",.*,"\(.*\)"\]/\1/' | sed -e 's/\\"/"/g' | sed -e 's/\\r\\n/\\n/g' | sed -e 's/\\n/\'$'\n/g' >> CHANGELOG.md
  18. echo "" >> CHANGELOG.md
  19. echo '### Closed Issues' >> CHANGELOG.md
  20. for i in $(curl -s "https://api.github.com/repos/$1/issues?milestone=$mid&state=closed" | jq -c '.[] | [.html_url, .number, .title]'); do
  21. echo $i | sed 's/\["\(.*\)",\(.*\),\"\(.*\)\"\]/* \3 ([#\2](\1))/' | sed 's/\\"/"/g' >> CHANGELOG.md
  22. done
  23. echo "" >> CHANGELOG.md
  24. echo "" >> CHANGELOG.md
  25. done