-
Notifications
You must be signed in to change notification settings - Fork 180
/
Copy pathpush-to-arduino.sh
executable file
·171 lines (142 loc) · 5.58 KB
/
push-to-arduino.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
#!/bin/bash
source ./tools/install-arduino.sh
if [ -x $GITHUB_TOKEN ]; then
echo "ERROR: GITHUB_TOKEN was not defined"
exit 1
fi
# setup git for pushing
git config --global github.user "$GITHUB_ACTOR"
git config --global user.name "$GITHUB_ACTOR"
git config --global user.email "[email protected]"
#
# UPDATE FILES
#
#
# esp32-arduino-libs
#
LIBS_ZIP_FILENAME="esp32-arduino-libs-$LIBS_VERSION.zip"
LIBS_JSON_FILENAME="package-$LIBS_VERSION.json"
IDF_LIBS_ZIP_URL="https://github.com/$AR_LIBS_REPO/releases/download/$LIBS_RELEASE_TAG/$LIBS_ZIP_FILENAME"
IDF_LIBS_JSON_URL="https://github.com/$AR_LIBS_REPO/releases/download/$LIBS_RELEASE_TAG/$LIBS_JSON_FILENAME"
if [ $AR_HAS_COMMIT == "0" ] || [ $LIBS_HAS_ASSET == "0" ]; then
cd "$AR_ROOT"
mkdir -p dist
# check if the release exists
if [ $LIBS_HAS_RELEASE == "0" ]; then
echo "Release for tag \"$LIBS_RELEASE_TAG\" not found. Please create the release first."
exit 1
fi
# Delete old assets for the version
if [ $LIBS_HAS_ASSET == "1" ]; then
echo "Deleting existing assets for version '$LIBS_VERSION'..."
if [ `github_release_asset_delete "$AR_LIBS_REPO" "$LIBS_ASSET_ID"` == "0" ]; then
echo "ERROR: Failed to delete asset '$LIBS_ZIP_FILENAME'"
fi
JSON_ASSET_ID=`github_release_asset_id "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "$LIBS_JSON_FILENAME"`
if [ "$JSON_ASSET_ID" != "" ] && [ `github_release_asset_delete "$AR_LIBS_REPO" "$JSON_ASSET_ID"` == "0" ]; then
echo "ERROR: Failed to delete asset '$LIBS_JSON_FILENAME'"
fi
fi
echo "Creating asset '$LIBS_ZIP_FILENAME'..."
mv -f "dist/esp32-arduino-libs.zip" "dist/$LIBS_ZIP_FILENAME"
LIBS_ASSET_ID=`github_release_asset_upload "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "$LIBS_ZIP_FILENAME" "dist/$LIBS_ZIP_FILENAME"`
if [ -z "$LIBS_ASSET_ID" ]; then
echo "ERROR: Failed to upload asset '$LIBS_ZIP_FILENAME'"
exit 1
fi
echo "Finished uploading asset '$LIBS_ZIP_FILENAME'. Asset ID: $LIBS_ASSET_ID"
# Calculate the local file checksum and size
local_checksum=$(sha256sum "dist/$LIBS_ZIP_FILENAME" | awk '{print $1}')
local_size=$(stat -c%s "dist/$LIBS_ZIP_FILENAME")
echo "Downloading asset '$LIBS_ZIP_FILENAME' and checking integrity..."
# Download the file
remote_file="remote-$LIBS_ZIP_FILENAME"
curl -s -L -o "$remote_file" "$IDF_LIBS_ZIP_URL"
# Check if the download was successful
if [ $? -ne 0 ]; then
echo "Error downloading file from $IDF_LIBS_ZIP_URL"
exit 1
fi
# Calculate the remote file checksum and size
remote_checksum=$(sha256sum "$remote_file" | awk '{print $1}')
remote_size=$(stat -c%s "$remote_file")
echo "Local: $local_size bytes, $local_checksum"
echo "Remote: $remote_size bytes, $remote_checksum"
# Check if the checksums match
if [ "$local_checksum" != "$remote_checksum" ]; then
echo "Checksum mismatch for downloaded file"
echo "Deleting asset and exiting..."
if [ `github_release_asset_delete "$AR_LIBS_REPO" "$LIBS_ASSET_ID"` == "0" ]; then
echo "ERROR: Failed to delete asset '$LIBS_ZIP_FILENAME'"
fi
exit 1
fi
# Clean up the downloaded file
rm "$remote_file"
# Print the results
echo "Tool: esp32-arduino-libs"
echo "Version: $LIBS_VERSION"
echo "URL: $IDF_LIBS_ZIP_URL"
echo "File: $LIBS_ZIP_FILENAME"
echo "Size: $local_size bytes"
echo "SHA-256: $local_checksum"
echo "JSON: $AR_OUT/package_esp32_index.template.json"
cd "$AR_ROOT"
python3 tools/add_sdk_json.py -j "$AR_OUT/package_esp32_index.template.json" -n "esp32-arduino-libs" -v "$LIBS_VERSION" -u "$IDF_LIBS_ZIP_URL" -f "$LIBS_ZIP_FILENAME" -s "$local_size" -c "$local_checksum"
if [ $? -ne 0 ]; then exit 1; fi
JSON_ASSET_ID=`github_release_asset_upload "$AR_LIBS_REPO" "$LIBS_RELEASE_ID" "$LIBS_JSON_FILENAME" "$AR_OUT/package_esp32_index.template.json"`
if [ -z "$JSON_ASSET_ID" ]; then
echo "ERROR: Failed to upload asset '$LIBS_JSON_FILENAME'"
exit 1
fi
fi
#
# esp32-arduino
#
if [ $AR_HAS_COMMIT == "0" ] || [ $LIBS_HAS_ASSET == "0" ]; then
cd "$AR_ROOT"
# create or checkout the branch
if [ ! $AR_HAS_BRANCH == "0" ]; then
echo "Switching to arduino branch '$AR_NEW_BRANCH_NAME'..."
git -C "$AR_COMPS/arduino" checkout $AR_NEW_BRANCH_NAME
else
echo "Creating arduino branch '$AR_NEW_BRANCH_NAME'..."
git -C "$AR_COMPS/arduino" checkout -b $AR_NEW_BRANCH_NAME
fi
if [ $? -ne 0 ]; then
echo "ERROR: Checkout of branch '$AR_NEW_BRANCH_NAME' failed"
exit 1
fi
# make changes to the files
echo "Patching files in branch '$AR_NEW_BRANCH_NAME'..."
rm -rf "$AR_COMPS/arduino/package/package_esp32_index.template.json" && cp -f "$AR_OUT/package_esp32_index.template.json" "$AR_COMPS/arduino/package/package_esp32_index.template.json"
cd $AR_COMPS/arduino
# did any of the files change?
if [ -n "$(git status --porcelain)" ]; then
echo "Pushing changes to branch '$AR_NEW_BRANCH_NAME'..."
git add . && git commit --message "$AR_NEW_COMMIT_MESSAGE" && git push -u origin $AR_NEW_BRANCH_NAME
if [ $? -ne 0 ]; then
echo "ERROR: Pushing to branch '$AR_NEW_BRANCH_NAME' failed"
exit 1
fi
else
echo "No changes in branch '$AR_NEW_BRANCH_NAME'"
if [ $AR_HAS_BRANCH == "0" ]; then
echo "Delete created branch '$AR_NEW_BRANCH_NAME'"
git branch -d $AR_NEW_BRANCH_NAME
fi
exit 0
fi
# CREATE PULL REQUEST
if [ "$AR_HAS_PR" == "0" ]; then
echo "Creating PR '$AR_NEW_PR_TITLE'..."
pr_created=`git_create_pr "$AR_NEW_BRANCH_NAME" "$AR_NEW_PR_TITLE" "$AR_PR_TARGET_BRANCH"`
if [ $pr_created == "0" ]; then
echo "ERROR: Failed to create PR '$AR_NEW_PR_TITLE': "`echo "$git_create_pr_res" | jq -r '.message'`": "`echo "$git_create_pr_res" | jq -r '.errors[].message'`
exit 1
fi
else
echo "PR '$AR_NEW_PR_TITLE' Already Exists"
fi
fi
exit 0