|
2 | 2 |
|
3 | 3 | # Get inputs from command |
4 | 4 | owner_repository=$1 |
5 | | -pr_number=$2 |
| 5 | +base_ref=$2 |
6 | 6 |
|
7 | | -url="https://api.github.com/repos/$owner_repository/pulls/$pr_number/files" |
8 | | -echo $url |
| 7 | +# Download the boards.txt file from the base branch |
| 8 | +curl -L -o boards_base.txt https://raw.githubusercontent.com/$owner_repository/$base_ref/boards.txt |
9 | 9 |
|
10 | | -# Get changes in boards.txt file from PR |
11 | | -Patch=$(curl $url | jq -r '.[] | select(.filename == "boards.txt") | .patch ') |
| 10 | +# Compare boards.txt file in the repo with the modified file from PR |
| 11 | +diff=$(diff -u boards_base.txt boards.txt) |
12 | 12 |
|
13 | | -# Extract only changed lines number and count |
14 | | -substring_patch=$(echo "$Patch" | grep -o '@@[^@]*@@') |
15 | | - |
16 | | -params_array=() |
| 13 | +# Check if the diff is empty |
| 14 | +if [ -z "$diff" ] |
| 15 | +then |
| 16 | + echo "No changes in boards.txt file" |
| 17 | + echo "FQBNS=" |
| 18 | + exit 0 |
| 19 | +fi |
17 | 20 |
|
18 | | -IFS=$'\n' read -d '' -ra params <<< $(echo "$substring_patch" | grep -oE '[-+][0-9]+,[0-9]+') |
| 21 | +# Extract added or modified lines (lines starting with '+' or '-') |
| 22 | +modified_lines=$(echo "$diff" | grep -E '^[+-][^+-]') |
19 | 23 |
|
20 | | -for param in "${params[@]}" |
21 | | -do |
22 | | - echo "The parameter is $param" |
23 | | - params_array+=("$param") |
24 | | -done |
| 24 | +# Print the modified lines for debugging |
| 25 | +echo "Modified lines:" |
| 26 | +echo "$modified_lines" |
25 | 27 |
|
26 | 28 | boards_array=() |
27 | 29 | previous_board="" |
28 | | -file="boards.txt" |
29 | 30 |
|
30 | | -# Loop through boards.txt file and extract all boards that were added |
31 | | -for (( c=0; c<${#params_array[@]}; c+=2 )) |
| 31 | +# Extract board names from the modified lines, and add them to the boards_array |
| 32 | +while read -r line |
32 | 33 | do |
33 | | - deletion_count=$( echo "${params_array[c]}" | cut -d',' -f2 | cut -d' ' -f1 ) |
34 | | - addition_line=$( echo "${params_array[c+1]}" | cut -d'+' -f2 | cut -d',' -f1 ) |
35 | | - addition_count=$( echo "${params_array[c+1]}" | cut -d'+' -f2 | cut -d',' -f2 | cut -d' ' -f1 ) |
36 | | - addition_end=$(($addition_line+$addition_count)) |
37 | | - |
38 | | - addition_line=$(($addition_line + 3)) |
39 | | - addition_end=$(($addition_end - $deletion_count)) |
40 | | - |
41 | | - echo $addition_line |
42 | | - echo $addition_end |
43 | | - |
44 | | - i=0 |
45 | | - |
46 | | - while read -r line |
47 | | - do |
48 | | - i=$((i+1)) |
49 | | - if [ $i -lt $addition_line ] |
50 | | - then |
51 | | - continue |
52 | | - elif [ $i -gt $addition_end ] |
53 | | - then |
54 | | - break |
55 | | - fi |
56 | 34 | board_name=$(echo "$line" | cut -d '.' -f1 | cut -d '#' -f1) |
57 | | - if [ "$board_name" != "" ] && [ "$board_name" != "esp32_family" ] |
| 35 | + # remove + or - from the board name at the beginning |
| 36 | + board_name=$(echo "$board_name" | sed 's/^[+-]//') |
| 37 | + if [ "$board_name" != "" ] && [ "$board_name" != "+" ] && [ "$board_name" != "-" ] && [ "$board_name" != "esp32_family" ] |
58 | 38 | then |
59 | 39 | if [ "$board_name" != "$previous_board" ] |
60 | 40 | then |
|
63 | 43 | echo "Added 'espressif:esp32:$board_name' to array" |
64 | 44 | fi |
65 | 45 | fi |
66 | | - done < "$file" |
67 | | -done |
| 46 | +done <<< "$modified_lines" |
68 | 47 |
|
69 | 48 | # Create JSON like string with all boards found and pass it to env variable |
70 | 49 | board_count=${#boards_array[@]} |
|
0 commit comments