Skip to content

Commit fbf8241

Browse files
committed
Various improvements
1 parent 714207a commit fbf8241

File tree

3 files changed

+81
-61
lines changed

3 files changed

+81
-61
lines changed

.github/workflows/CI.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
chmod +x swiftbox.sh
1515
VERSION=`./swiftbox.sh version`
1616
echo "::set-env name=version::$VERSION"
17-
if [ $? -eq 0 ]
17+
if [ $? = 0 ]
1818
then
1919
if [ v$VERSION != `curl -fsSL https://api.github.com/repos/stevapple/swiftbox/releases/latest | jq .tag_name | sed "s/\"//g"` ]
2020
then

install.sh

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
#!/bin/bash
22

3-
if [ ! `id -u` -eq 0 ]
3+
if [ `id -u` != 0 ]
44
then
55
SUDO_FLAG="sudo"
66
fi
77

8-
if [ -f "/etc/redhat-release" ]
8+
if [ -f /etc/redhat-release ]
99
then
1010
REDHAT_RELEASE=`cat /etc/redhat-release`
1111
if [[ $REDHAT_RELEASE =~ "CentOS" || $REDHAT_RELEASE =~ "Red Hat Enterprise Linux" ]]
@@ -16,38 +16,51 @@ then
1616
fi
1717
elif hash lsb_release 2> /dev/null
1818
then
19-
if [ "E`lsb_release -i --short`" = "EUbuntu" ]
19+
if [ `lsb_release -i --short` = "Ubuntu" ]
2020
then
2121
$SUDO_FLAG apt-get install curl jq -q=2
2222
else
2323
UNSUPPORTED_SYSTEM=`lsb_release -d -s`
2424
fi
25+
elif hash uname 2> /dev/null
26+
then
27+
UNSUPPORTED_SYSTEM=`uname -v`
28+
else
29+
UNSUPPORTED_SYSTEM="This strange OS"
2530
fi
2631

27-
if [ E$UNSUPPORTED_SYSTEM != "E" ]
28-
then
32+
if [ $UNSUPPORTED_SYSTEM ]
33+
then
2934
echo "This program only supports Ubuntu and CentOS (RHEL). "
3035
echo "$UNSUPPORTED_SYSTEM is unsupported. "
3136
exit 255
3237
fi
3338

3439
LATEST_VERSION=`curl -fsSL https://api.github.com/repos/stevapple/swiftbox/releases/latest | jq .tag_name | sed "s/v//" | sed "s/\"//g"`
3540
INSTALL_DIR="/usr/bin"
36-
SWIFTBOX_VERSION=`$INSTALL_DIR/swiftbox version`
37-
if [ $? -eq 0 ]
41+
42+
if [ -d $INSTALL_DIR/swiftbox ]
43+
then
44+
echo "Unexpected directory in $INSTALL_DIR/swiftbox"
45+
exit 254
46+
elif [ -f $INSTALL_DIR/swiftbox ]
3847
then
48+
if [ ! -x $INSTALL_DIR/swiftbox ]
49+
then
50+
$SUDO_FLAG chmod +x $INSTALL_DIR/swiftbox
51+
fi
52+
SWIFTBOX_VERSION=`$INSTALL_DIR/swiftbox version`
53+
if [ $SWIFTBOX_VERSION = $LATEST_VERSION ]
54+
then
55+
echo "Already installed the latest version $SWIFTBOX_VERSION at $INSTALL_DIR. "
56+
exit
57+
fi
3958
SUCCESS_MESSAGE="Successfully upgraded swiftbox from $SWIFTBOX_VERSION to $LATEST_VERSION. "
4059
else
4160
SUCCESS_MESSAGE="Successfully installed swiftbox $LATEST_VERSION at $INSTALL_DIR. "
4261
fi
4362

44-
if [ E$SWIFTBOX_VERSION = E$LATEST_VERSION ]
45-
then
46-
echo "Already installed the latest version $SWIFTBOX_VERSION at $INSTALL_DIR. "
47-
exit
48-
fi
49-
50-
$SUDO_FLAG curl -o "$INSTALL_DIR/swiftbox" "https://cdn.jsdelivr.net/gh/stevapple/swiftbox@$LATEST_VERSION/swiftbox.sh"
51-
$SUDO_FLAG chmod +x "$INSTALL_DIR/swiftbox"
63+
$SUDO_FLAG curl -o $INSTALL_DIR/swiftbox https://cdn.jsdelivr.net/gh/stevapple/swiftbox@$LATEST_VERSION/swiftbox.sh
64+
$SUDO_FLAG chmod +x $INSTALL_DIR/swiftbox
5265
hash -r
5366
echo $SUCCESS_MESSAGE

swiftbox.sh

Lines changed: 52 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,43 @@
11
#!/bin/bash
22

