#!/bin/bash # populate Debian image # # create a file descriptor for storing log exec 3>/tmp/error.log function error { >&2 printf "\e[31mE\e[0m: %s\n" "$1" } erase_display_char () { local i local nchar nchar=$1 i=0 while [ "$i" -lt "$nchar" ]; do printf "\b \b" ((i=i + 1)) done } install_packages () { local package package="$1" printf "Install %s: " "$package" apt-get install -y "$package" 2>&3 | while read -r x; do display="" pkg_name="" case $x in Get*) pkg_name=$(echo "$x" | awk '{ printf $5 }') display="downloading $pkg_name" ;; Unpack*) pkg_name=$(echo "$x" | awk '{ printf $2 }') display="Unpacking $pkg_name" ;; *already*newest*) pkg_name=$(echo "$x" | awk '{ printf $1 }') display="Already Installed" break ;; esac if [[ -n "$display" ]] then display="$display $pkg_name" erase_display_char "$nchar" printf "%s" "$display" nchar=${#display} fi done } SCRIPT_DIR="$( cd "$( dirname "$0" )" && pwd )" RECIPE_DIR="${SCRIPT_DIR}/recipe" [[ ! -d "$RECIPE_DIR" ]] && { error "Recipe dir ${RECIPE_DIR} does not exist"; exit 10; } export DEBIAN_FRONTEND=noninteractive export DEBCONF_NONINTERACTIVE_SEEN=true export LC_ALL=C export LANGUAGE=C export LANG=C for i in $RECIPE_DIR/*.sh do source $i done exit 0