@@ -21,198 +21,198 @@ EFFECTIVE_BINDIR=""
21
21
DEFAULT_BINDIR=" $PWD /bin"
22
22
23
23
fail () {
24
- echo " $1 "
25
- exit 1
24
+ echo " $1 "
25
+ exit 1
26
26
}
27
27
28
28
initDestination () {
29
- if [ -n " $BINDIR " ]; then
30
- if [ ! -d " $BINDIR " ]; then
31
- # The second instance of $BINDIR is intentionally a literal in this message.
32
- # shellcheck disable=SC2016
33
- fail " $BINDIR " ' ($BINDIR)' " folder not found. Please create it before continuing."
34
- fi
35
- EFFECTIVE_BINDIR=" $BINDIR "
36
- else
37
- if [ ! -d " $DEFAULT_BINDIR " ]; then
38
- mkdir " $DEFAULT_BINDIR "
39
- fi
40
- EFFECTIVE_BINDIR=" $DEFAULT_BINDIR "
41
- fi
42
- echo " Installing in $EFFECTIVE_BINDIR "
29
+ if [ -n " $BINDIR " ]; then
30
+ if [ ! -d " $BINDIR " ]; then
31
+ # The second instance of $BINDIR is intentionally a literal in this message.
32
+ # shellcheck disable=SC2016
33
+ fail " $BINDIR " ' ($BINDIR)' " folder not found. Please create it before continuing."
34
+ fi
35
+ EFFECTIVE_BINDIR=" $BINDIR "
36
+ else
37
+ if [ ! -d " $DEFAULT_BINDIR " ]; then
38
+ mkdir " $DEFAULT_BINDIR "
39
+ fi
40
+ EFFECTIVE_BINDIR=" $DEFAULT_BINDIR "
41
+ fi
42
+ echo " Installing in $EFFECTIVE_BINDIR "
43
43
}
44
44
45
45
initArch () {
46
- ARCH=$( uname -m)
47
- case $ARCH in
48
- armv5* ) ARCH=" armv5" ;;
49
- armv6* ) ARCH=" ARMv6" ;;
50
- armv7* ) ARCH=" ARMv7" ;;
51
- aarch64) ARCH=" ARM64" ;;
52
- x86) ARCH=" 32bit" ;;
53
- x86_64) ARCH=" 64bit" ;;
54
- i686) ARCH=" 32bit" ;;
55
- i386) ARCH=" 32bit" ;;
56
- esac
57
- echo " ARCH=$ARCH "
46
+ ARCH=$( uname -m)
47
+ case $ARCH in
48
+ armv5* ) ARCH=" armv5" ;;
49
+ armv6* ) ARCH=" ARMv6" ;;
50
+ armv7* ) ARCH=" ARMv7" ;;
51
+ aarch64) ARCH=" ARM64" ;;
52
+ x86) ARCH=" 32bit" ;;
53
+ x86_64) ARCH=" 64bit" ;;
54
+ i686) ARCH=" 32bit" ;;
55
+ i386) ARCH=" 32bit" ;;
56
+ esac
57
+ echo " ARCH=$ARCH "
58
58
}
59
59
60
60
initOS () {
61
- OS=$( uname -s)
62
- case " $OS " in
63
- Linux* ) OS=' Linux' ;;
64
- Darwin* ) OS=' macOS' ;;
65
- MINGW* ) OS=' Windows' ;;
66
- MSYS* ) OS=' Windows' ;;
67
- esac
68
- echo " OS=$OS "
61
+ OS=$( uname -s)
62
+ case " $OS " in
63
+ Linux* ) OS=' Linux' ;;
64
+ Darwin* ) OS=' macOS' ;;
65
+ MINGW* ) OS=' Windows' ;;
66
+ MSYS* ) OS=' Windows' ;;
67
+ esac
68
+ echo " OS=$OS "
69
69
}
70
70
71
71
initDownloadTool () {
72
- if command -v " curl" > /dev/null 2>&1 ; then
73
- DOWNLOAD_TOOL=" curl"
74
- elif command -v " wget" > /dev/null 2>&1 ; then
75
- DOWNLOAD_TOOL=" wget"
76
- else
77
- fail " You need curl or wget as download tool. Please install it first before continuing"
78
- fi
79
- echo " Using $DOWNLOAD_TOOL as download tool"
72
+ if command -v " curl" > /dev/null 2>&1 ; then
73
+ DOWNLOAD_TOOL=" curl"
74
+ elif command -v " wget" > /dev/null 2>&1 ; then
75
+ DOWNLOAD_TOOL=" wget"
76
+ else
77
+ fail " You need curl or wget as download tool. Please install it first before continuing"
78
+ fi
79
+ echo " Using $DOWNLOAD_TOOL as download tool"
80
80
}
81
81
82
82
checkLatestVersion () {
83
- # Use the GitHub releases webpage to find the latest version for this project
84
- # so we don't get rate-limited.
85
- CHECKLATESTVERSION_REGEX=" [0-9][A-Za-z0-9\.-]*"
86
- CHECKLATESTVERSION_LATEST_URL=" https://github.com/${PROJECT_OWNER} /${PROJECT_NAME} /releases/latest"
87
- if [ " $DOWNLOAD_TOOL " = " curl" ]; then
88
- CHECKLATESTVERSION_TAG=$( curl -SsL $CHECKLATESTVERSION_LATEST_URL | grep -o " <title>Release $CHECKLATESTVERSION_REGEX · ${PROJECT_OWNER} /${PROJECT_NAME} " | grep -o " $CHECKLATESTVERSION_REGEX " )
89
- elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
90
- CHECKLATESTVERSION_TAG=$( wget -q -O - $CHECKLATESTVERSION_LATEST_URL | grep -o " <title>Release $CHECKLATESTVERSION_REGEX · ${PROJECT_OWNER} /${PROJECT_NAME} " | grep -o " $CHECKLATESTVERSION_REGEX " )
91
- fi
92
- if [ " x$CHECKLATESTVERSION_TAG " = " x" ]; then
93
- echo " Cannot determine latest tag."
94
- exit 1
95
- fi
96
- eval " $1 ='$CHECKLATESTVERSION_TAG '"
83
+ # Use the GitHub releases webpage to find the latest version for this project
84
+ # so we don't get rate-limited.
85
+ CHECKLATESTVERSION_REGEX=" [0-9][A-Za-z0-9\.-]*"
86
+ CHECKLATESTVERSION_LATEST_URL=" https://github.com/${PROJECT_OWNER} /${PROJECT_NAME} /releases/latest"
87
+ if [ " $DOWNLOAD_TOOL " = " curl" ]; then
88
+ CHECKLATESTVERSION_TAG=$( curl -SsL $CHECKLATESTVERSION_LATEST_URL | grep -o " <title>Release $CHECKLATESTVERSION_REGEX · ${PROJECT_OWNER} /${PROJECT_NAME} " | grep -o " $CHECKLATESTVERSION_REGEX " )
89
+ elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
90
+ CHECKLATESTVERSION_TAG=$( wget -q -O - $CHECKLATESTVERSION_LATEST_URL | grep -o " <title>Release $CHECKLATESTVERSION_REGEX · ${PROJECT_OWNER} /${PROJECT_NAME} " | grep -o " $CHECKLATESTVERSION_REGEX " )
91
+ fi
92
+ if [ " x$CHECKLATESTVERSION_TAG " = " x" ]; then
93
+ echo " Cannot determine latest tag."
94
+ exit 1
95
+ fi
96
+ eval " $1 ='$CHECKLATESTVERSION_TAG '"
97
97
}
98
98
99
99
get () {
100
- GET_URL=" $2 "
101
- echo " Getting $GET_URL "
102
- if [ " $DOWNLOAD_TOOL " = " curl" ]; then
103
- GET_HTTP_RESPONSE=$( curl -sL --write-out ' HTTPSTATUS:%{http_code}' " $GET_URL " )
104
- GET_HTTP_STATUS_CODE=$( echo " $GET_HTTP_RESPONSE " | tr -d ' \n' | sed -e ' s/.*HTTPSTATUS://' )
105
- GET_BODY=$( echo " $GET_HTTP_RESPONSE " | sed -e ' s/HTTPSTATUS\:.*//g' )
106
- elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
107
- TMP_FILE=$( mktemp)
108
- GET_BODY=$( wget --server-response --content-on-error -q -O - " $GET_URL " 2> " $TMP_FILE " || true)
109
- GET_HTTP_STATUS_CODE=$( awk ' /^ HTTP/{print $2}' " $TMP_FILE " )
110
- fi
111
- if [ " $GET_HTTP_STATUS_CODE " != 200 ]; then
112
- echo " Request failed with HTTP status code $GET_HTTP_STATUS_CODE "
113
- fail " Body: $GET_BODY "
114
- fi
115
- eval " $1 ='$GET_BODY '"
100
+ GET_URL=" $2 "
101
+ echo " Getting $GET_URL "
102
+ if [ " $DOWNLOAD_TOOL " = " curl" ]; then
103
+ GET_HTTP_RESPONSE=$( curl -sL --write-out ' HTTPSTATUS:%{http_code}' " $GET_URL " )
104
+ GET_HTTP_STATUS_CODE=$( echo " $GET_HTTP_RESPONSE " | tr -d ' \n' | sed -e ' s/.*HTTPSTATUS://' )
105
+ GET_BODY=$( echo " $GET_HTTP_RESPONSE " | sed -e ' s/HTTPSTATUS\:.*//g' )
106
+ elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
107
+ TMP_FILE=$( mktemp)
108
+ GET_BODY=$( wget --server-response --content-on-error -q -O - " $GET_URL " 2> " $TMP_FILE " || true)
109
+ GET_HTTP_STATUS_CODE=$( awk ' /^ HTTP/{print $2}' " $TMP_FILE " )
110
+ fi
111
+ if [ " $GET_HTTP_STATUS_CODE " != 200 ]; then
112
+ echo " Request failed with HTTP status code $GET_HTTP_STATUS_CODE "
113
+ fail " Body: $GET_BODY "
114
+ fi
115
+ eval " $1 ='$GET_BODY '"
116
116
}
117
117
118
118
getFile () {
119
- GETFILE_URL=" $1 "
120
- GETFILE_FILE_PATH=" $2 "
121
- if [ " $DOWNLOAD_TOOL " = " curl" ]; then
122
- GETFILE_HTTP_STATUS_CODE=$( curl -s -w ' %{http_code}' -L " $GETFILE_URL " -o " $GETFILE_FILE_PATH " )
123
- elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
124
- wget --server-response --content-on-error -q -O " $GETFILE_FILE_PATH " " $GETFILE_URL "
125
- GETFILE_HTTP_STATUS_CODE=$( awk ' /^ HTTP/{print $2}' " $TMP_FILE " )
126
- fi
127
- echo " $GETFILE_HTTP_STATUS_CODE "
119
+ GETFILE_URL=" $1 "
120
+ GETFILE_FILE_PATH=" $2 "
121
+ if [ " $DOWNLOAD_TOOL " = " curl" ]; then
122
+ GETFILE_HTTP_STATUS_CODE=$( curl -s -w ' %{http_code}' -L " $GETFILE_URL " -o " $GETFILE_FILE_PATH " )
123
+ elif [ " $DOWNLOAD_TOOL " = " wget" ]; then
124
+ wget --server-response --content-on-error -q -O " $GETFILE_FILE_PATH " " $GETFILE_URL "
125
+ GETFILE_HTTP_STATUS_CODE=$( awk ' /^ HTTP/{print $2}' " $TMP_FILE " )
126
+ fi
127
+ echo " $GETFILE_HTTP_STATUS_CODE "
128
128
}
129
129
130
130
downloadFile () {
131
- if [ -z " $1 " ]; then
132
- checkLatestVersion TAG
133
- else
134
- TAG=$1
135
- fi
136
- # arduino-lint_0.4.0-rc1_Linux_64bit.[tar.gz, zip]
137
- if [ " $OS " = " Windows" ]; then
138
- ARDUINO_LINT_DIST=" ${PROJECT_NAME} _${TAG} _${OS} _${ARCH} .zip"
139
- else
140
- ARDUINO_LINT_DIST=" ${PROJECT_NAME} _${TAG} _${OS} _${ARCH} .tar.gz"
141
- fi
142
-
143
- # Support specifying nightly build versions (e.g., "nightly-latest") via the script argument.
144
- case " $TAG " in
145
- nightly* )
146
- DOWNLOAD_URL=" https://downloads.arduino.cc/${PROJECT_NAME} /nightly/${ARDUINO_LINT_DIST} "
147
- ;;
148
- * )
149
- DOWNLOAD_URL=" https://downloads.arduino.cc/${PROJECT_NAME} /${ARDUINO_LINT_DIST} "
150
- ;;
151
- esac
152
-
153
- ARDUINO_LINT_TMP_FILE=" /tmp/$ARDUINO_LINT_DIST "
154
- echo " Downloading $DOWNLOAD_URL "
155
- httpStatusCode=$( getFile " $DOWNLOAD_URL " " $ARDUINO_LINT_TMP_FILE " )
156
- if [ " $httpStatusCode " -ne 200 ]; then
157
- echo " Did not find a release for your system: $OS $ARCH "
158
- echo " Trying to find a release using the GitHub API."
159
- LATEST_RELEASE_URL=" https://api.github.com/repos/${PROJECT_OWNER} /$PROJECT_NAME /releases/tags/$TAG "
160
- echo " LATEST_RELEASE_URL=$LATEST_RELEASE_URL "
161
- get LATEST_RELEASE_JSON " $LATEST_RELEASE_URL "
162
- # || true forces this command to not catch error if grep does not find anything
163
- DOWNLOAD_URL=$( echo " $LATEST_RELEASE_JSON " | grep ' browser_' | cut -d\" -f4 | grep " $ARDUINO_LINT_DIST " ) || true
164
- if [ -z " $DOWNLOAD_URL " ]; then
165
- echo " Sorry, we dont have a dist for your system: $OS $ARCH "
166
- fail " You can request one here: https://github.com/${PROJECT_OWNER} /$PROJECT_NAME /issues"
167
- else
168
- echo " Downloading $DOWNLOAD_URL "
169
- getFile " $DOWNLOAD_URL " " $ARDUINO_LINT_TMP_FILE "
170
- fi
171
- fi
131
+ if [ -z " $1 " ]; then
132
+ checkLatestVersion TAG
133
+ else
134
+ TAG=$1
135
+ fi
136
+ # arduino-lint_0.4.0-rc1_Linux_64bit.[tar.gz, zip]
137
+ if [ " $OS " = " Windows" ]; then
138
+ ARDUINO_LINT_DIST=" ${PROJECT_NAME} _${TAG} _${OS} _${ARCH} .zip"
139
+ else
140
+ ARDUINO_LINT_DIST=" ${PROJECT_NAME} _${TAG} _${OS} _${ARCH} .tar.gz"
141
+ fi
142
+
143
+ # Support specifying nightly build versions (e.g., "nightly-latest") via the script argument.
144
+ case " $TAG " in
145
+ nightly* )
146
+ DOWNLOAD_URL=" https://downloads.arduino.cc/${PROJECT_NAME} /nightly/${ARDUINO_LINT_DIST} "
147
+ ;;
148
+ * )
149
+ DOWNLOAD_URL=" https://downloads.arduino.cc/${PROJECT_NAME} /${ARDUINO_LINT_DIST} "
150
+ ;;
151
+ esac
152
+
153
+ ARDUINO_LINT_TMP_FILE=" /tmp/$ARDUINO_LINT_DIST "
154
+ echo " Downloading $DOWNLOAD_URL "
155
+ httpStatusCode=$( getFile " $DOWNLOAD_URL " " $ARDUINO_LINT_TMP_FILE " )
156
+ if [ " $httpStatusCode " -ne 200 ]; then
157
+ echo " Did not find a release for your system: $OS $ARCH "
158
+ echo " Trying to find a release using the GitHub API."
159
+ LATEST_RELEASE_URL=" https://api.github.com/repos/${PROJECT_OWNER} /$PROJECT_NAME /releases/tags/$TAG "
160
+ echo " LATEST_RELEASE_URL=$LATEST_RELEASE_URL "
161
+ get LATEST_RELEASE_JSON " $LATEST_RELEASE_URL "
162
+ # || true forces this command to not catch error if grep does not find anything
163
+ DOWNLOAD_URL=$( echo " $LATEST_RELEASE_JSON " | grep ' browser_' | cut -d\" -f4 | grep " $ARDUINO_LINT_DIST " ) || true
164
+ if [ -z " $DOWNLOAD_URL " ]; then
165
+ echo " Sorry, we dont have a dist for your system: $OS $ARCH "
166
+ fail " You can request one here: https://github.com/${PROJECT_OWNER} /$PROJECT_NAME /issues"
167
+ else
168
+ echo " Downloading $DOWNLOAD_URL "
169
+ getFile " $DOWNLOAD_URL " " $ARDUINO_LINT_TMP_FILE "
170
+ fi
171
+ fi
172
172
}
173
173
174
174
installFile () {
175
- ARDUINO_LINT_TMP=" /tmp/$PROJECT_NAME "
176
- mkdir -p " $ARDUINO_LINT_TMP "
177
- if [ " $OS " = " Windows" ]; then
178
- unzip -d " $ARDUINO_LINT_TMP " " $ARDUINO_LINT_TMP_FILE "
179
- else
180
- tar xf " $ARDUINO_LINT_TMP_FILE " -C " $ARDUINO_LINT_TMP "
181
- fi
182
- ARDUINO_LINT_TMP_BIN=" $ARDUINO_LINT_TMP /$PROJECT_NAME "
183
- cp " $ARDUINO_LINT_TMP_BIN " " $EFFECTIVE_BINDIR "
184
- rm -rf " $ARDUINO_LINT_TMP "
185
- rm -f " $ARDUINO_LINT_TMP_FILE "
175
+ ARDUINO_LINT_TMP=" /tmp/$PROJECT_NAME "
176
+ mkdir -p " $ARDUINO_LINT_TMP "
177
+ if [ " $OS " = " Windows" ]; then
178
+ unzip -d " $ARDUINO_LINT_TMP " " $ARDUINO_LINT_TMP_FILE "
179
+ else
180
+ tar xf " $ARDUINO_LINT_TMP_FILE " -C " $ARDUINO_LINT_TMP "
181
+ fi
182
+ ARDUINO_LINT_TMP_BIN=" $ARDUINO_LINT_TMP /$PROJECT_NAME "
183
+ cp " $ARDUINO_LINT_TMP_BIN " " $EFFECTIVE_BINDIR "
184
+ rm -rf " $ARDUINO_LINT_TMP "
185
+ rm -f " $ARDUINO_LINT_TMP_FILE "
186
186
}
187
187
188
188
bye () {
189
- BYE_RESULT=$?
190
- if [ " $BYE_RESULT " != " 0" ]; then
191
- echo " Failed to install $PROJECT_NAME "
192
- fi
193
- exit $BYE_RESULT
189
+ BYE_RESULT=$?
190
+ if [ " $BYE_RESULT " != " 0" ]; then
191
+ echo " Failed to install $PROJECT_NAME "
192
+ fi
193
+ exit $BYE_RESULT
194
194
}
195
195
196
196
testVersion () {
197
- set +e
198
- ARDUINO_LINT=" $( which $PROJECT_NAME ) "
199
- if [ " $? " = " 1" ]; then
200
- # $PATH is intentionally a literal in this message.
201
- # shellcheck disable=SC2016
202
- echo " $PROJECT_NAME not found. You might want to add \" $EFFECTIVE_BINDIR \" to your " ' $PATH'
203
- else
204
- # Convert to resolved, absolute paths before comparison
205
- ARDUINO_LINT_REALPATH=" $( cd -- " $( dirname -- " $ARDUINO_LINT " ) " && pwd -P) "
206
- EFFECTIVE_BINDIR_REALPATH=" $( cd -- " $EFFECTIVE_BINDIR " && pwd -P) "
207
- if [ " $ARDUINO_LINT_REALPATH " != " $EFFECTIVE_BINDIR_REALPATH " ]; then
208
- # shellcheck disable=SC2016
209
- echo " An existing $PROJECT_NAME was found at $ARDUINO_LINT . Please prepend \" $EFFECTIVE_BINDIR \" to your " ' $PATH' " or remove the existing one."
210
- fi
211
- fi
212
-
213
- set -e
214
- ARDUINO_LINT_VERSION=" $( " $EFFECTIVE_BINDIR /$PROJECT_NAME " --version) "
215
- echo " $ARDUINO_LINT_VERSION installed successfully in $EFFECTIVE_BINDIR "
197
+ set +e
198
+ ARDUINO_LINT=" $( which $PROJECT_NAME ) "
199
+ if [ " $? " = " 1" ]; then
200
+ # $PATH is intentionally a literal in this message.
201
+ # shellcheck disable=SC2016
202
+ echo " $PROJECT_NAME not found. You might want to add \" $EFFECTIVE_BINDIR \" to your " ' $PATH'
203
+ else
204
+ # Convert to resolved, absolute paths before comparison
205
+ ARDUINO_LINT_REALPATH=" $( cd -- " $( dirname -- " $ARDUINO_LINT " ) " && pwd -P) "
206
+ EFFECTIVE_BINDIR_REALPATH=" $( cd -- " $EFFECTIVE_BINDIR " && pwd -P) "
207
+ if [ " $ARDUINO_LINT_REALPATH " != " $EFFECTIVE_BINDIR_REALPATH " ]; then
208
+ # shellcheck disable=SC2016
209
+ echo " An existing $PROJECT_NAME was found at $ARDUINO_LINT . Please prepend \" $EFFECTIVE_BINDIR \" to your " ' $PATH' " or remove the existing one."
210
+ fi
211
+ fi
212
+
213
+ set -e
214
+ ARDUINO_LINT_VERSION=" $( " $EFFECTIVE_BINDIR /$PROJECT_NAME " --version) "
215
+ echo " $ARDUINO_LINT_VERSION installed successfully in $EFFECTIVE_BINDIR "
216
216
}
217
217
218
218
# Execution
0 commit comments