labs: Adds colorizer for osbash script

Adds script with all the colors and decorators like bold, underline.

Uses this script in main osbash.sh script to bring color to the script
run.

Also adds -c option to enable colors while buiding osbash script.

Usage: ./osbash.sh -b cluster (colors enabled by default)
       ./osbash.sh -b --no-color cluster (colors disabled)

Implements: blueprint osbash-color-support

Change-Id: I5b17221f67f76552deb3498b8a020f1b0d3a64a8
This commit is contained in:
sayalilunkad 2015-03-07 02:26:21 +05:30
parent a6c28ef51e
commit 845d2ae468
2 changed files with 91 additions and 23 deletions

54
labs/lib/osbash/lib.color Normal file
View File

@ -0,0 +1,54 @@
#!/bin/bash
# Colors and decorations
function colorizer {
# Text Reset
local Reset_Color='\x1b[0m'
# Regular
local Black='\x1b[0;30m'
local Red='\x1b[0;31m'
local Green='\x1b[0;32m'
local Yellow='\x1b[0;33m'
local Blue='\x1b[0;34m'
local Purple='\x1b[0;35m'
local Cyan='\x1b[0;36m'
local White='\x1b[0;37m'
# Bold
local Bold_Black='\x1b[1;30m'
local Bold_Red='\x1b[1;31m'
local Bold_Green='\x1b[1;32m'
local Bold_Yellow='\x1b[1;33m'
local Bold_Blue='\x1b[1;34m'
local Bold_Purple='\x1b[1;35m'
local Bold_Cyan='\x1b[1;36m'
local Bold_White='\x1b[1;37m'
# Underline
local Underline_Black='\x1b[4;30m'
local Underline_Red='\x1b[4;31m'
local Underline_Green='\x1b[4;32m'
local Underline_Yellow='\x1b[4;33m'
local Underline_Blue='\x1b[4;34m'
local Underline_Purple='\x1b[1;35m'
local Underline_Cyan='\x1b[4;36m'
local Underline_White='\x1b[4;37m'
# Background
local On_Black='\x1b[40m'
local On_Blue='\x1b[44m'
local On_White='\x1b[47m'
# Color codes
CError=$Red
CStatus=$Bold_Purple
CInfo=$Bold_Yellow
CProcess=$Bold_Blue
CData=$Bold_Cyan
CMissing=$Bold_Red
CReset=$Reset_Color
}
colorizer
unset colorizer

View File

