| # Copyright 1999-2007 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id: mpost.eselect-0.1,v 1.1 2008/09/09 16:46:31 aballier Exp $ |
| |
| DESCRIPTION="Manage /usr/bin/mpost implementations" |
| MAINTAINER="ml@gentoo.org" |
| SVN_DATE='$Date: 2008/09/09 16:46:31 $' |
| VERSION=$(svn_date_to_version "${SVN_DATE}" ) |
| |
| # find a list of mpost symlink targets, best first |
| find_targets() { |
| local f |
| for f in "${ROOT}"/usr/bin/mpost-*; do |
| if [[ -f ${f} ]] ; then |
| echo "${f##*/mpost-}" |
| fi |
| done | sort |
| } |
| |
| # find version number of currently symlinked version |
| identify_target() { |
| local f |
| f="$(canonicalise "${ROOT}"/usr/bin/mpost)" |
| echo "${f##*/mpost-}" |
| } |
| |
| # try to remove the mpost symlink |
| remove_symlinks() { |
| rm -f "${ROOT}"/usr/bin/mpost &>/dev/null |
| } |
| |
| # set the mpost symlink |
| set_symlinks() { |
| local target="${1}" targets |
| if is_number "${target}" && [[ ${target} -ge 1 ]] ; then |
| targets=( $(find_targets ) ) |
| target=${targets[$(( ${target} - 1 ))]} |
| fi |
| if [[ -f "${ROOT}/usr/bin/mpost-${target}" ]] ; then |
| remove_symlinks |
| ln -s "mpost-${target}" "${ROOT}/usr/bin/mpost" || \ |
| die "Could not set ${target} /usr/bin/mpost symlink" |
| echo "Updating TeX formats" |
| [ -z "${ROOT}" ] && fmtutil-sys --all &>/dev/null || write_warning_msg "Could not update TeX formats for some reason, mpost may not work properly." |
| else |
| die -q "Target \"${target}\" doesn't appear to be valid!" |
| fi |
| } |
| |
| ### show action ### |
| |
| describe_show() { |
| echo "Show the current mpost version" |
| } |
| |
| do_show() { |
| [[ -z "${@}" ]] || die -q "Too many parameters" |
| |
| write_list_start "Current mpost verson:" |
| if [[ -L "${ROOT}/usr/bin/mpost" ]] ; then |
| write_kv_list_entry "$(identify_target)" "" |
| elif [[ -e "${ROOT}/usr/bin/mpost" ]] ; then |
| write_kv_list_entry "(not a symlink)" "" |
| else |
| write_kv_list_entry "(unset)" "" |
| fi |
| } |
| |
| ### list action ### |
| |
| describe_list() { |
| echo "List available mpost versions" |
| } |
| |
| do_list() { |
| [[ -z "${@}" ]] || die -q "Too many parameters" |
| |
| local i targets current |
| targets=( $(find_targets ) ) |
| current=$(identify_target) |
| if [[ -n ${targets[@]} ]] ; then |
| for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do |
| [[ ${targets[${i}]} == ${current} ]] && \ |
| targets[${i}]="${targets[${i}]} $(highlight '*' )" |
| done |
| write_list_start "Available mpost versions:" |
| write_numbered_list "${targets[@]}" |
| else |
| write_kv_list_entry "(none found)" "" |
| fi |
| } |
| |
| ### set action ### |
| |
| describe_set() { |
| echo "Set a new mpost version" |
| } |
| |
| describe_set_options() { |
| echo "target : Target version number or index from 'list' action" |
| } |
| |
| describe_set_parameters() { |
| echo "<target>" |
| } |
| |
| do_set() { |
| if [[ -z "${1}" ]] ; then |
| die -q "You didn't give me a version number" |
| |
| elif [[ -n "${2}" ]] ; then |
| die -q "Too many parameters" |
| |
| elif [[ -L "${ROOT}/usr/bin/mpost" ]] ; then |
| if ! remove_symlinks ; then |
| die -q "Can't remove existing version symlink" |
| elif ! set_symlinks "${1}" ; then |
| die -q "Can't set new version" |
| fi |
| |
| elif [[ -e "${ROOT}/usr/bin/mpost" ]] ; then |
| die -q "${ROOT}/usr/bin/mpost seems to be from an old ebuild, please remove manually" |
| else |
| set_symlinks "${1}" || die -q "Can't set new version" |
| fi |
| } |
| |
| ### update action ### |
| |
| describe_update() { |
| echo "Automatically update the mpost version number" |
| } |
| |
| describe_update_options() { |
| echo "--if-unset : Do not override currently selected version" |
| } |
| |
| do_update() { |
| [[ -z "${1}" ]] || ( [[ -z "${2}" ]] && [[ "${1}" == "--if-unset" ]] ) || \ |
| die -q "Usage error" |
| |
| if [[ -L "${ROOT}/usr/bin/mpost" ]] ; then |
| [[ ${1} == "--if-unset" ]] && return |
| remove_symlinks || die -q "Can't remove existing symlink" |
| fi |
| if [[ -e "${ROOT}/usr/bin/mpost" ]] ; then |
| die -q "${ROOT}/usr/bin/mpost seems to be from an old ebuild, please remove manually" |
| elif ! [[ -z $(find_targets ) ]] ; then |
| set_symlinks 1 || die -q "Can't set a new version" |
| fi |
| } |
| |
| # vim: set ft=eselect : |