|
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