mirror of the now-defunct rocklinux.org
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

241 lines
4.6 KiB

#!/bin/bash
bold=""
red=""
green=""
yellow=""
blue=""
normal=""
# {{{ usage_functions
usage_functions(){
echo -n
}
# }}}
# {{{ human readable
human_readable() {
size=${1}
if [ ${size} -gt 1024 ] ; then
if [ ${size} -gt $(( 1024*1024 )) ] ; then
size="$(( ${size} / ( 1024*1024 ) )) MB"
else
size="$(( ${size} / 1024 )) kB"
fi
else
size="${size} Byte"
fi
echo "${size}"
}
# }}}
# {{{ lvp_read
function lvp_read {
var=$1
shift
default=${1}
shift
if [ ${LVP_USE_DEFAULTS} -eq 1 ] ; then
echo "${@} ${default} (batch mode)"
eval "${var}=\"${default}\""
return
fi
eval "read -p \"${@}\" ${var}"
return
}
# }}}
# {{{ confirm
function confirm {
unset yesno
if [ ${LVP_USE_DEFAULTS} -eq 1 ] ; then
echo "${@} [yes|no] ? yes (batch mode)"
yesno="yes"
fi
while [ "${yesno}" != "yes" -a "${yesno}" != "no" ] ; do
echo -n "${@} [yes|no] ? "
read yesno
done
[ "${yesno}" = "yes" ] && return 0
return 1
}
# }}}
# {{{ menu_init
menu_init () {
block_level=0
items=0
}
# }}}
# {{{ block_start
block_start () {
block_level=$(( ${block_level} + 2 ))
echo "${@}"
}
# }}}
# {{{ block_end
block_end () {
block_level=$(( ${block_level} - 2 ))
}
# }}}
# {{{ bool
bool () {
# bool LVPCFG_FOO 1 "This is Option FOO"
items=$(( ${items} + 1 ))
eval "type_${items}=\"bool\""
eval "option_${items}=\"${1}\""
eval "value=\${${1}}"
[ -z "${value}" ] && \
eval "${1}=\"${2}\""
eval "text_${items}=\"${3}\""
}
# }}}
# {{{ multi
multi () {
# multi LVPCFG_FOO default "This is Multioption FOO" foo default bar
items=$(( ${items} + 1 ))
eval "type_${items}=\"multi\""
eval "option_${items}=\"${1}\""
eval "value=\${${1}}"
[ -z "${value}" ] && \
eval "${1}=\"${2}\""
eval "text_${items}=\"${3}\""
shift; shift; shift
eval "values_${items}=\"\""
while [ ! -z "${1}" ] ; do
eval "values_${items}=\"\${values_${items}} ${1}\""
shift
done
}
# }}}
# {{{ text
text () {
# text LVPCFG_FOO "default text" "This is textoption FOO"
items=$(( ${items} + 1 ))
eval "type_${items}=\"text\""
eval "option_${items}=\"${1}\""
eval "value=\${${1}}"
[ -z "${value}" ] && \
eval "${1}=\"${2}\""
eval "text_${items}=\"${3}\""
}
# }}}
# {{{ comment
comment (){
items=$(( ${items} + 1 ))
eval "type_${items}=\"comment\""
eval "text_${items}=\"${@}\""
}
# }}}
# {{{ display
display () {
i=1
while [ ${i} -le ${items} ] ; do
eval "type=\${type_${i}}"
case "${type}" in
bool)
eval "option=\${option_${i}}"
eval "value=\${${option}}"
desc="X"
[ "${value}" == "0" ] && desc=" "
eval "echo \"${i} - [${desc}] \${text_${i}}\""
;;
multi)
eval "option=\${option_${i}}"
eval "value=\${${option}}"
eval "echo \"${i} - (${value}) \${text_${i}}\""
;;
text)
eval "option=\${option_${i}}"
eval "value=\${${option}}"
dots="..."
[ "${value:0:17}" == "${value}" ] && dots=""
eval "echo \"${i} - (${value:0:17}${dots}) \${text_${i}}\""
;;
comment)
eval "echo \"\${text_${i}}\""
;;
*)
echo "${type} NOT IMPLEMENTED"
;;
esac
i=$(( ${i} + 1 ))
done
}
# }}}
# {{{ save
save () {
i=1
echo "# LVP Configuration" > .config
while [ ${i} -le ${items} ] ; do
eval "option=\${option_${i}}"
eval "value=\${${option}}" 2>/dev/null
eval "type=\${type_${i}}"
case "${type}" in
bool)
echo "${option}=${value}" >>.config
;;
multi)
echo "${option}=\"${value}\"" >>.config
;;
text)
echo "${option}=\"${value}\"" >>.config
;;
esac
i=$(( ${i} + 1 ))
done
}
# }}}
# {{{ load
load () {
. .config
}
# }}}
# {{{ get
get () {
# get 3
eval "option=\${option_${1}}"
if [ -z "${option}" ] ; then
echo "${bold}${red}No such option: ${1}${normal}"
sleep 1
return
fi
eval "type=\${type_${1}}"
case "${type}" in
text)
eval "value=\${${option}}"
read -erp "Enter new value for ${option} [${value}]> " new
[ ! -z "${new}" ] && eval "${option}=\"${new}\""
;;
multi)
eval "value=\${${option}}"
eval "values=\${values_${1}}"
x=1
for v in ${values} ; do
[ "${value}" == "${v}" ] && echo -n "${bold}"
echo "${x} - ${v}${normal}"
eval "nval_${1}_${x}=\"${v}\""
x=$(( ${x} + 1 ))
done
read -ep "Enter new value by number> " new
[ -z "${new}" ] && return
eval "new=\${nval_${1}_${new}}"
if [ -z "${new}" ] ; then
echo "${bold}${red}No such option!${normal}"
sleep 1
return
else
eval "${option}=\"${new}\""
fi
;;
bool)
eval "value=\${${option}}"
if [ ${value} -eq 1 ] ; then
eval "${option}=0"
else
eval "${option}=1"
fi
;;
*)
echo "${bold}${red}NOT IMPLEMENTED${normal}"
sleep 1
;;
esac
}
# }}}