#!/bin/sh
#
# Copyright OpenEmbedded Contributors
#
# SPDX-License-Identifier: GPL-2.0-only
#
# Simple script to show a manual power prompt for when you want to use
# automated hardware testing with testimage.bbclass but you don't have a
# web-enabled power strip or similar to do the power on/off/cycle.
#
# You can enable it by enabling testimage (see the Yocto Project
# Development manual "Performing Automated Runtime Testing" section)
# and setting the following in your local.conf:
#
# TEST_POWERCONTROL_CMD = "${COREBASE}/scripts/contrib/dialog-power-control"
#

PROMPT=""
while true; do
    case $1 in
        on)
            PROMPT="Please turn device power on";;
        off)
            PROMPT="Please turn device power off";;
        cycle)
            PROMPT="Please click Done, then turn the device power off then on";;
        "")
            break;;
    esac
    shift
done

if [ "$PROMPT" = "" ] ; then
    echo "ERROR: no power action specified on command line"
    exit 2
fi

if [ "`which kdialog 2>/dev/null`" != "" ] ; then
    DIALOGUTIL="kdialog"
elif [ "`which zenity 2>/dev/null`" != "" ] ; then
    DIALOGUTIL="zenity"
else
    echo "ERROR: couldn't find program to display a message, install kdialog or zenity"
    exit 3
fi

if [ "$DIALOGUTIL" = "kdialog" ] ; then
    kdialog --yesno "$PROMPT" --title "TestImage Power Control" --yes-label "Done" --no-label "Cancel test"
elif [ "$DIALOGUTIL" = "zenity" ] ; then
    zenity --question --text="$PROMPT" --title="TestImage Power Control" --ok-label="Done" --cancel-label="Cancel test"
fi

if [ "$?" != "0" ] ; then
    echo "User cancelled test at power prompt"
    exit 1
fi

