1
0
forked from me/IronOS

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:
slycordinator
2021-12-27 16:26:54 +09:00
committed by GitHub
parent 47b0d287bb
commit 48b9097c2c

View File

@@ -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