#!/bin/sh
# Filename:      grml-exec-wrapper
# Purpose:       simple but smart program execution wrapper
# Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
# Bug-Reports:   see http://grml.org/bugs/
# License:       This file is licensed under the GPL v2 or any later version.
################################################################################

usage() {
  printf "Usage: $0 <program> [<arguments>]

Available options:

  -h | --help   display this usage information
  -p <program>  check specified argument instead of default args, like:
                $(basename $0) -p aumix xterm -T aumix -e aumix
"
}

is_installed() {
    prog="$1"
    [ -z "$prog" ] && return 1

    case "${prog}" in
        /*) # deal with absolute-path programs
            [ -x "${prog}" ] && return 0
            return 1 ;;
    esac

    ret=1
    oifs="$IFS"
    IFS=:
    for dir in $PATH; do
        [ -z "$dir" ] && continue
        [ -x "$dir/$prog" ] && ret=0 && break
    done

    IFS="$oifs"
    unset oifs
    return "$ret"
}

# use Xdisplay only if present and running under X:
display_info() {
if is_installed xterm && test -n "$DISPLAY" ; then
    xterm -T 'Sorry :(' -e "dialog --msgbox \"$1\" 0 0"
else
    printf '%s\n' "$1">&2
fi
}

if [ -z "$1" -o "$1" = '-h' -o "$1" = '--help' ] ; then
    usage
    exit 1
fi

if [ "$1" = '-p' ] ; then
    if [ -z "$2" ] ; then
         usage
         exit 1
    else
         PROG="$2"
         shift ; shift
    fi
else
    PROG="$1"
    # make sure to support 'grml-exec-wrapper sudo wireshark' as well:
    case $PROG in
      *sudo*) PROG="$2" ;;
    esac
fi

if is_installed "$PROG" ; then
    exec "$@"
fi

display_info "Sorry: ${PROG} not available.

Looks like the grml flavour you are using does not ship ${PROG}. :(

You can search for ${PROG} executing:

apt-get update && apt-cache search $(basename ${PROG})
    "

exit 1

## END OF FILE #################################################################
