#!/bin/sh

set -e

function current_modem {
    modem_list=$(mmcli -L -J)
    while [[ $modem_list == '{"modem-list":[]}' ]]; do
        sleep 1
        modem_list=$(mmcli -L -J)
    done
    echo $modem_list | jq -r 'objects["modem-list"][0]'
}

until modem=$(current_modem); mmcli -m $modem --time -J &> /dev/null; do
    echo "wait time from $modem"
    sleep 1
done

current_time=$(mmcli -m $modem --time -J | jq -r '.modem.time.current')
#timedatectl set-ntp false
# date doesn't have -D flag, need busybox
timestamp_with_timezone=$(busybox date -u -D %Y-%m-%dT%H:%M:%S%z -d "$current_time" +%s)
date +%s --set @$timestamp_with_timezone 1> /dev/null
#timedatectl set-ntp true
hwclock -w
echo "New time: $current_time"
