#!/bin/bash

ME=${0##*/}

WORK_DIR=/run/$ME
FIFO=$WORK_DIR/fifo

CLI_PROG="live-usb-maker"
PROG_FILE="/var/log/$CLI_PROG.progress"
LOCK_FILE="/run/lock/$CLI_PROG"
LIB_FILE=/usr/local/lib/cli-shell-utils/cli-shell-utils.bash

main() {

    source $LIB_FILE || error "Could not source $LIB_FILE"

    trap clean_up EXIT
    gui_flock $LOCK_FILE || error "already locked"
    mkdir -p $WORK_DIR

    mkfifo $FIFO
    exec 10<> $FIFO
    truncate -s0 $PROG_FILE

    local lum_pid yad_pid
    while true; do

        yad --text-info --width=880 --height=350 --tail --center <&10 &
        yad_pid=$!

        tail -n20  -f --pid=$yad_pid $PROG_FILE >&10 &

        if [ -z "$lum_pid" ]; then 
            $CLI_PROG gui --force=flock "$@" &>/dev/null &
            lum_pid=$!
        fi

        while true; do
            sleep 0.1
            test -d /proc/$yad_pid && test -d /proc/$lum_pid && continue
            break
        done

        # Suspend lum
        test -d /proc/$lum_pid && kill -STOP $lum_pid

        sleep 0.1

        test -d /proc/$yad_pid || echo "yad exited"
        test -d /proc/$lum_pid || echo "lum exited"

        if test -d /proc/$lum_pid; then
            YES_no "Do you want to keep going?" || break
            kill -CONT $lum_pid
            continue
        else
            break
        fi
    done

    echo -n "Press <Enter> to continue ... "
    read x
    echo "killing yad and lum as needed  ..."

    # I don't know why I no longer get the Terminate message
    kill $yad_pid 2>/dev/null
    kill $lum_pid 2>/dev/null
}

error() {
    echo "Error: $*" >&2
    exit 3
}

clean_up() {
    test -e $FIFO     && rm -f $FIFO
    test -d $WORK_DIR && rmdir $WORK_DIR
    unflock $LOCK_FILE
}

main "$@"
