1+ #! /bin/bash
2+
3+ # Get inputs from command
4+ owner_repository=$1
5+ pr_number=$2
6+
7+ url=" https://api.github.com/repos/$owner_repository /pulls/$pr_number /files"
8+ echo $url
9+
10+ # Get changes in boards.txt file from PR
11+ Patch=$( curl $url | jq -r ' .[] | select(.filename == "boards.txt") | .patch ' )
12+
13+ # Extract only changed lines number and count
14+ substring_patch=$( echo " $Patch " | grep -o ' @@[^@]*@@' )
15+
16+ params_array=()
17+
18+ IFS=$' \n ' read -d ' ' -ra params <<< $( echo " $substring_patch " | grep -oE ' [-+][0-9]+,[0-9]+' )
19+
20+ for param in " ${params[@]} "
21+ do
22+ echo " The parameter is $param "
23+ params_array+=(" $param " )
24+ done
25+
26+ boards_array=()
27+ previous_board=" "
28+ file=" boards.txt"
29+
30+ # Loop through boards.txt file and extract all boards that were added
31+ for (( c= 0 ; c< ${# params_array[@]} ; c+= 2 ))
32+ 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+ board_name=$( echo " $line " | cut -d ' .' -f1 | cut -d ' #' -f1)
57+ if [ " $board_name " != " " ]
58+ then
59+ if [ " $board_name " != " $previous_board " ]
60+ then
61+ boards_array+=(" espressif:esp32:$board_name " )
62+ previous_board=" $board_name "
63+ echo " Added 'espressif:esp32:$board_name ' to array"
64+ fi
65+ fi
66+ done < " $file "
67+ done
68+
69+ # Create JSON like string with all boards found and pass it to env variable
70+ board_count=${# boards_array[@]}
71+
72+ if [ $board_count -gt 0 ]
73+ then
74+ json_matrix=' {"fqbn": ['
75+ for board in ${boards_array[@]}
76+ do
77+ json_matrix+=' "' $board ' "'
78+ if [ $board_count -gt 1 ]
79+ then
80+ json_matrix+=" ,"
81+ fi
82+ board_count=$(( $board_count - 1 ))
83+ done
84+ json_matrix+=' ]}'
85+
86+ echo $json_matrix
87+ echo " FQBNS=${json_matrix} " >> $GITHUB_ENV
88+ else
89+ echo " FQBNS=" >> $GITHUB_ENV
90+ fi
0 commit comments