#!/bin/bash #----------------------------------------------------------------------- # Script to dowload eBook from http://lidn.sf.net # Only tested in Gentoo Linux. Installation mode just works for devhelp # Licensed GPLv2 by José Alberto Suárez López # lun jul 4 02:19:03 CEST 2005 #----------------------------------------------------------------------- NO_ARGS=0 EBDIR="$HOME/.devhelp/books" TMPDIR="/var/tmp/ebooktmp" DWONDIR="$PWD" [ ! -d ${EBDIR} ] && mkdir -p ${EBDIR} while getopts "u:i:d:s:e:hclr" miopt do case $miopt in h) opth=1 ;; c) RC_NOCOLOR=yes ;; l) optl=1 ;; r) optr=1 ;; i) opti="$OPTARG" ;; d) optd="$OPTARG" ;; s) opts="$OPTARG" ;; u) optu="$OPTARG" ;; e) opte="$OPTARG" ;; *) echo " " "* Try -h for help" exit 1;; esac done if [[ ${RC_NOCOLOR} == yes ]]; then unset GOOD WARN BAD NORMAL HILITE BRACKET BOLD else GOOD=$'\e[32;01m' WARN=$'\e[33;01m' BAD=$'\e[31;01m' NORMAL=$'\e[0m' HILITE=$'\e[36;01m' BRACKET=$'\e[34;01m' BOLD=$'\e[1m' fi eerror () { echo -e " ${BAD}*${NORMAL} $*" } ewarn () { echo -e " ${WARN}*${NORMAL} $*" } einfo () { echo -e " ${GOOD}*${NORMAL} $*" } etab () { echo -e " " "$*" } ayuda () { echo "${HILITE}eBook downloader${NORMAL} for ${BOLD}Gentoo Linux${NORMAL} ${BRACKET}[${NORMAL} ${GOOD}v 0.6${NORMAL} ${BRACKET}]${NORMAL}" echo -e " " "by bass@gentoo.org" echo einfo "Usage: `basename $0` options (-hlrid)" echo etab "${BOLD}-l ${NORMAL} : list aviable eBooks and installed eBooks." etab "${BOLD}-r ${NORMAL} : retrieve/refresh eBooks list." etab "${BOLD}-d NAME${NORMAL} : dowload eBook." etab "${BOLD}-i NAME${NORMAL} : install eBook previously dowloaded to devhelp." etab "${BOLD}-u NAME${NORMAL} : uninstall eBook. ${BAD}Don't use confirmation${NORMAL}." etab "${BOLD}-e NAME${NORMAL} : ${BOLD}emerge${NORMAL} an eBook." etab "${BOLD}-s EXPR${NORMAL} : search eBook." etab "${BOLD}-c ${NORMAL} : disable color." etab "${BOLD}-h ${NORMAL} : show this help." echo einfo "To download and insatll an Ebook : " einfo "${BOLD}ebookmerge.sh -e bashref-2.05a.tgz${NORMAL} or other eBook name." echo einfo "This script actually doesn't works with relative paths." exit 1 } mktmp () { [ ! -d ${TMPDIR} ] && mkdir -p ${TMPDIR} } unpack () { case "$2" in 'gzip') einfo "unpacking $1..." tar xvfz "$1" > /dev/null ;; 'bzip2') einfo "unpacking $1..." tar xvfj "$1" > /dev/null ;; *) if test ! -e "$1" then eerror "$1 not found." exit 1 else eerror "$2 Type not supported." exit 1 fi ;; esac } if [ $# -eq "$NO_ARGS" ] then ayuda fi if [ -n "$opth" ] then ayuda fi if [ -n "$optl" ] then [ ! -f ${EBDIR}/.urls.ebook ] && eerror "First you must use -r option" && exit 1 cat ${EBDIR}/.urls.ebook | awk 'BEGIN { FS="/" } { print $5}' > ${EBDIR}/.list.ebook ls ${EBDIR} > ${EBDIR}/.installed.ebook NUMBER=$(cat ${EBDIR}/.list.ebook | wc -l) einfo "List of know eBooks :" cat ${EBDIR}/.list.ebook einfo "Total eBooks : ${BOLD}$NUMBER${NORMAL}" echo einfo "eBooks installed :" cat ${EBDIR}/.installed.ebook fi if [ -n "$optr" ] then einfo "Dowloading list from http://lidn.sf.net..." cd ${EBDIR} wget -q http://lidn.sourceforge.net/books_download.php cat books_download.php | gawk '/Location/{print $2}' | sed -e 's/<\/b>//' -e 's/
//' > ${EBDIR}/.urls.ebook rm books_download.php einfo "Dowloaded. Use ${BOLD}-l${NORMAL} for a list." fi if [ -n "$opti" ] then [ -z "$*" ] && eerror "Miss NAME parameter." && exit 1 mktmp TYPE=$(file "$opti" | cut -f 2 -d : |cut -f 2 -d ' ') FILE=$(basename $opti) einfo "Preparing to install $opti in DevHelp..." EBNAME=$(echo $FILE | sed -e 's/.tgz//' -e 's/.tar.gz//') cp $opti ${TMPDIR} &> /dev/null cd ${TMPDIR} unpack $opti $TYPE mv book.devhelp book/${EBNAME}.devhelp cp -rf book ${EBDIR}/${EBNAME} rm -rf ${TMPDIR} einfo "$opti installed in DevHelp :-)" fi if [ -n "$optd" ] then [ -z "$*" ] && eerror "Miss NAME parameter." && exit 1 mktmp cd ${DOWNDIR} einfo "Dowloading eBook $optd in $DOWNDIR..." wget -q -c http://lidn.sourceforge.net/books_download/$optd einfo "Dowloaded." fi if [ -n "$opts" ] then [ ! -f ${EBDIR}/.list.ebook ] && eerror "Please use ${BOLD}-l${NORMAL} to create list of eBooks." && exit 1 [ -z "$*" ] && eerror "You need specify what to seacrh." && exit 1 einfo "Results for $opts :" cat ${EBDIR}/.list.ebook | grep $opts fi if [ -n "$optu" ] then [ -z "$*" ] && eerror "You need specify what to delete. Use ${BOLD}-l${NORMAL} for a list." && exit 1 ewarn "$optu will be ${BAD}deleted in 5 seconds${NORMAL}...." sleep 5 rm -rf ${EBDIR}/$optu einfo "$optu was deleted." fi if [ -n "$opte" ] then [ -z "$*" ] && eerror "You need specify what to emerge. Use ${BOLD}-l${NORMAL} for a list." && exit 1 DOWNDIR="$TMPDIR" $0 -d $opte $0 -i ${TMPDIR}/$opte rm -rf ${TMPDIR} fi # vim: set tabstop=8 shiftwidth=4: