public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] gentoo-x86 commit in app-eselect/eselect-pinentry/files: eselect-pinentry-0.3 pinentry.eselect-0.4
@ 2015-03-31 16:54 Ulrich Mueller (ulm)
  0 siblings, 0 replies; only message in thread
From: Ulrich Mueller (ulm) @ 2015-03-31 16:54 UTC (permalink / raw
  To: gentoo-commits

ulm         15/03/31 16:54:08

  Added:                eselect-pinentry-0.3 pinentry.eselect-0.4
  Log:
  Move package from app-admin to app-eselect category.
  
  (Portage version: 2.2.18/cvs/Linux x86_64, RepoMan options: --force, signed Manifest commit with key 9433907D693FB5B8!)

Revision  Changes    Path
1.1                  app-eselect/eselect-pinentry/files/eselect-pinentry-0.3

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-eselect/eselect-pinentry/files/eselect-pinentry-0.3?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-eselect/eselect-pinentry/files/eselect-pinentry-0.3?rev=1.1&content-type=text/plain

Index: eselect-pinentry-0.3
===================================================================
# 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
}



1.1                  app-eselect/eselect-pinentry/files/pinentry.eselect-0.4

file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-eselect/eselect-pinentry/files/pinentry.eselect-0.4?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/app-eselect/eselect-pinentry/files/pinentry.eselect-0.4?rev=1.1&content-type=text/plain

Index: pinentry.eselect-0.4
===================================================================
# 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





^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2015-03-31 16:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-03-31 16:54 [gentoo-commits] gentoo-x86 commit in app-eselect/eselect-pinentry/files: eselect-pinentry-0.3 pinentry.eselect-0.4 Ulrich Mueller (ulm)

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox