#!/bin/bash
# Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/blob/master/LICENSE.md
IMAGE_FILE=""
OS_PARTITION_NAME="MUDITAOS"
PART_NODE=""
PHONE_DEV=""
function get_phone_dev() {
BLOCK_DEV="/dev/r"$(diskutil info $OS_PARTITION_NAME | grep "Part of Whole" | awk '{print $4}')
echo ${BLOCK_DEV}
}
function unmount_muditaos_partition() {
PART_NODE=$(diskutil info $OS_PARTITION_NAME | grep "Device Node" | awk '{print $3}')
diskutil unmount $PART_NODE > /dev/null 2>&1
}
function eject_device() {
diskutil eject $1
}
MAC_DD="gdd"
function test_if_run_as_root() {
MY_NAME=$(whoami)
if [[ "${MY_NAME}" == "root" ]]; then
cat <<-MSGEND
Please do not run this script as a root.
Script will ask for your password for tasks it needs
to run as a root (sudo ...)
MSGEND
exit 1
fi
}
function test_if_gdd_installed() {
if ! command -v $MAC_DD &> /dev/null; then
echo "$MAC_DD command could not be found. Please, run macflash_setup.sh"
exit 1
fi
}
print_help() {
echo "Usage: $0 -i image [-d device] [-h]"
echo " -i path to Pure/Bell image file"
echo " -d path do Pure/Bell block device (MSC)"
echo " -h print help"
exit 1
}
if [ $# -lt 1 ]; then
print_help
fi
while getopts "hi:d:" arg; do
case "${arg}" in
i)
IMAGE_FILE=$OPTARG
;;
d)
PHONE_DEV=$OPTARG
;;
h)
print_help
;;
*)
print_help
;;
esac
done
test_if_run_as_root
test_if_gdd_installed
if [ -z $PHONE_DEV ]; then
PHONE_DEV=$(get_phone_dev)
fi
if [ ! -e $IMAGE_FILE ]; then
echo "Image file $IMAGE_FILE does not exist"
exit 1
fi
if [ ! -e $PHONE_DEV ]; then
echo "Block device $PHONE_DEV does not exist"
exit 1
fi
unmount_muditaos_partition
echo "Flashing $IMAGE_FILE to $PHONE_DEV..."
sudo gdd if=$IMAGE_FILE of=$PHONE_DEV bs=1M conv=sparse,fdatasync status=progress
eject_device $PHONE_DEV