#!/bin/bash export PLATFORM has() { which "$1" >/dev/null 2>&1 return $? } ink() { if [ "$#" -eq 0 -o "$#" -gt 2 ]; then return 1 fi local open="\033[" local close="${open}0m" local black="0;30m" local red="1;31m" local green="1;32m" local yellow="1;33m" local blue="1;34m" local purple="1;35m" local cyan="1;36m" local gray="0;37m" local white="$close" local text="$1" local color="$close" if [ "$#" -eq 2 ]; then text="$2" case "$1" in black | red | green | yellow | blue | purple | cyan | gray | white) eval color="\$$1" ;; esac fi printf "${open}${color}${text}${close}" } log() { if [ "$#" -eq 0 -o "$#" -gt 2 ]; then return 1 fi local color= local text="$2" case "$1" in TITLE) color=yellow ;; ERROR | WARN) color=red ;; INFO) color=green ;; SUCCESS) color=green ;; *) text="$1" esac timestamp() { ink gray "[" ink purple "$(date +%H:%M:%S)" ink gray "] " } timestamp; ink "$color" "$text"; echo } ok() { log SUCCESS "$1" } die() { log ERROR "$1" 1>&2 } lower() { if [ $# -eq 0 ]; then cat <&0 elif [ $# -eq 1 ]; then if [ -f "$1" -a -r "$1" ]; then cat "$1" else echo "$1" fi else return 1 fi | tr "[:upper:]" "[:lower:]" } ostype() { uname | lower } # os_detect export the PLATFORM variable as you see fit os_detect() { export PLATFORM case "$(ostype)" in *'linux'*) PLATFORM='linux' ;; *'darwin'*) PLATFORM='darwin' ;; *'bsd'*) PLATFORM='bsd' ;; *) PLATFORM='unknown' ;; esac } extract() { if [ -f "$1" ] ; then case "$1" in *.tar.bz2) tar xvjf "$1" ;; *.tar.gz) tar xvzf "$1" ;; *.bz2) bunzip2 "$1" ;; *.rar) unrar x "$1" ;; *.gz) gunzip "$1" ;; *.tar) tar xvf "$1" ;; *.tbz2) tar xvjf "$1" ;; *.tgz) tar xvzf "$1" ;; *.zip) unzip "$1" ;; *.Z) uncompress "$1" ;; *.7z) 7z x "$1" ;; *) return 1 ;; esac else echo "missing file" 1>&2 return 1 fi } check_dependencies(