summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDoug Goldstein <cardoe@gentoo.org>2007-07-28 02:50:13 +0000
committerSam James <sam@gentoo.org>2022-04-02 03:57:13 +0100
commitf4693891e287f4b7054c5871268f3b708f0910bf (patch)
tree112da5144dd90ec7506cd8b09cef49c7e786770a
downloadeselect-fontconfig-f4693891e287f4b7054c5871268f3b708f0910bf.tar.gz
eselect-fontconfig-f4693891e287f4b7054c5871268f3b708f0910bf.tar.bz2
eselect-fontconfig-f4693891e287f4b7054c5871268f3b708f0910bf.zip
Import 1.0 (initial commit)
[sam: salvaged from CVS: https://github.com/gentoo/gentoo-historical-2/commit/52e7cf8a554c5d2ad622518cc3afd5489539b086.patch not sure how much involvement Ryan Hill had or if he changed it from Cardoe, so let's mention him too to be safe.] Co-authored-by: Ryan Hill <dirtyepic@gentoo.org> Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--fontconfig.eselect205
1 files changed, 205 insertions, 0 deletions
diff --git a/fontconfig.eselect b/fontconfig.eselect
new file mode 100644
index 0000000..ab0a10a
--- /dev/null
+++ b/fontconfig.eselect
@@ -0,0 +1,205 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/app-admin/eselect-fontconfig/files/fontconfig.eselect-1.0,v 1.1 2007/07/28 02:50:13 dirtyepic Exp $
+
+DESCRIPTION="Manage fontconfig /etc/fonts/conf.d/ symlinks"
+MAINTAINER="fonts@gentoo.org"
+VERSION="1.0"
+
+find_targets() {
+ local targets bc x i=0
+ bcdirs[i]="${ROOT}/etc/fonts/conf.avail/*.conf"
+
+ if [[ -n "${ES_FONTCONFIG_DIRS}" ]] ; then
+ for x in ${ES_FONTCONFIG_DIRS} ; do
+ bcdirs[$((++i))]="${x}/*"
+ done
+ fi
+
+ for bc in ${bcdirs[@]} ; do
+ [[ -e ${bc} && ${bc} != *~ ]] && targets="${targets}\n$(basename ${bc})"
+ done
+
+ echo -ne ${targets} | sort -u
+}
+
+is_enabled() {
+ bcdir="${ROOT}/etc/fonts/conf.d"
+
+ [[ -e ${bcdir}/${1} ]] || return 1
+ return 0
+}
+
+### list action ###
+
+describe_list() {
+ echo "List available fontconfig .conf files"
+}
+
+do_list() {
+ local opts
+ targets=( $(find_targets) )
+ write_list_start "Available fontconfig .conf files ( $(highlight '*') is enabled ):"
+
+ if [[ -n "${targets[@]}" ]] ; then
+ for (( n = 0 ; n < ${#targets[@]} ; ++n )) ; do
+ is_enabled ${opts:-} ${targets[${n}]} && \
+ targets[${n}]="${targets[${n}]} $(highlight '*')"
+ done
+ write_numbered_list "${targets[@]}"
+ else
+ write_kv_list_entry "(none found)" ""
+ fi
+
+ return 0
+}
+
+### enable action ###
+
+describe_enable() {
+ echo "Enable specified fontconfig .conf file(s)"
+}
+
+describe_enable_parameters() {
+ echo "<target>"
+}
+
+describe_enable_options() {
+ echo "<target> : Target name or number (from 'list' action)"
+}
+
+do_enable() {
+ local bc bcdir="${ROOT}/etc/fonts/conf.d"
+
+ [[ -z ${1} ]] && die -q "You didn't specify any .conf files to enable"
+
+ # create directory if necessary
+ if [[ ! -d ${bcdir} && -w $(dirname ${bcdir}) ]] ; then
+ mkdir ${bcdir} || die -q "Failed to create ${bcdir}"
+ elif [[ ! -d ${bcdir} ]] ; then
+ die -q "You don't have permission to create ${bcdir}"
+ fi
+
+ # make sure we have proper permissions
+ [[ -w ${bcdir} ]] || \
+ die -q "You don't have permission to write to ${bcdir}"
+
+ targets=( $(find_targets) )
+
+ for bc in $@ ; do
+ local file target=${bc}
+
+ is_number "${target}" && \
+ target=${targets[$(( ${target} - 1 ))]}
+
+ [[ -z "${target}" ]] && \
+ die -q "Target \"${bc}\" doesn't appear to be valid!"
+
+ bc=${target}
+
+ # ignore any unrecognized options
+ [[ ${bc} == --* ]] && continue
+
+ # what form is the argument in?
+ case "${bc}" in
+ # absolute path
+ /*)
+ file="${ROOT}/${bc}"
+ ;;
+ # relative path
+ */*)
+ file="${ROOT}/${PWD}/${bc}"
+ ;;
+ # no path
+ *)
+ # CWD
+ if [[ -f ${bc} ]] ; then
+ file="${ROOT}/${PWD}/${bc}"
+ # assume /etc/fonts/conf.avail
+ elif [[ -f ${ROOT}/etc/fonts/conf.avail/${bc} ]]
+ then
+ file="${ROOT}/etc/fonts/conf.avail/${bc}"
+ else
+ if [[ -n "${ES_FONTCONFIG_DIRS}" ]] ; then
+ for x in ${ES_FONTCONFIG_DIRS} ; do
+ [[ -f ${x}/${bc} ]] && file="${x}/${bc}"
+ done
+ fi
+
+ [[ -e ${file} ]] || \
+ file="${ROOT}/etc/fonts/conf.avail/${bc}"
+ fi
+ ;;
+ esac
+
+ # does it exist?
+ if [[ ! -e ${file} ]] ; then
+ write_error_msg "${file} doesn't exist"
+ continue
+ fi
+
+ # already installed?
+ if [[ -e ${bcdir}/$(basename ${bc}) ]] ; then
+ write_error_msg "$(basename ${bc}) is already installed"
+ continue
+ fi
+
+ # finally, create the symlink
+ ln -s "${file}" "${bcdir}" || \
+ die -q "Failed to create symlink from '${file}' to '${bcdir}'"
+ done
+}
+
+### disable action ###
+
+describe_disable() {
+ echo "Disable specified fontconfig .conf file(s)"
+}
+
+describe_disable_parameters() {
+ echo "<target>"
+}
+
+describe_disable_options() {
+ echo "<target> : Target name or number (from 'list' action)"
+}
+
+
+do_disable() {
+ local bc bcdir="${ROOT}/etc/fonts/conf.d"
+
+ [[ -z ${1} ]] && die -q "You didn't specify any .conf files to disable"
+
+ targets=( $(find_targets) )
+
+ for bc in $@ ; do
+ local file target=${bc}
+
+ is_number "${target}" && \
+ target=${targets[$(( ${target} - 1 ))]}
+
+ [[ -z "${target}" ]] && \
+ die -q "Target \"${bc}\" doesn't appear to be valid!"
+
+ bc=${target}
+ file="${bcdir}/${bc}"
+
+ # ignore any unrecognized options
+ [[ ${bc} == --* ]] && continue
+
+ # is in installed?
+ if [[ ! -e ${file} ]] ; then
+ write_error_msg "${bc} is not installed"
+ continue
+ fi
+
+ # remove it if we have permissions
+ if [[ -w $(dirname ${file}) ]] ; then
+ rm "${file}" || die -q "Failed to remove ${file}"
+ else
+ die -q "You don't have permission to remove ${file}"
+ fi
+ done
+}
+
+# vim: set ft=eselect :