| #!/bin/bash | |
| # Copyright The OpenTelemetry Authors | |
| # SPDX-License-Identifier: Apache-2.0 | |
| set -euo pipefail | |
| TARGET="${1:?Must provide target ref}" | |
| FILE="CHANGELOG.md" | |
| TEMP_DIR=$(mktemp -d) | |
| echo "Temp folder: $TEMP_DIR" | |
| # Only the latest commit of the feature branch is available | |
| # automatically. To diff with the base branch, we need to | |
| # fetch that too (and we only need its latest commit). | |
| git fetch origin "${TARGET}" --depth=1 | |
| # Checkout the previous version on the base branch of the changelog to tmpfolder | |
| git --work-tree="$TEMP_DIR" checkout FETCH_HEAD $FILE | |
| PREVIOUS_FILE="$TEMP_DIR/$FILE" | |
| CURRENT_FILE="$FILE" | |
| PREVIOUS_LOCKED_FILE="$TEMP_DIR/previous_locked_section.md" | |
| CURRENT_LOCKED_FILE="$TEMP_DIR/current_locked_section.md" | |
| # Extract released sections from the previous version | |
| awk '/^<!-- Released section -->/ {flag=1} /^<!-- Released section ended -->/ {flag=0} flag' "$PREVIOUS_FILE" > "$PREVIOUS_LOCKED_FILE" | |
| # Extract released sections from the current version | |
| awk '/^<!-- Released section -->/ {flag=1} /^<!-- Released section ended -->/ {flag=0} flag' "$CURRENT_FILE" > "$CURRENT_LOCKED_FILE" | |
| # Compare the released sections | |
| if ! diff -q "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE"; then | |
| echo "Error: The released sections of the changelog file have been modified." | |
| diff "$PREVIOUS_LOCKED_FILE" "$CURRENT_LOCKED_FILE" | |
| rm -rf "$TEMP_DIR" | |
| false | |
| fi | |
| rm -rf "$TEMP_DIR" | |
| echo "The released sections remain unchanged." |