# This file is used to define functions under the sunzi.* namespace.
# Set $sunzi_pkg to “apt-get” or “yum”, or abort. # if which apt-get >/dev/null 2>&1; then
export sunzi_pkg=apt-get
elif which yum >/dev/null 2>&1; then
export sunzi_pkg=yum
fi
if [ “$sunzi_pkg” = '' ]; then
echo 'sunzi only supports apt-get or yum!' >&2 exit 1
fi
# Mute STDOUT and STDERR # function sunzi.mute() {
echo "Running \"$@\"" `$@ >/dev/null 2>&1` return $?
}
function sunzi.sudo_mute() {
echo "Running \"$@\"" `sudo $@ >/dev/null 2>&1` return $?
}
# Installer # function sunzi.installed() {
if [ "$sunzi_pkg" = 'apt-get' ]; then dpkg -s $@ >/dev/null 2>&1 elif [ "$sunzi_pkg" = 'yum' ]; then rpm -qa | grep $@ >/dev/null fi return $?
}
# When there's “set -e” in install.sh, sunzi.install should be used with if statement, # otherwise the script may exit unexpectedly when the package is already installed. # function sunzi.install() {
if sunzi.installed "$@"; then echo "$@ already installed" else echo "No packages found matching $@. Installing..." sunzi.mute "$sunzi_pkg -y install $@" fi return 0
}
function sunzi.sudo_install() {
if sunzi.installed "$@"; then echo "$@ already installed" else echo "No packages found matching $@. Installing..." sunzi.sudo_mute "$sunzi_pkg -y install $@" fi return 0
}
function sunzi.setup_progress() {
if [[ -e "$HOME/sunzi_progress.txt" ]]; then echo "Provisioning already started" else echo "New provisioning" touch "$HOME/sunzi_progress.txt" fi return 0
}
function sunzi.to_be_done() {
if [[ -z $(grep -Fx "Done $@" "$HOME/sunzi_progress.txt") ]]; then echo "Executing $@" return 0 else echo "Done $@" return 1 fi
}
function sunzi.done() {
echo "Done $@" | tee -a "$HOME/sunzi_progress.txt" return 0
}
function sunzi.start_time() {
echo $(date -u +"%s")
}
function sunzi.elapsed_time() {
start=$1 finish=$(date -u +"%s") elapsed_time=$(($finish-$start)) echo "$(($elapsed_time / 60)) minutes and $(($elapsed_time % 60)) seconds elapsed." return 0
}