public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [gentoo-commits] gentoo-x86 commit in app-admin/eselect-ecj/files: ecj-0.4.eselect
@ 2010-02-28 18:11 99% Jonathan Callen (abcd)
  0 siblings, 0 replies; 1+ results
From: Jonathan Callen (abcd) @ 2010-02-28 18:11 UTC (permalink / raw
  To: gentoo-commits

abcd        10/02/28 18:11:04

  Added:                ecj-0.4.eselect
  Log:
  Version bump to add prefix support, keywords
  (Portage version: -svn/cvs/Linux i686)

Revision  Changes    Path
1.1                  app-admin/eselect-ecj/files/ecj-0.4.eselect

file : http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-admin/eselect-ecj/files/ecj-0.4.eselect?rev=1.1&view=markup
plain: http://sources.gentoo.org/viewcvs.py/gentoo-x86/app-admin/eselect-ecj/files/ecj-0.4.eselect?rev=1.1&content-type=text/plain

Index: ecj-0.4.eselect
===================================================================
# Copyright 1999-2010 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: ecj-0.4.eselect,v 1.1 2010/02/28 18:11:03 abcd Exp $

DESCRIPTION="Manage ECJ targets"
MAINTAINER="chewi@aura-online.co.uk"
VERSION="0.4"

ECJ="${EROOT}/usr/bin/ecj"

# find a list of ecj symlink targets, best first.
find_targets() {
	for f in $(ls -r "${ECJ}"-[0-9]* 2> /dev/null) ; do
		if [[ -f "${f}" ]] ; then
			echo $(basename "${f}")
		fi
	done
}

# get a named or numbered target.
find_target() {
	local target=${1}

	if is_number "${target}" && [[ ${target} -ge 1 ]] ; then
		targets=( $(find_targets ) )
		[[ -z "${targets}" ]] && die -q "No targets found!"
		target=${targets[$(( ${target} - 1 ))]}
	fi

	if [[ "${target}" = ecj-[0-9]* ]] && [[ -f "${EROOT}/usr/bin/${target}" ]] ; then
		echo ${target}
	else
		die -q "Target \"${1}\" doesn't appear to be valid!"
	fi
}

# try to remove the ecj symlink.
remove_symlink() {
	rm "${ECJ}" &>/dev/null
}

# determine the current target.
get_target() {
	local canonicalised=$(canonicalise "${ECJ}")
	echo $(basename "${canonicalised}")
}

# set the ecj symlink.
set_symlink() {
	local target=$(find_target "${1}")
	remove_symlink
	ln -s "${EROOT}/usr/bin/${target}" "${ECJ}" || \
		die "Couldn't set ${target} symlink."
}

### show action ###

describe_show() {
	echo "Show current ECJ target"
}

do_show() {
	if [[ ${#} -gt 0 ]]; then
		die -q "No parameters allowed."
	fi

	if [[ -L "${ECJ}" ]] ; then
		get_target
		return 0
	elif [[ -e "${ECJ}" ]] ; then
		echo "(not a symlink)" >&2
		return 1
	else
		echo "(unset)" >&2
		return 1
	fi
}

### list action ###

describe_list() {
	echo "List available ECJ targets"
}

do_list() {
	if [[ ${#} -gt 0 ]]; then
		die -q "Usage error: no parameters allowed."
	fi

	local i targets
	targets=( $(find_targets) )

	if [[ -n ${targets[@]} ]] ; then
		local canonicalised basename

		for (( i = 0 ; i < ${#targets[@]} ; i = i + 1 )) ; do
			canonicalised=$(canonicalise "${ECJ}")
			basename=$(basename "${canonicalised}")

			if [[ "${targets[${i}]}" = "${basename}" ]] ; then
				targets[${i}]="${targets[${i}]} $(highlight '*')"
			fi
		done

		write_list_start "Available ECJ targets:"
		write_numbered_list "${targets[@]}"
	else
		write_kv_list_entry "(none found)" ""
	fi
}

### set action ###

describe_set() {
	echo "Set a new ECJ target"
}

describe_set_options() {
	echo "target : Target name or number (from 'list' action)"
}

describe_set_parameters() {
	echo "<target>"
}

do_set() {
	if [[ $# -gt 1 ]]; then
		die -q "Too many parameters. Expected only one."
	fi

	local target=${1}

	if [[ -z "${target}" ]] ; then
		die -q "You didn't give me a target name or number."
	elif [[ -L "${ECJ}" ]] ; then
		if ! remove_symlink ; then
			die -q "Can't remove existing ecj provider."
		elif ! set_symlink "${1}" ; then
			die -q "Can't set new ecj provider."
		fi
	elif [[ -e "${ECJ}" ]] ; then
		write_warning_msg "Can't set a new ecj provider. There's a file in the way at ${ECJ}. You can try removing it manually, and then re-running this command."
	else
		set_symlink "${target}" || die -q "Wasn't able to set a new provider."
	fi
}

### update action ###

describe_update() {
	echo "Set the ECJ target to the latest if the current target is invalid or if the given target is the latest"
}

describe_update_options() {
	echo "target (optional) : Target name (from 'list' action)"
}

describe_update_parameters() {
	echo "<target>"
}

do_update() {
	if [[ $# -gt 1 ]] ; then
		die -q "Too many parameters. Expected only one."
	fi

	# For pkg_postrm
	if [[ ! $(find_targets) ]]; then
		remove_symlink
		return
	fi

	local canonicalised=$(canonicalise "${ECJ}")

	if [[ ! -L "${ECJ}" ]] || [[ ! -f "${canonicalised}" ]] ; then
		do_set 1
	elif [[ -n "${1}" ]] ; then
		# Check whether target name is valid.
		find_target "${1}" > /dev/null

		if [[ "${1}" == "$(find_target 1)" ]] ; then
			do_set 1
		fi
	fi
}

# vim: set ft=eselect :






^ permalink raw reply	[relevance 99%]

Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2010-02-28 18:11 99% [gentoo-commits] gentoo-x86 commit in app-admin/eselect-ecj/files: ecj-0.4.eselect Jonathan Callen (abcd)

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