diff options
author | Ulrich Müller <ulm@gentoo.org> | 2015-03-31 16:58:42 +0000 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2015-03-31 16:58:42 +0000 |
commit | 37bac0fb2d369e1ee1670df2df1bb5aeea599ddc (patch) | |
tree | eba61bab332516cf3c77cca386465d1ecb9eed4c /app-eselect/eselect-pinentry/files | |
parent | Version bump. (diff) | |
download | historical-37bac0fb2d369e1ee1670df2df1bb5aeea599ddc.tar.gz historical-37bac0fb2d369e1ee1670df2df1bb5aeea599ddc.tar.bz2 historical-37bac0fb2d369e1ee1670df2df1bb5aeea599ddc.zip |
Move package from app-admin to app-eselect category.
Package-Manager: portage-2.2.18/cvs/Linux x86_64
RepoMan-Options: --force
Manifest-Sign-Key: 0x9433907D693FB5B8!
Diffstat (limited to 'app-eselect/eselect-pinentry/files')
-rw-r--r-- | app-eselect/eselect-pinentry/files/eselect-pinentry-0.3 | 147 | ||||
-rw-r--r-- | app-eselect/eselect-pinentry/files/pinentry.eselect-0.4 | 13 |
2 files changed, 160 insertions, 0 deletions
diff --git a/app-eselect/eselect-pinentry/files/eselect-pinentry-0.3 b/app-eselect/eselect-pinentry/files/eselect-pinentry-0.3 new file mode 100644 index 000000000000..2fbf20a68c77 --- /dev/null +++ b/app-eselect/eselect-pinentry/files/eselect-pinentry-0.3 @@ -0,0 +1,147 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: eselect-pinentry-0.3,v 1.1 2015/03/31 16:54:08 ulm Exp $ + +# Based on eselect-sh by Michał Górny + +DESCRIPTION="Manage /usr/bin/pinentry symlink" +MAINTAINER="ssuominen@gentoo.org" +VERSION="0.2" + +## Functions ## + +# find a list of pinentry symlink targets, best first +find_targets() { + local t + for t in \ + pinentry-qt \ + pinentry-gtk-2 \ + pinentry-qt4 \ + pinentry-curses \ + ; do + if [[ -x ${EROOT}/usr/bin/${t} ]]; then + echo ${t} + fi + done +} + +# set the pinentry symlink +set_symlinks() { + local target="${1}" targets + + [[ ! -L ${EROOT}/usr/bin/pinentry && -e ${EROOT}/usr/bin/pinentry ]] && \ + die -q "/usr/bin/pinentry is not a symlink!" + + if is_number "${target}" && [[ ${target} -ge 1 ]]; then + targets=( $(find_targets) ) + + # If no targets are found, remove the symlink and exit + if [[ -L ${EROOT}/usr/bin/pinentry && -z ${targets} ]]; then + rm -f "${EROOT}"/usr/bin/pinentry + return + fi + + target=${targets[target-1]} + fi + + if [[ -x ${EROOT}/usr/bin/${target} ]]; then + local tmpf="${EROOT}"/usr/bin/pinentry.new + # we could use 'ln -f' to directly replace the symlink + # but 'mv' is an atomic operation so it should be more fault-proof + + ln -s "${target}" "${tmpf}" || \ + die -q "Unable to create temporary symlink" + if ! mv "${tmpf}" "${EROOT}"/usr/bin/pinentry; then + rm -f "${tmpf}" # cleanup + die -q "Unable to replace /usr/bin/pinentry symlink with ${target}" + fi + else + die -q "Target '${target}' doesn't appear to be valid!" + fi +} + +### show action ### + +describe_show() { + echo "Show the current pinentry implementation" +} + +do_show() { + [[ -z ${@} ]] || die -q "Too many parameters" + + write_list_start "Current pinentry implementation:" + if [[ -L ${EROOT}/usr/bin/pinentry ]]; then + write_kv_list_entry "$(basename $(readlink ${EROOT}/usr/bin/pinentry))" "" + elif [[ -e ${EROOT}/usr/bin/pinentry ]]; then + write_kv_list_entry "(not a symlink)" "" + else + write_kv_list_entry "(unset)" "" + fi +} + +### list action ### + +describe_list() { + echo "List available pinentry implementations" +} + +do_list() { + [[ -z ${@} ]] || die -q "Too many parameters" + + local i targets + targets=( $(find_targets) ) + if [[ -n ${targets[@]} ]]; then + for (( i = 0; i < ${#targets[@]}; i++ )) ; do + [[ ${targets[${i}]} == $(basename $(readlink ${EROOT}/usr/bin/pinentry)) ]] && \ + targets[${i}]="${targets[${i}]} $(highlight '*')" + done + write_list_start "Available pinentry implementations:" + write_numbered_list "${targets[@]}" + else + write_kv_list_entry "(none found)" "" + fi +} + +### set action ### + +describe_set() { + echo "Set a new pinentry implementation" +} + +describe_set_options() { + echo "target : Target name or number (from 'list' action)" +} + +describe_set_parameters() { + echo "<target>" +} + +do_set() { + if [[ -z ${1} ]]; then + die -q "Not enough parameters" + elif [[ -n ${2} ]]; then + die -q "Too many parameters" + else + set_symlinks "${1}" + fi +} + +### update action ### + +describe_update() { + echo "Automatically update the pinentry implementation" +} + +describe_update_options() { + echo "ifunset : Do not override existing implementation" +} + +do_update() { + [[ -z ${1} || ( -z ${2} && ( ${1} == ifunset || ${1} == '--if-unset' ) ) ]] || \ + die -q "Usage error" + + [[ ( ${1} == ifunset || ${1} == '--if-unset' ) && -L ${EROOT}/usr/bin/pinentry && -x ${EROOT}/usr/bin/pinentry ]] && \ + return + + set_symlinks 1 +} diff --git a/app-eselect/eselect-pinentry/files/pinentry.eselect-0.4 b/app-eselect/eselect-pinentry/files/pinentry.eselect-0.4 new file mode 100644 index 000000000000..91fe4ee1811b --- /dev/null +++ b/app-eselect/eselect-pinentry/files/pinentry.eselect-0.4 @@ -0,0 +1,13 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id: pinentry.eselect-0.4,v 1.1 2015/03/31 16:54:08 ulm Exp $ + +DESCRIPTION="Manage /usr/bin/pinentry implementation" +MAINTAINER="ssuominen@gentoo.org" +VERSION="0.4" + +SYMLINK_PATH=/usr/bin/pinentry +SYMLINK_TARGETS=( pinentry-qt pinentry-gtk-2 pinentry-qt4 pinentry-curses ) +SYMLINK_DESCRIPTION='pinentry binary' + +inherit bin-symlink |