@ -19,9 +19,10 @@ source "$OSBASH_LIB_DIR/lib.$DISTRO"
source "$OSBASH_LIB_DIR/functions.host"
source "$OSBASH_LIB_DIR/virtualbox.functions"
source "$OSBASH_LIB_DIR/virtualbox.install_base"
source "$LIB_DIR/osbash/lib.color"
function usage {
echo "Usage: $0 {-b|-w} [-g GUI] [-n] {basedisk|cluster}"
echo "Usage: $0 {-b|-w} [-g GUI] [--no-color] [-n] {basedisk|NODE [NODE..]}"
# Don't advertise export until it is working properly
#echo " $0 [-e EXPORT] [-n] NODE [NODE..]"
echo ""
@ -31,6 +32,7 @@ function usage {
echo "-w Create Windows batch files"
echo "-g GUI GUI type during build"
#echo "-e EXPORT Export node VMs"
echo "--no-color Disables colors during build"
echo ""
echo "basedisk Build configured basedisk"
echo "cluster Build OpenStack cluster [all nodes]" \
@ -44,10 +46,10 @@ function usage {
function print_config {
if [ "$CMD" = "basedisk" ]; then
echo "Target is base disk: $BASE_DISK"
echo -e "${CInfo:-}Target is base disk:${CData:-} $BASE_DISK${CReset:-}"
else
echo "Base disk: $BASE_DISK"
echo "Distribution name: $(get_distro_name "$DISTRO")"
echo -e "${CInfo:-}Base disk:${CData:-} $BASE_DISK${CReset:-}"
echo -e "${CInfo:-}Distribution name: ${CData:-} $(get_distro_name "$DISTRO")${CReset:-}"
fi
if [ -n "${EXPORT_OVA:-}" ]; then
@ -55,23 +57,23 @@ function print_config {
elif [ -n "${EXPORT_VM_DIR:-}" ]; then
echo "Exporting to directory: ${EXPORT_VM_DIR}"
else
echo -n "Creating Windows batch scripts: "
${WBATCH:-:} echo "yes"
${WBATCH:+:} echo "no"
echo -e -n "${CInfo:-}Creating Windows batch scripts:${CReset:-} "
${WBATCH:-:} echo -e "${CData:-}yes${CReset:-}"
${WBATCH:+:} echo -e "${CData:-}no${CReset:-}"
echo -n "Creating $CMD on this machine: "
${OSBASH:-:} echo "yes"
${OSBASH:+:} echo "no"
echo -e -n "${CInfo:-}Creating $CMD on this machine:${CReset:-} "
${OSBASH:-:} echo -e "${CData:-}yes${CReset:-}"
${OSBASH:+:} echo -e "${CData:-}no${CReset:-}"
echo "VM access method: $VM_ACCESS"
echo -e "${CInfo:-}VM access method:${CData:-} $VM_ACCESS${CReset:-}"
# GUI is the VirtualBox default
echo "GUI type: ${VM_UI:-gui}"
echo -e "${CInfo:-}GUI type:${CData:-} ${VM_UI:-gui}${CReset:-}"
fi
}
while getopts :be:g:hnw opt; do
while getopts :be:g:-:hnw opt; do
case $opt in
e)
if [ "$OPTARG" = ova ]; then
@ -79,7 +81,7 @@ while getopts :be:g:hnw opt; do
elif [ "$OPTARG" = dir ]; then
EXPORT_VM_DIR=$IMG_DIR/oslabs-$DISTRO
else
echo "Error: -e argument must be ova or dir"
echo -e "${CError:-}Error: -e argument must be ova or dir${CReset:-}"
exit
fi
OSBASH=exec_cmd
@ -91,10 +93,22 @@ while getopts :be:g:hnw opt; do
if [[ "$OPTARG" =~ (headless|gui|sdl) ]]; then
VM_UI=$OPTARG
else
echo "Error: -g argument must be gui, sdl, or headless"
echo -e "${CError:-}Error: -g argument must be gui, sdl, or headless${CReset:-}"
exit
fi
;;
-)
case $OPTARG in
no-color)
unset CError CStatus CInfo CProcess CData CMissing CReset
;;
*)
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
echo
usage
;;
esac
;;
h)
usage
;;
@ -105,10 +119,10 @@ while getopts :be:g:hnw opt; do
source "$LIB_DIR/wbatch/batch_for_windows"
;;
:)
echo "Error: -$OPTARG needs argument"
echo -e "${CError:-}Error: -$OPTARG needs argument${CReset:-}"
;;
?)
echo "Error: invalid option -$OPTARG"
echo -e "${CError:-}Error: invalid option -$OPTARG${CReset:-}"
echo
usage
;;
@ -152,12 +166,12 @@ fi
if [ -z "${OSBASH:-}" -a -z "${WBATCH:-}" ]; then
echo
echo "No -b, -w, or -e option given. Exiting."
echo -e "${CMissing:-}No -b, -w, or -e option given. Exiting.${CReset:-}"
exit
fi
STARTTIME=$(date +%s)
echo >&2 "$(date) osbash starting"
echo -e >&2 "${CStatus:-} $(date) osbash starting ${CReset:-}"
clean_dir "$LOG_DIR"
@ -175,10 +189,10 @@ function cleanup_base_disk {
echo >&2 "Unregistering old base disk."
disk_unregister "$BASE_DISK"
fi
echo >&2 "Removing old base disk."
echo -e >&2 "${CStatus:-}Removing old base disk.${CReset:-}"
rm -f "$BASE_DISK"
else
echo >&2 "Nothing to do. Exiting."
echo -e >&2 "${CMissing:-}Nothing to do. Exiting.${CReset:-}"
exit
fi
fi
@ -209,5 +223,5 @@ source "$OSBASH_LIB_DIR/virtualbox.install_nodes"
vm_build_nodes "$CMD"
#-------------------------------------------------------------------------------
ENDTIME=$(date +%s)
echo >&2 "$(date) osbash finished successfully"
echo "osbash completed in $(($ENDTIME - $STARTTIME)) seconds."
echo -e >&2 "${CStatus:-}$(date) osbash finished successfully${CReset:-}"
echo "${CStatus:-}osbash completed in $(($ENDTIME - $STARTTIME)) seconds.${CReset:-}"