3-
if [ -f "/etc/redhat-release" ]
3+
SWIFTBOX_VERSION="0.7"
4+
INSTALL_DIR="/usr/bin"
5+
6+
if [ -f /etc/redhat-release ]
47
then
58
REDHAT_RELEASE=`cat /etc/redhat-release`
69
if [[ $REDHAT_RELEASE =~ "CentOS" || $REDHAT_RELEASE =~ "Red Hat Enterprise Linux" ]]
710
then
811
SYSTEM_NAME="centos"
12+
SYSTEM_NICENAME="CentOS/RHEL"
913
SYSTEM_VERSION=`cat /etc/redhat-release | grep -E "release \d+" -o | sed "s/release //"`
1014
else
1115
UNSUPPORTED_SYSTEM=$REDHAT_RELEASE
1216
fi
1317
elif hash lsb_release 2> /dev/null
1418
then
15-
if [ "E`lsb_release -i --short`" = "EUbuntu" ]
19+
if [ `lsb_release -i --short` = "Ubuntu" ]
1620
then
1721
SYSTEM_NAME="ubuntu"
22+
SYSTEM_NICENAME="Ubuntu"
1823
SYSTEM_VERSION=`lsb_release -r --short`
1924
else
2025
UNSUPPORTED_SYSTEM=`lsb_release -d -s`
2126
fi
27+
elif hash uname 2> /dev/null
28+
then
29+
UNSUPPORTED_SYSTEM=`uname -v`
30+
else
31+
UNSUPPORTED_SYSTEM="This strange OS"
2232
fi
2333

24-
if [ "E$UNSUPPORTED_SYSTEM" != "E" ]
34+
if [ $UNSUPPORTED_SYSTEM ]
2535
then
2636
echo "This program only supports Ubuntu and CentOS (RHEL). "
2737
echo "$UNSUPPORTED_SYSTEM is unsupported. "
2838
exit 255
2939
fi
3040

31-
SWIFTBOX_VERSION="0.6.3"
32-
INSTALL_DIR="/usr/bin"
33-
3441
get-latest() {
3542
curl -fsSL https://api.github.com/repos/stevapple/swiftbox/releases/latest | jq .tag_name | sed "s/v//" | sed "s/\"//g"
3643
}
@@ -42,28 +49,28 @@ reinit-env() {
4249
}
4350

