[FIX] Hadoop-Spark-OCI-sample: Fixed issues with uses cases #112
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Copyright (c) 2024, 2026, Oracle and/or its affiliates. All rights reserved. | |
| # The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/ | |
| name: PR File Header Check | |
| on: | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| jobs: | |
| check-file-headers: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Check UPL license headers | |
| run: | | |
| CURRENT_YEAR=$(date +%Y) | |
| LICENSE_TEXT_COPYRIGHT="Copyright (c) 2024, ${CURRENT_YEAR}, Oracle and/or its affiliates. All rights reserved." | |
| LICENSE_TEXT_UPL="The Universal Permissive License (UPL), Version 1.0 as shown at https://oss.oracle.com/licenses/upl/" | |
| # Get list of changed files in the PR | |
| CHANGED_FILES=$(git diff --name-only --diff-filter=d origin/${{ github.base_ref }}...HEAD) | |
| if [ -z "$CHANGED_FILES" ]; then | |
| echo "No changed files found." | |
| exit 0 | |
| fi | |
| FAILED=0 | |
| for FILE in $CHANGED_FILES; do | |
| # Skip markdown, json, csv and svg files | |
| if [[ "$FILE" == *.md ]] || [[ "$FILE" == *.json ]] || [[ "$FILE" == *.csv ]] || [[ "$FILE" == *.svg ]]; then | |
| echo "Skipping: $FILE" | |
| continue | |
| fi | |
| # Skip binary files or non-existent files | |
| if [ ! -f "$FILE" ] || ! file "$FILE" | grep -q text; then | |
| echo "Skipping (binary/missing): $FILE" | |
| continue | |
| fi | |
| # Determine comment prefix based on file extension | |
| case "$FILE" in | |
| *.go|*.java) | |
| PREFIX="//" | |
| ;; | |
| *.html) | |
| PREFIX="HTML" | |
| ;; | |
| *.js|*.css|*.ts|*.tsx|*.mjs) | |
| PREFIX="BLOCK" | |
| ;; | |
| *.sql) | |
| PREFIX="--" | |
| ;; | |
| *) | |
| PREFIX="#" | |
| ;; | |
| esac | |
| if [[ "$PREFIX" == "HTML" ]]; then | |
| LINE1="<!-- ${LICENSE_TEXT_COPYRIGHT} -->" | |
| LINE2="<!-- ${LICENSE_TEXT_UPL} -->" | |
| elif [[ "$PREFIX" == "BLOCK" ]]; then | |
| LINE1="/* ${LICENSE_TEXT_COPYRIGHT} */" | |
| LINE2="/* ${LICENSE_TEXT_UPL} */" | |
| else | |
| LINE1="${PREFIX} ${LICENSE_TEXT_COPYRIGHT}" | |
| LINE2="${PREFIX} ${LICENSE_TEXT_UPL}" | |
| fi | |
| EXPECTED_LINES="1-2" | |
| if [[ "$FILE" == *.sh || "$FILE" == *.sh.tftpl ]]; then | |
| SHEBANG=$(sed -n '1p' "$FILE") | |
| if [[ "$SHEBANG" != \#!* ]]; then | |
| echo "BAD - $FILE — missing shebang on line 1" | |
| FAILED=1 | |
| continue | |
| fi | |
| ACTUAL_LINE1=$(sed -n '3p' "$FILE" | tr -d '\r') | |
| ACTUAL_LINE2=$(sed -n '4p' "$FILE" | tr -d '\r') | |
| EXPECTED_LINES="3-4" | |
| elif [[ "$FILE" == *.cloud-init.tftpl || "$FILE" == *.ps1-cloud-init.tftpl ]]; then | |
| if [[ "$FILE" == *.ps1-cloud-init.tftpl ]]; then | |
| EXPECTED_FIRST_LINE="#ps1_sysnative" | |
| else | |
| EXPECTED_FIRST_LINE="#cloud-config" | |
| fi | |
| FIRST_LINE=$(sed -n '1p' "$FILE" | tr -d '\r') | |
| if [[ "$FIRST_LINE" != "$EXPECTED_FIRST_LINE" ]]; then | |
| echo "BAD - $FILE — missing '${EXPECTED_FIRST_LINE}' on line 1" | |
| FAILED=1 | |
| continue | |
| fi | |
| ACTUAL_LINE1=$(sed -n '3p' "$FILE" | tr -d '\r') | |
| ACTUAL_LINE2=$(sed -n '4p' "$FILE" | tr -d '\r') | |
| EXPECTED_LINES="3-4" | |
| elif [[ "$FILE" == *.py ]]; then | |
| FIRST_LINE=$(sed -n '1p' "$FILE") | |
| if [[ "$FIRST_LINE" == \#!* ]]; then | |
| ACTUAL_LINE1=$(sed -n '3p' "$FILE" | tr -d '\r') | |
| ACTUAL_LINE2=$(sed -n '4p' "$FILE" | tr -d '\r') | |
| EXPECTED_LINES="3-4" | |
| else | |
| ACTUAL_LINE1=$(sed -n '1p' "$FILE" | tr -d '\r') | |
| ACTUAL_LINE2=$(sed -n '2p' "$FILE" | tr -d '\r') | |
| fi | |
| else | |
| ACTUAL_LINE1=$(sed -n '1p' "$FILE" | tr -d '\r') | |
| ACTUAL_LINE2=$(sed -n '2p' "$FILE" | tr -d '\r') | |
| fi | |
| if [ "$ACTUAL_LINE1" = "$LINE1" ] && [ "$ACTUAL_LINE2" = "$LINE2" ]; then | |
| echo "GOOD - $FILE" | |
| else | |
| if [[ "$FILE" == *.sh || "$FILE" == *.py || "$FILE" == *.sh.tftpl || "$FILE" == *.cloud-init.tftpl || "$FILE" == *.ps1-cloud-init.tftpl ]]; then | |
| echo "BAD - $FILE — missing or incorrect UPL license header (expected on lines ${EXPECTED_LINES})" | |
| else | |
| echo "BAD - $FILE — missing or incorrect UPL license header" | |
| fi | |
| if [ "$ACTUAL_LINE1" != "$LINE1" ]; then | |
| echo " Expected: $LINE1" | |
| echo " Got: $ACTUAL_LINE1" | |
| fi | |
| if [ "$ACTUAL_LINE2" != "$LINE2" ]; then | |
| echo " Expected: $LINE2" | |
| echo " Got: $ACTUAL_LINE2" | |
| fi | |
| FAILED=1 | |
| fi | |
| done | |
| if [ "$FAILED" -eq 1 ]; then | |
| echo "" | |
| echo "::error::Some files are missing the required Oracle UPL license header." | |
| exit 1 | |
| fi | |
| echo "" | |
| echo "All changed files contain the required UPL license header." |