update flash_ts100_linux.sh
Change to more generic /bin/sh script * added support for using on shells that don't have UID variable; uses UID if it's available and calls "id -u" when it's not * modified quoting as recommended by shellcheck * changed to not use "$?" to check for failure. Now uses "if ! (command); then (fail condition); fi" for when a command fails
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
# TS100 Flasher for Linux by Alex Wigen (https://github.com/awigen)
|
||||||
|
|
||||||
DIR_TMP="/tmp/ts100"
|
DIR_TMP="/tmp/ts100"
|
||||||
|
|
||||||
function usage() {
|
usage() {
|
||||||
echo
|
echo
|
||||||
echo "#################"
|
echo "#################"
|
||||||
echo "# TS100 Flasher #"
|
echo "# TS100 Flasher #"
|
||||||
@@ -18,36 +18,32 @@ function usage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GAUTOMOUNT=0
|
GAUTOMOUNT=0
|
||||||
function disable_gautomount {
|
disable_gautomount() {
|
||||||
GSETTINGS=$(which gsettings)
|
if ! GSETTINGS=$(which gsettings); then
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
gsettings get org.gnome.desktop.media-handling automount | grep true > /dev/null
|
if ! gsettings get org.gnome.desktop.media-handling automount | grep true > /dev/null; then
|
||||||
if [ $? -eq 0 ]; then
|
|
||||||
GAUTOMOUNT=1
|
GAUTOMOUNT=1
|
||||||
gsettings set org.gnome.desktop.media-handling automount false
|
gsettings set org.gnome.desktop.media-handling automount false
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable_gautomount {
|
enable_gautomount() {
|
||||||
if [ "$GAUTOMOUNT" -ne 0 ]; then
|
if [ "$GAUTOMOUNT" -ne 0 ]; then
|
||||||
gsettings set org.gnome.desktop.media-handling automount true
|
gsettings set org.gnome.desktop.media-handling automount true
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function is_attached {
|
is_attached() {
|
||||||
output=$(lsblk -b --raw --output NAME,MODEL | grep 'DFU.*Disk')
|
if ! output=$(lsblk -b --raw --output NAME,MODEL | grep 'DFU.*Disk'); then
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
DEVICE=$(echo $output | awk '{print "/dev/"$1}')
|
DEVICE=$(echo "$output" | awk '{print "/dev/"$1}')
|
||||||
}
|
}
|
||||||
|
|
||||||
instructions="not printed"
|
instructions="not printed"
|
||||||
function wait_for_ts100 {
|
wait_for_ts100() {
|
||||||
is_attached
|
while ! is_attached; do
|
||||||
while [ $? -ne 0 ]; do
|
|
||||||
if [ "$instructions" = "not printed" ]; then
|
if [ "$instructions" = "not printed" ]; then
|
||||||
echo
|
echo
|
||||||
echo "#####################################################"
|
echo "#####################################################"
|
||||||
@@ -60,29 +56,27 @@ function wait_for_ts100 {
|
|||||||
instructions="printed"
|
instructions="printed"
|
||||||
fi
|
fi
|
||||||
sleep 0.1
|
sleep 0.1
|
||||||
is_attached
|
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
function mount_ts100 {
|
mount_ts100() {
|
||||||
mkdir -p "$DIR_TMP"
|
mkdir -p "$DIR_TMP"
|
||||||
sudo mount -t msdos -o uid=$UID "$DEVICE" "$DIR_TMP"
|
user="${UID:-$(id -u)}"
|
||||||
if [ $? -ne 0 ]; then
|
if ! sudo mount -t msdos -o uid=$user "$DEVICE" "$DIR_TMP"; then
|
||||||
echo "Failed to mount $DEVICE on $DIR_TMP"
|
echo "Failed to mount $DEVICE on $DIR_TMP"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
function umount_ts100 {
|
umount_ts100() {
|
||||||
mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"
|
if ! mountpoint "$DIR_TMP" > /dev/null && sudo umount "$DIR_TMP"; then
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo "Failed to unmount $DIR_TMP"
|
echo "Failed to unmount $DIR_TMP"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
rmdir "$DIR_TMP"
|
rmdir "$DIR_TMP"
|
||||||
}
|
}
|
||||||
|
|
||||||
function cleanup {
|
cleanup() {
|
||||||
enable_gautomount
|
enable_gautomount
|
||||||
if [ -d "$DIR_TMP" ]; then
|
if [ -d "$DIR_TMP" ]; then
|
||||||
umount_ts100
|
umount_ts100
|
||||||
@@ -102,7 +96,7 @@ if [ ! -f "$1" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $(head -c1 "$1") != ":" ] || [ $(tail -n1 "$1" | head -c1) != ":" ]; then
|
if [ "$(head -c1 "$1")" != ":" ] || [ "$(tail -n1 "$1" | head -c1)" != ":" ]; then
|
||||||
echo "'$1' doesn't look like a valid HEX file. Please provide a HEX file to flash"
|
echo "'$1' doesn't look like a valid HEX file. Please provide a HEX file to flash"
|
||||||
usage
|
usage
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
Reference in New Issue
Block a user