|
35 | 35 | id: previous_version
|
36 | 36 | run: echo "PREVIOUS_VERSION=$(git show HEAD~:custom_components/$DOMAIN/manifest.json | jq -r '.version')" >> $GITHUB_ENV
|
37 | 37 |
|
| 38 | + - name: Collect Changes |
| 39 | + if: ${{ env.CURRENT_VERSION != env.PREVIOUS_VERSION }} |
| 40 | + id: collect_changes |
| 41 | + run: | |
| 42 | + PREVIOUS_TAG=$(git rev-list -n 1 v${{ env.PREVIOUS_VERSION }}) |
| 43 | + CURRENT_SHA=${{ github.sha }} |
| 44 | + if [ -z "$PREVIOUS_TAG" ]; then |
| 45 | + # Fallback in case there's no previous tag |
| 46 | + CHANGELOG=$(git log --pretty=format:"%s%n%b" $(git rev-list --max-parents=0 HEAD)..$CURRENT_SHA) |
| 47 | + else |
| 48 | + CHANGELOG=$(git log --pretty=format:"%s%n%b" $PREVIOUS_TAG..$CURRENT_SHA) |
| 49 | + fi |
| 50 | + |
| 51 | + # Initialize section variables |
| 52 | + ALL_FEATURES="" |
| 53 | + ALL_FIXES="" |
| 54 | + ALL_CHANGES="" |
| 55 | + ALL_OTHER="" |
| 56 | +
|
| 57 | + # Process each commit message |
| 58 | + echo "$CHANGELOG" | while IFS= read -r line; do |
| 59 | + if [[ "$line" == "feat"* ]]; then |
| 60 | + ALL_FEATURES+="- $line\n" |
| 61 | + elif [[ "$line" == "fix"* ]]; then |
| 62 | + ALL_FIXES+="- $line\n" |
| 63 | + elif [[ "$line" == "refactor"* ]]; then |
| 64 | + ALL_CHANGES+="- $line\n" |
| 65 | + else |
| 66 | + ALL_OTHER+="- $line\n" |
| 67 | + fi |
| 68 | + done |
| 69 | +
|
| 70 | + # Start with an empty formatted changelog |
| 71 | + FORMATTED_CHANGELOG="" |
| 72 | +
|
| 73 | + # Add sections if not empty |
| 74 | + if [ ! -z "$ALL_FEATURES" ]; then |
| 75 | + FORMATTED_CHANGELOG+="## :new: Нововведения\n\n${ALL_FEATURES}\n" |
| 76 | + fi |
| 77 | + if [ ! -z "$ALL_FIXES" ]; then |
| 78 | + FORMATTED_CHANGELOG+="## :bug: Исправления\n\n${ALL_FIXES}\n" |
| 79 | + fi |
| 80 | + if [ ! -z "$ALL_CHANGES" ]; then |
| 81 | + FORMATTED_CHANGELOG+="## :wrench: Изменения\n\n${ALL_CHANGES}" |
| 82 | + fi |
| 83 | + if [ ! -z "$ALL_OTHER" ]; then |
| 84 | + FORMATTED_CHANGELOG+="## :information_source: Примечания\n\n${ALL_OTHER}" |
| 85 | + fi |
| 86 | +
|
| 87 | + # Trim the last newline |
| 88 | + FORMATTED_CHANGELOG=$(echo -e "$FORMATTED_CHANGELOG" | sed '$d') |
| 89 | +
|
| 90 | + # Save to GITHUB_ENV |
| 91 | + echo "FORMATTED_CHANGELOG<<EOF" >> $GITHUB_ENV |
| 92 | + echo -e "$FORMATTED_CHANGELOG" >> $GITHUB_ENV |
| 93 | + echo "EOF" >> $GITHUB_ENV |
| 94 | +
|
38 | 95 | - name: Create Tag
|
39 | 96 | if: ${{ env.CURRENT_VERSION != env.PREVIOUS_VERSION }}
|
40 | 97 | uses: actions/github-script@v7
|
|
0 commit comments