#!/bin/sh #---------------------------------------------------------------------------- # /var/install/include/progress - display progress bar # # Creation: 2007-10-09 max # Last Update: $Id$ # # Copyright (c) 2007-2007 the eisfair team, team(at)eisfair(dot)org # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # usage #---------------------------------------------------------------------------- # # progress_bar [-tty|-html|-file] current max # # -tty use console colors # -html use html tags for colors # -file don't use any color tags # #---------------------------------------------------------------------------- #============================================================================ # main #============================================================================ _progress_signstr="==================================================" _progress_spacestr=" " progress_bar () { _progress_mode="$_EISLIB_PRINTMODE" while [ 1 ] do case "$1" in -tty) _progress_mode='tty'; shift;; -html) _progress_mode='html'; shift;; -file) _progress_mode='file'; shift;; *) break;; esac done _progress_pos=$1 _progress_max=$2 # no progress bar for file or html if [ "$_progress_mode" = "tty" ] then [ $_progress_pos -gt $_progress_max ] && _progress_max=$_progress_pos let _progress_percent="100 * $_progress_pos / $_progress_max" let _progress_signlen="$_progress_percent / 2" let _progress_spacelen="50 - $_progress_signlen" let _progress_spacelen2="3 - ${#_progress_percent}" let _progress_spacelen3="${#_progress_max} - ${#_progress_pos}" echo -ne "\r${_progress_spacestr:0:$_progress_spacelen2}$_progress_percent% [${_progress_signstr:0:$_progress_signlen}>${_progress_spacestr:0:$_progress_spacelen}] ${_progress_spacestr:0:_progress_spacelen3}$_progress_pos / $_progress_max " fi } #============================================================================ # end #============================================================================