#!/bin/sh
### BEGIN INIT INFO
# Provides:          console-setup
# Required-Start:    $remote_fs
# Required-Stop:
# Should-Start:      console-screen kbd
# Default-Start:     S
# Default-Stop:
# X-Interactive:     true
# Short-Description: Set console font and keymap
### END INIT INFO

set -e

# This script is used jointly by console-setup and console-setup-mini.
# It belongs to keyboard-configuration because it is forbidden two
# different packages to share common configuration file.

test -f /bin/setupcon || exit 0

if [ -f /lib/lsb/init-functions ]; then
    . /lib/lsb/init-functions
else
    log_action_begin_msg () {
	echo -n "$@... "
    }

    log_action_end_msg () {
	if [ "$1" -eq 0 ]; then 
	    echo done.
	else
	    echo failed.
	fi
    }
fi

# Are we running from init?
run_by_init()
{
    ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}

case "$1" in
    stop)
        # console-setup isn't a daemon
        ;;
    start|force-reload|restart|reload)
	if expr "$(fgconsole 2>/dev/null || true)" : '[1-6]$' >/dev/null && \
	   (! type plymouth >/dev/null || ! plymouth --ping); then
	    log_action_begin_msg "Setting up console font and keymap"
	    # Only use --save if we aren't in the boot sequence, to avoid
	    # slowing down the boot too much. Outside the boot sequence,
	    # this means that 'dpkg-reconfigure console-setup' automatically
	    # saves the font and keymap.
	    if run_by_init; then
		save=
	    else
		save=--save
	    fi
	    if setupcon --force $save; then
		log_action_end_msg 0
	    else
		log_action_end_msg $?
	    fi
	elif ! run_by_init; then
	    log_action_begin_msg "Saving console font and keymap for next boot"
	    if setupcon --save-only; then
		log_action_end_msg 0
	    else
		log_action_end_msg $?
	    fi
	fi
	;;
    *)
        echo 'Usage: /etc/init.d/console-setup {start|reload|restart|force-reload|stop}'
        exit 1
        ;;
esac