4451
enable-swiftbox() {
45-
if [ -e $ANOTHER_WD/env.sh ]
52+
if [ -f $ANOTHER_WD/env.sh ]
4653
then
47-
if [ -e $HOME/.zshrc ]
54+
if [ -f $HOME/.zshrc ]
4855
then
4956
reinit-env $HOME/.zshrc
5057
fi
51-
if [ -e $HOME/.bashrc ]
58+
if [ -f $HOME/.bashrc ]
5259
then
5360
reinit-env $HOME/.bashrc
54-
elif [ -e $HOME/.bash_profile ]
61+
elif [ -f $HOME/.bash_profile ]
5562
then
5663
reinit-env $HOME/.bash_profile
5764
fi
5865
else
59-
if [ -e $HOME/.zshrc ]
66+
if [ -f $HOME/.zshrc ]
6067
then
6168
echo "source $WORKING_DIR/env.sh" >> $HOME/.zshrc
6269
fi
63-
if [ -e $HOME/.bashrc ]
70+
if [ -f $HOME/.bashrc ]
6471
then
6572
echo "source $WORKING_DIR/env.sh" >> $HOME/.bashrc
66-
elif [ -e $HOME/.bash_profile ]
73+
elif [ -f $HOME/.bash_profile ]
6774
then
6875
echo "source $WORKING_DIR/env.sh" >> $HOME/.bash_profile
6976
fi
@@ -76,8 +83,8 @@ init-env() {
7683
mkdir $WORKING_DIR/toolchain
7784
mkdir $WORKING_DIR/download
7885
echo "Created swiftbox working directory at $WORKING_DIR. "
79-
echo -e "if [ -e $WORKING_DIR/.swift-version ]\nthen\n\texport PATH=$WORKING_DIR/toolchain/swift-\`cat $WORKING_DIR/.swift-version\`/usr/bin:\$PATH\nfi" > $WORKING_DIR/env.sh
80-
if [ `id -u` -eq 0 ]
86+
echo -e "if [ -f $WORKING_DIR/.swift-version ]\nthen\n\texport PATH=$WORKING_DIR/toolchain/swift-\`cat $WORKING_DIR/.swift-version\`/usr/bin:\$PATH\nfi" > $WORKING_DIR/env.sh
87+
if [ `id -u` = 0 ]
8188
then
8289
$SUDO_FLAG ln -s $WORKING_DIR/env.sh /etc/profile.d/swiftbox.sh
8390
fi
@@ -96,7 +103,7 @@ init-env() {
96103
}
97104

98105
format-version() {
99-
if [ "E$1" = E ]
106+
if [ ! $1 ]
100107
then
101108
echo "Please specify Swift version. "
102109
return 12
@@ -115,7 +122,7 @@ format-version() {
115122
echo "$((10#${VERSION_ARRAY[0]})).$((10#${VERSION_ARRAY[1]}))"
116123
;;
117124
3)
118-
if [ ${VERSION_ARRAY[2]} -eq 0 ]
125+
if [ ${VERSION_ARRAY[2]} = 0 ]
119126
then
120127
echo "$((10#${VERSION_ARRAY[0]})).$((10#${VERSION_ARRAY[1]}))"
121128
else
@@ -148,14 +155,14 @@ disable-swift() {
148155
local SWIFT_VERSION=`default-version`
149156
rm -f $WORKING_DIR/.swift-version
150157
ensure-env
151-
if [ ! E$SWIFT_VERSION = E ]
158+
if [ ! $SWIFT_VERSION ]
152159
then
153160
echo "Swift $SWIFT_VERSION is now disabled. "
154161
fi
155162
}
156163

157164
default-version() {
158-
if [ ! -e $WORKING_DIR/.swift-version ]
165+
if [ ! -f $WORKING_DIR/.swift-version ]
159166
then
160167
echo ""
161168
else
@@ -167,7 +174,7 @@ check-version() {
167174
local DOWNLOAD_URL="https://swift.org/builds/swift-$1-release/$SYSTEM_NAME${SYSTEM_VERSION//./}/swift-$1-RELEASE/swift-$1-RELEASE-$SYSTEM_NAME$SYSTEM_VERSION.tar.gz"
168175
wget --no-check-certificate -q --spider $DOWNLOAD_URL
169176
WGET_RESULT=$?
170-
if [ $WGET_RESULT -eq 8 ]
177+
if [ $WGET_RESULT = 8 ]
171178
then
172179
echo "Swift $1 does not exist or does not support your Ubuntu version. "
173180
return 2
@@ -189,27 +196,27 @@ get-swift() {
189196
local DOWNLOAD_URL="https://swift.org/builds/swift-$NEW_VERSION-release/$SYSTEM_NAME${SYSTEM_VERSION//./}/swift-$NEW_VERSION-RELEASE/$FILE_NAME.tar.gz"
190197
check-version $NEW_VERSION
191198
VERSION_AVAILABILITY=$?
192-
if [ ! $VERSION_AVAILABILITY -eq 0 ]
199+
if [ $VERSION_AVAILABILITY != 0 ]
193200
then
194201
return $VERSION_AVAILABILITY
195202
fi
196-
if [ -e "download/$FILE_NAME.tar.gz.sig" ]
203+
if [ -f download/$FILE_NAME.tar.gz.sig ]
197204
then
198205
wget -c -t 5 -P download "$DOWNLOAD_URL.sig"
199206
else
200-
if [ -e "download/$FILE_NAME.tar.gz" ]
207+
if [ -f download/$FILE_NAME.tar.gz ]
201208
then
202209
wget -c -t 0 -P download $DOWNLOAD_URL
203210
else
204211
wget -t 5 -P download $DOWNLOAD_URL
205212
fi
206-
wget -t 5 -P download "$DOWNLOAD_URL.sig"
213+
wget -t 5 -P download $DOWNLOAD_URL.sig
207214
fi
208215
$SUDO_FLAG gpg --keyserver hkp://pool.sks-keyservers.net --refresh-keys Swift
209-
$SUDO_FLAG gpg --verify "download/$FILE_NAME.tar.gz.sig"
210-
tar -xzf "download/$FILE_NAME.tar.gz" -C "temp"
211-
mv "temp/$FILE_NAME" "toolchain/swift-$NEW_VERSION"
212-
if [ ! -e .swift-version ]
216+
$SUDO_FLAG gpg --verify download/$FILE_NAME.tar.gz.sig
217+
tar -xzf download/$FILE_NAME.tar.gz -C temp
218+
mv temp/$FILE_NAME toolchain/swift-$NEW_VERSION
219+
if [ ! -f .swift-version ]
213220
then
214221
echo "Automatically set Swift $NEW_VERSION as default. "
215222
use-version $NEW_VERSION
@@ -218,7 +225,7 @@ get-swift() {
218225

219226
use-version() {
220227
is-kept $1
221-
if [ $? -eq 0 ]
228+
if [ $? = 0 ]
222229
then
223230
echo $1 > $WORKING_DIR/.swift-version
224231
ensure-env
@@ -241,21 +248,21 @@ is-kept() {
241248
}
242249

243250
ensure-env() {
244-
if [ ! -e $WORKING_DIR ]
251+
if [ ! -d $WORKING_DIR ]
245252
then
246253
echo "It seems you're using swiftbox for the very first time. Let's set up the supporting environment. "
247254
init-env
248255
else
249-
if [ ! E`default-version` = E ]
256+
if [ E`default-version` != E ]
250257
then
251-
hash swift 2>/dev/null || enable-swiftbox
258+
hash swift 2> /dev/null || enable-swiftbox
252259
fi
253260
hash -r
254261
rm -rf $WORKING_DIR/temp/*
255262
fi
256263
}
257264

258-
if [ `id -u` -eq 0 ]
265+
if [ `id -u` = 0 ]
259266
then
260267
WORKING_DIR="/opt/swiftbox"
261268
ANOTHER_WD="$HOME/.swiftbox"
@@ -265,7 +272,7 @@ else
265272
SUDO_FLAG="sudo"
266273
fi
267274

268-
if [ $# -eq 0 ]
275+
if [ $# = 0 ]
269276
then
270277
echo "Please specify a command. "
271278
exit 240
@@ -276,7 +283,7 @@ get)
276283
ensure-env
277284
FORMATTED_VERSION=`format-version $2`
278285
FORMAT_RESULT=$?
279-
if [ ! $FORMAT_RESULT -eq 0 ]
286+
if [ $FORMAT_RESULT != 0 ]
280287
then
281288
echo $FORMATTED_VERSION
282289
exit $FORMAT_RESULT
@@ -287,7 +294,7 @@ get)
287294
exit 34
288295
fi
289296
is-kept $FORMATTED_VERSION
290-
if [ $? -eq 0 ]
297+
if [ $? = 0 ]
291298
then
292299
echo "Swift $FORMATTED_VERSION is kept locally, you can enable it with: $0 use $FORMATTED_VERSION"
293300
exit 33
@@ -299,7 +306,7 @@ remove)
299306
ensure-env
300307
FORMATTED_VERSION=`format-version $2`
301308
FORMAT_RESULT=$?
302-
if [ ! $FORMAT_RESULT -eq 0 ]
309+
if [ $FORMAT_RESULT != 0 ]
303310
then
304311
echo $FORMATTED_VERSION
305312
exit $FORMAT_RESULT
@@ -311,7 +318,7 @@ remove)
311318
use)
312319
FORMATTED_VERSION=`format-version $2`
313320
FORMAT_RESULT=$?
314-
if [ ! $FORMAT_RESULT -eq 0 ]
321+
if [ $FORMAT_RESULT != 0 ]
315322
then
316323
echo $FORMATTED_VERSION
317324
exit $FORMAT_RESULT
@@ -335,21 +342,21 @@ version)
335342
lookup)
336343
FORMATTED_VERSION=`format-version $2`
337344
FORMAT_RESULT=$?
338-
if [ ! $FORMAT_RESULT -eq 0 ]
345+
if [ $FORMAT_RESULT != 0 ]
339346
then
340347
echo $FORMATTED_VERSION
341348
exit $FORMAT_RESULT
342349
fi
343350
check-version $FORMATTED_VERSION
344351
VERSION_AVAILABILITY=$?
345-
if [ ! $VERSION_AVAILABILITY -eq 0 ]
352+
if [ $VERSION_AVAILABILITY != 0 ]
346353
then
347354
exit $VERSION_AVAILABILITY
348355
fi
349-
echo "Swift $FORMATTED_VERSION is available for Ubuntu $UBUNTU_VERSION. "
356+
echo "Swift $FORMATTED_VERSION is available for $SYSTEM_NICENAME $SYSTEM_VERSION. "
350357
;;
351358
update)
352-
if [ ! $(cd `dirname $0`; pwd) = $INSTALL_DIR ]
359+
if [ $(cd `dirname $0`; pwd) != $INSTALL_DIR ]
353360
then
354361
echo "swiftbox is not installed to system, update is unavailable. "
355362
echo "You can install it with: $0 install"
@@ -359,7 +366,7 @@ update)
359366
exit $?
360367
;;
361368
install)
362-
if [ ! $(cd `dirname $0`; pwd) = $INSTALL_DIR ]
369+
if [ $(cd `dirname $0`; pwd) != $INSTALL_DIR ]
363370
then
364371
echo "swiftbox is already installed to system. "
365372
exit 1
@@ -371,9 +378,9 @@ list)
371378
ensure-env
372379
for file in `ls -1 $WORKING_DIR/toolchain`
373380
do
374-
if [ -d "$WORKING_DIR/toolchain/$file" ]
381+
if [ -d $WORKING_DIR/toolchain/$file ]
375382
then
376-
if [ $file = "swift-`default-version`" ]
383+
if [ $file = swift-`default-version` ]
377384
then
378385
echo "* ${file#swift\-}"
379386
else

0 commit comments

Comments
 (0)