You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
4.4 KiB
206 lines
4.4 KiB
# 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 :
|