docs-common/bin copy-figs,NONE,1.1
Tommy Reynolds (jtr)
fedora-docs-commits at redhat.com
Sun Dec 11 03:26:24 UTC 2005
- Previous message (by thread): docs-common Makefile.common,1.19,1.20
- Next message (by thread): install-guide fedora-install-guide-adminoptions-en.xml, NONE, 1.1 Makefile, 1.14, 1.15 fedora-install-guide-en.xml, 1.30, 1.31 fedora-install-guide-intro-en.xml, 1.23, 1.24 fedora-install-guide-nextsteps-en.xml, 1.9, 1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: jtr
Update of /cvs/docs/docs-common/bin
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28079/bin
Added Files:
copy-figs
Log Message:
Allow a document 'figs/' directory to contain its own subdirectory
structure. Copy the directory tree, but only populate it with files
which pass the '-f glob' filter(s). If no filters are given, "*" is
used as a default.
--- NEW FILE copy-figs ---
#!/bin/bash
########################################################################
# Copy a file system hierarchy to a destination tree, copying only
# files that are either: language neutral, or specific to a particular
# language.
########################################################################
# We assume the following naming convention, because that is what the
# docs currently seem to use.
#
# <filename>-<locale>.<ext> is a language-specific file, such as
# "foo-en.png".
#
# <filename>.<ext> is a language-neutral file, such as "foo.png".
#
# What makes this complicated is that some files already have embedded
# dashes that have nothing to do with locales, thus we have an ambiguous
# filename grammar.
########################################################################
targetLang=en
bnFilter=
DEBUG=no
VERBOSE=no
die() {
printf "${ME}: %s\n" "$@" >&2
exit 1
}
glob2sed() {
s=""
i=1
while true
do
c=$(echo "${1}" | cut -c$i)
if [ -z "${c}" ]; then
break
fi
case "${c}" in
'.' )
s="${s}[.]"
;;
'*' )
s="${s}.*"
;;
'?' )
s="${s}."
;;
* )
s="${s}${c}"
;;
esac
i=$(expr $i + 1)
done
echo "${s}"
}
ME=$(/bin/basename $0)
USAGE="usage: ${ME} [-D] [-f glob] [-l lang] [-V] /path/to/source/dir /path/to/dest/dir"
while getopts Df:l:v c
do
case "${c}" in
D) DEBUG='';;
f)
sedFilter=$(glob2sed "${OPTARG}")
bnFilter="${bnFilter} -e /^${sedFilter}$/p"
;;
l) targetLang="${OPTARG}";;
v) VERBOSE='';;
*) echo "${USAGE}" >&2; exit 1;;
esac
done
shift $(expr ${OPTIND} - 1)
if [ $# -ne 2 ]; then
echo "${USAGE}" >&2
exit 1
fi
SRC="$1"
DST="$2"
shift 2
case "${SRC}" in
/* )
;;
~/* )
SRC=${HOME}/$(echo "${SRC}" | cut -c2,-)
;;
* )
SRC="$(/bin/pwd)/${SRC}"
;;
esac
case "${DST}" in
/* )
;;
~/* )
DST=${HOME}/$(echo "${DST}" | cut -c2,-)
;;
* )
DST="$(/bin/pwd)/${DST}"
;;
esac
if [ -z "${bnFilter}" ]; then
bnFilter="-e /^.*$/p"
fi
[ "${DEBUG}" ] || echo >&2 "bnFilter=|${bnFilter}|"
leadin=$(/usr/bin/dirname "${SRC}")
[ "${DEBUG}" ] || echo >&2 "leadin=|${leadin}|"
find "${SRC}" -print |
while read fn
do
# Skip anything that even looks like CVS or SVN
case "${fn}" in
*CVS* | *svn* )
continue
;;
esac
# Figure out the relative path for this pathname chunk
rp=$(
echo $(/usr/bin/dirname "${fn}")/$(/bin/basename "${fn}") |
/bin/sed "s;^${leadin}/*;;"
)
[ "${DEBUG}" ] || echo >&2 "rp=|${rp}|"
# Copy directories, even if they are going to be empty.
# Inodes are cheap, as long as you have enough.
if [ -d "${fn}" ]; then
[ "${VERBOSE}" ] || echo >&2 "Creating ${rp}"
/bin/mkdir -p "${DST}"/"${rp}"
continue
fi
# May not want this file under any circumstances
bn=$(/bin/basename "${rp}")
filteredBn=$(echo "${bn}" | sed -n ${bnFilter})
if [ -z "${filteredBn}" ]; then
[ "${DEBUG}" ] || echo >&2 "Filter rejects |${fn}|"
continue
fi
# We want this file if the language matches or if it is
# language neutral
copyIt=no
case "${bn}" in
*-${LANG}.* )
# Has matching language
copyIt=yes
;;
*-* )
# Doesn't match target language
;;
* )
# Assume language neutral file
copyIt=yes
;;
esac
[ "${DEBUG}" ] || echo >&2 "copyIt=${copyIt}"
# Copy file if we like it
if [ "${copyIt}" = "yes" ]; then
[ "${VERBOSE}" ] || echo >&2 "Copying file |$fn|"
cp "${fn}" "${DST}/${rp}"
else
[ "${VERBOSE}" ] || echo >&2 "Rejecting file |$fn|"
fi
done
- Previous message (by thread): docs-common Makefile.common,1.19,1.20
- Next message (by thread): install-guide fedora-install-guide-adminoptions-en.xml, NONE, 1.1 Makefile, 1.14, 1.15 fedora-install-guide-en.xml, 1.30, 1.31 fedora-install-guide-intro-en.xml, 1.23, 1.24 fedora-install-guide-nextsteps-en.xml, 1.9, 1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Fedora-docs-commits
mailing list