Skip to content

Commit ed59ca6

Browse files
committed
Bring installation script into compliance with standard formatting style
This is the standardized shell script formatting style to be used in all Arduino Tooling projects, as defined in `/.editorconfig`.
1 parent ad4cfce commit ed59ca6

File tree

1 file changed

+159
-159
lines changed

1 file changed

+159
-159
lines changed

etc/install.sh

Lines changed: 159 additions & 159 deletions
Original file line numberDiff line numberDiff line change
@@ -21,198 +21,198 @@ EFFECTIVE_BINDIR=""
2121
DEFAULT_BINDIR="$PWD/bin"
2222

2323
fail() {
24-
echo "$1"
25-
exit 1
24+
echo "$1"
25+
exit 1
2626
}
2727

2828
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"
4343
}
4444

4545
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"
5858
}
5959

6060
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"
6969
}
7070

7171
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"
8080
}
8181

8282
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'"
9797
}
9898

9999
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'"
116116
}
117117

118118
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"
128128
}
129129

130130
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
172172
}
173173

174174
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"
186186
}
187187

188188
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
194194
}
195195

196196
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"
216216
}
217217

218218
# Execution

0 commit comments

Comments
 (0)