#!/bin/bash # Copyright 2010-2012, Asio Software Technologies # Distributed under the terms of the GNU General Public License v3 #------------------------------------------------------------------------------- # Downloads files into specified or current directory # Parameters: %url% %directory% #------------------------------------------------------------------------------- function download() { local DEST FILENAME RESULT URL DEST="${2}" FILENAME="${1##*/}" URL="${1}" if isSet DEST; then DEST="${DEST}/${FILENAME}" else DEST="./${FILENAME}" fi logMessage "Downloading ${URL} to ${DEST}" "DEBUG" echo -ne " ${STAR_GREEN} ${FILENAME}: " wget --progress=dot -c -t ${FETCHTRIES} -T ${FETCHTIMEOUT} -O "${DEST}" \ ${URL} 2>&1 | grep --line-buffered "%" | sed -u -e "s/[\.\,]//g" | \ awk '{printf("\b\b\b\b%4s", $2)}' RESULT=${PIPESTATUS[0]} echo -ne "\b\b\b\b" if [ ${RESULT} -ne 0 ]; then logOutput "Unable to download ${URL}! Exit code: ${RESULT}" echo -e "${COLOR_RED}${COLOR_BOLD}ERROR${COLOR_WHITE}${COLOR_NORMAL}" else echo -e "${COLOR_GREEN}${COLOR_BOLD}DONE${COLOR_WHITE}${COLOR_NORMAL}" fi return ${RESULT} } #------------------------------------------------------------------------------- # Creates all components of the specified directories # Parameters: %directory% #------------------------------------------------------------------------------- function makeDirectory() { local OUTPUT RESULT OUTPUT=$(install -d "${@}" 2>&1) RESULT=${?} if [ ${RESULT} -ne 0 ]; then logOutput "${OUTPUT}" fi return ${RESULT} } #------------------------------------------------------------------------------- # Creates a symbolic link between to files in specified target directory # Parameters: %source% %target% #------------------------------------------------------------------------------- function makeLink() { local DESTDIR OUTPUT RESULT DESTDIR="${2%/*}" [[ ! -d ${DESTDIR} ]] && makeDirectory "${DESTDIR}" OUTPUT=$(ln -sfn "${1}" "${2}" 2>&1) RESULT=${?} if [ ${RESULT} -ne 0 ]; then logOutput "${OUTPUT}" fi return ${RESULT} } #------------------------------------------------------------------------------- # Extracts any tar based archive into specified directory # Parameters: %tarball% %destination% #------------------------------------------------------------------------------- function unpack() { local DST EXT OUTPUT RESULT SRC SRC="${1}" DST="${2}" EXT=$(toLower "${SRC##*.}") if [ ! -d ${DST} ]; then makeDirectory ${DST} || return 1 fi case "${EXT}" in bz2) if [ -e /usr/bin/pbzip2 ]; then OUTPUT=$(pbzip2 -dc "${SRC}" 2>&1 | tar xpf - -C "${DST}" 2>&1) else OUTPUT=$(tar xjpf "${SRC}" -C "${DST}" 2>&1) fi RESULT=${?} ;; gz|xz|z) OUTPUT=$(tar xpf "${SRC}" -C "${DST}" 2>&1) RESULT=${?} ;; *) OUTPUT="Unrecognized source compression for ${SRC}" RESULT=1 ;; esac if [ ${RESULT} -ne 0 ]; then logOutput "${OUTPUT}" fi return ${RESULT} }