]> git.ozlabs.org Git - petitboot/blobdiff - utils/pb-console
ui/ncurses/nc-config: expand mask field
[petitboot] / utils / pb-console
index 636c5ad36dff65d449d310309989d8c6967e6e65..d846ea7614703dd80f590f45a6f74341889dd773 100644 (file)
 #!/bin/sh
+#
+# Petitboot utility script for running a petitboot UI program
+# on a console tty.
+#
 
 ui=petitboot-nc
 shell=sh
-
+getty=/sbin/getty
+use_getty=0
 detach=0
 
-while [ -n "$1" ]
+usage() {
+       cat >&2 <<EOF
+pb-console [OPTIONS] -- [ARGS]
+OPTIONS
+     -d, --detach
+             Start in a detached (background) state.
+
+     -g, --getty[=PATH]
+             Start a getty (specified by PATH, otherwise $getty),
+             passing additional ARGS to the getty process
+
+     -s, --shell=PATH
+             Use PATH as the exit-to-shell shell
+
+     -u, --ui=PATH
+             Use PATH as the petitboot UI
+
+     -h, --help
+             Print a help message.
+EOF
+       exit 1
+}
+
+opts=$(getopt --options 'hdg::s:u:' \
+              --long 'help,detach,getty::,shell:,ui:' \
+              -- "$@")
+[ $? = 0 ] || exit 1
+
+eval set -- "$opts"
+
+while :
 do
        case "$1" in
-       -d)
+       -d | --detach)
                detach=1
+               shift
+               ;;
+       -g | --getty)
+               use_getty=1
+               getty_arg="$2"
+               shift 2
+               ;;
+       -s | --shell)
+               shell="$2"
+               shift 2
+               ;;
+       -u | --ui)
+               ui="$2"
+               shift 2
+               ;;
+       --help | -h)
+               usage
                ;;
        --)
+               shift
+               break
                ;;
        *)
-               console=$1
-               ;;
+               echo "getopt error"
+               exit 1
        esac
-       shift
 done
 
-if [ -n "$console" -a "${console#/dev/}" = "$console" ]
+if [ "$use_getty" = 1 ]
 then
-       console="/dev/$console"
+       if [ -n "$getty_arg" ]
+       then
+               getty="$getty_arg"
+       fi
+       if [ "$detach" = 1 ]
+       then
+               $getty -l $0 "$@" &
+               exit
+       else
+               exec $getty -l $0 "$@"
+       fi
 fi
 
-pb_loop() {
-       while :
-       do
-               $ui
-               echo "Exiting petitboot. Type 'exit' to return"
-               $shell
-       done
-}
-
-if [ -n "$console" ]
-then
-       exec <$console >$console 2>&1
-fi
+for f in /etc/environment /etc/locale
+do
+       if [ -e "$f" ]
+       then
+               export $(cat "$f")
+       fi
+done
 
-if [ "$detach" = 1 ]
-then
-       (
-               pb_loop
-       ) &
-else
-       pb_loop
-fi
+while :
+do
+       $ui
+       reset
+       echo "Exiting petitboot. Type 'exit' to return."
+       $shell
+done