diff options
author | Matthias Schwarzott <zzam@gentoo.org> | 2007-06-03 13:39:48 +0000 |
---|---|---|
committer | Matthias Schwarzott <zzam@gentoo.org> | 2007-06-03 13:39:48 +0000 |
commit | 5625d8b854a9d95446af4608fcde1181cced0fc8 (patch) | |
tree | 2556e4d70e2958d29fd4a89c1330c7e466bfc0c4 | |
download | gentoo-vdr-scripts-5625d8b854a9d95446af4608fcde1181cced0fc8.tar.gz gentoo-vdr-scripts-5625d8b854a9d95446af4608fcde1181cced0fc8.tar.bz2 gentoo-vdr-scripts-5625d8b854a9d95446af4608fcde1181cced0fc8.zip |
Added eselect-module
svn path=/eselect-module/trunk/; revision=465
-rw-r--r-- | vdr.eselect | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/vdr.eselect b/vdr.eselect new file mode 100644 index 0000000..0ad4776 --- /dev/null +++ b/vdr.eselect @@ -0,0 +1,205 @@ +# Copyright 1999-2005 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: bashcomp.eselect 367 2007-03-28 14:35:23Z pioto $ + +DESCRIPTION="Manage VDR plugins" +MAINTAINER="zzam@gentoo.org" +SVN_DATE='$Date: $' +VERSION=$(svn_date_to_version "${SVN_DATE}") + +find_plugins() { + local plugins plugin f plugindir="${ROOT}/usr/lib/vdr/plugins" + + for f in ${plugindir}/libvdr-*.so* ; do + [[ -e ${f} ]] || continue + + plugin="${f##*/libvdr-}" + plugin="${plugin%.so.*}" + plugins="${plugins}\n${plugin}" + done + + echo -ne ${plugins} | sort -u +} + +show_enabled_plugins() { + local plugins line conffile="${ROOT}/etc/conf.d/vdr.plugins" + + exec 3<${conffile} + while read plugin <&3; do + [ "${plugin}" = "" ] && continue + [ "${plugin#"#"}" != "${plugin}" ] && continue + plugins="${plugins}\n${plugin}" + done + + echo -ne ${plugins} | sort -u +} + +is_enabled() { + local conffile="${ROOT}/etc/conf.d/vdr.plugins" + + egrep -q "^${1}\$" "${conffile}" || return 1 + return 0 +} + +plugin_exists() { + local f plugindir="${ROOT}/usr/lib/vdr/plugins" + + for f in ${plugindir}/libvdr-${1}.so.*; do + [[ -e "${f}" ]] && return 0 + done + return 1 +} + +### show action ### + +describe_show() { + echo "Show enabled VDR plugins" +} + +do_show() { + local plugins + [[ -z "${@}" ]] || die -q "Too many parameters" + + plugins=( $(show_enabled_plugins) ) + + write_list_start "Enabled VDR plugins:" + if [[ -n "${plugins[@]}" ]] ; then + set -- "${plugins[@]}" + for plugin; do + write_kv_list_entry "${plugin}" "" + done + else + write_kv_list_entry "(none enabled)" "" + fi +} + +### list action ### + +describe_list() { + echo "List available VDR plugins" +} + +do_list() { + local opts + plugins=( $(find_plugins) ) + write_list_start "Available VDR plugins:" + + if [[ -n "${plugins[@]}" ]] ; then + for (( n = 0 ; n < ${#plugins[@]} ; ++n )) ; do + is_enabled ${plugins[${n}]} && \ + plugins[${n}]="${plugins[${n}]} $(highlight '*')" + done + write_numbered_list "${plugins[@]}" + else + write_kv_list_entry "(none found)" "" + fi + + return 0 +} + +### enable action ### + +describe_enable() { + echo "Enable specified Plugin(s)" +} + +describe_enable_parameters() { + echo "<plugin>" +} + +describe_enable_options() { + echo "<plugin> : Plugin name" +} + +do_enable() { + local conffile="${ROOT}/etc/conf.d/vdr.plugins" plugins plugin + + [[ -z ${1} ]] && die -q "You didn't specify any plugins to enable." + + # make sure we have proper permissions + [[ -w ${conffile} ]] || \ + die -q "You don't have permission to write to ${conffile}" + + plugins=( $(find_plugins) ) + + for plugin in $@ ; do + local p=${plugin} + + is_number ${p} && \ + p=${plugins[$(( ${p} - 1 ))]} + + [[ -z "${p}" ]] && \ + die -q "Plugin \"${plugin}\" doesn't appear to be valid!" + + plugin=${p} + + # ignore any unrecognized options + [[ ${plugin} == --* ]] && continue + + # does plugin exist + if ! plugin_exists "${plugin}"; then + write_error_msg "Plugin ${plugin} doesn't exist" + continue + fi + + # already enabled? + if is_enabled "${plugin}"; then + write_error_msg "Plugin ${plugin} is already enabled" + continue + fi + + # finally, add it to conffile + echo "${plugin}" >> "${conffile}" + done +} + +### disable action ### + +describe_disable() { + echo "Disable specified plugin(s)" +} + +describe_disable_parameters() { + echo "<plugin>" +} + +describe_disable_options() { + echo "<plugin> : Plugin name" +} + + +do_disable() { + local conffile="${ROOT}/etc/conf.d/vdr.plugins" plugins plugin + + [[ -z ${1} ]] && die -q "You didn't specify any plugins to disable" + + [[ -w ${conffile} ]] || \ + die -q "You don't have permission to write to ${conffile}" + + plugins=( $(find_plugins) ) + + for plugin in $@ ; do + local p=${plugin} + + is_number ${p} && \ + p=${plugins[$(( ${p} - 1 ))]} + + [[ -z "${p}" ]] && \ + die -q "Plugin \"${plugin}\" doesn't appear to be valid!" + + plugin=${p} + + # ignore any unrecognized options + [[ ${plugin} == --* ]] && continue + + # is in installed? + if ! is_enabled "${plugin}"; then + write_error_msg "${plugin} is not enabled" + continue + fi + + sed -e "/^${plugin}\$/d" -i "${conffile}" + done +} + +# vim: set ft=eselect : |