[yelp-tools] yelp-build: Added -p option for fallback path for files
- From: Shaun McCance <shaunm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [yelp-tools] yelp-build: Added -p option for fallback path for files
- Date: Mon, 3 Feb 2014 15:29:13 +0000 (UTC)
commit a4b1ac7e764d1a0de861592422d5043e051c3688
Author: Shaun McCance <shaunm gnome org>
Date: Mon Feb 3 10:27:28 2014 -0500
yelp-build: Added -p option for fallback path for files
Especially when doing translations, it's common to have only some
of the source files in the current directory, and for the rest to
just live untranslated in another directory. This makes it much
easier to use yelp-build for that case, without manually copying
or linking files first.
tools/yelp-build.in | 58 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 52 insertions(+), 6 deletions(-)
---
diff --git a/tools/yelp-build.in b/tools/yelp-build.in
index 50f28f5..c245174 100755
--- a/tools/yelp-build.in
+++ b/tools/yelp-build.in
@@ -117,6 +117,7 @@ yelp_usage_epub () {
echo " -c CACHE Use the existing Mallard cache CACHE"
echo " -o OUT Output en EPUB file named OUT"
echo " -x CUSTOM Import the custom XSLT file CUSTOM"
+ echo " -p PATHS Extra paths to search for files"
) 1>&2
}
yelp_usage_html () {
@@ -131,6 +132,7 @@ yelp_usage_html () {
echo " -c CACHE Use the existing Mallard cache CACHE"
echo " -o OUT Output files in the directory OUT"
echo " -x CUSTOM Import the custom XSLT file CUSTOM"
+ echo " -p PATHS Extra paths to search for files"
) 1>&2
}
@@ -139,6 +141,12 @@ if [ $# = 0 ]; then
exit 1
fi
+yelp_paths_normalize () {
+ for path in $(echo "$1" | sed -e 's/[: ]/\n/g'); do
+ (cd "$path" && pwd)
+ done | tr '\n' ' '
+}
+
yelp_cache_in () {
echo '<cache:cache xmlns:cache="http://projectmallard.org/cache/1.0/"'
echo ' xmlns="http://projectmallard.org/1.0/">'
@@ -180,7 +188,8 @@ yelp_cache () {
yelp_usage_cache
exit 1
fi
- yelp_cache_in "$@" | xsltproc --xinclude -o "$cache_out" "$xsl_mal_cache" -
+ yelp_cache_in "$@" | xsltproc --path "$html_paths" \
+ --xinclude -o "$cache_out" "$xsl_mal_cache" -
}
yelp_html_xsl_common () {
@@ -260,7 +269,7 @@ yelp_html_db2html () {
echo '<xsl:import href="'"$xsl"'"/>'
yelp_html_xsl_common
echo '</xsl:stylesheet>'
- ) | xsltproc --xinclude -o "$html_out"/ - "$xml"
+ ) | xsltproc --path "$html_paths" --xinclude -o "$html_out"/ - "$xml"
# Copy media
if [ "x$xmldir" != "x$html_out" ]; then
(
@@ -278,11 +287,23 @@ yelp_html_db2html () {
echo ' </xsl:for-each>'
echo '</xsl:template>'
echo '</xsl:stylesheet>'
- ) | xsltproc --xinclude - "$xml" | while read media; do
+ ) | xsltproc --path "$html_paths" --xinclude - "$xml" | while read media; do
mfile=`echo "$media" | urldecode`
minput="$xmldir/$mfile"
moutput="$html_out/$mfile"
mkdir_p `dirname "$moutput"`
+ if [ ! -f "$minput" -a "x$html_paths" != "x" ]; then
+ if [ $(expr index "$minput" "$(pwd)/") = 1 ]; then
+ minput_rel=$(expr substr "$minput" \
+ $(expr length "$(pwd)//") $(expr length "$minput"))
+ for path in $html_paths; do
+ if [ -f "$path/$minput_rel" ]; then
+ minput="$path/$minput_rel"
+ break
+ fi
+ done
+ fi
+ fi
cp "$minput" "$moutput"
done
fi
@@ -312,7 +333,7 @@ yelp_html_db2html () {
echo ' </xsl:for-each>'
echo '</xsl:template>'
echo '</xsl:stylesheet>'
- ) | xsltproc --xinclude - "$xml" | sort | uniq | while read icon; do
+ ) | xsltproc --path "$html_paths" --xinclude - "$xml" | sort | uniq | while read icon; do
cp "${yelp_icon_dir}/${icon}.png" "$html_out/$html_internal_datadir"
done;
# Copy jQuery
@@ -342,7 +363,7 @@ yelp_html_db2html () {
echo ' </xsl:for-each>'
echo '</xsl:template>'
echo '</xsl:stylesheet>'
- ) | xsltproc --xinclude - "$xml" | sort | uniq \
+ ) | xsltproc --path "$html_paths" --xinclude - "$xml" | sort | uniq \
| grep '^contents syntax ' | sed -e 's/^contents syntax brush-/brush./' \
| while read js; do
cp "${yelp_js_dir}/jquery.syntax.${js}.js" "$html_out/$html_internal_datadir"
@@ -393,7 +414,8 @@ yelp_html_mal2html () {
echo '</xsl:for-each>'
echo '</xsl:template>'
echo '</xsl:stylesheet>'
- ) | (cd "$html_out" && xsltproc $html_profile --xinclude \
+ ) | (cd "$html_out" && xsltproc $html_profile \
+ --path "$html_paths" --xinclude \
--stringparam mal.files.copy.icon.dir "$yelp_icon_dir" \
--stringparam mal.files.copy.js.dir "$yelp_js_dir" \
- "$html_tmp_infile") | sort | uniq | \
@@ -407,6 +429,18 @@ yelp_html_mal2html () {
else
line_dest="$html_out/"`echo "$line" | cut -d' ' -f2`
fi
+ if [ ! -f "$line_src" -a "x$html_paths" != "x" ]; then
+ if [ $(expr index "$line_src" "$(pwd)/") = 1 ]; then
+ line_src_rel=$(expr substr "$line_src" \
+ $(expr length "$(pwd)//") $(expr length "$line_src"))
+ for path in $html_paths; do
+ if [ -f "$path/$line_src_rel" ]; then
+ line_src="$path/$line_src_rel"
+ break
+ fi
+ done
+ fi
+ fi
line_dest=`echo "$line_dest" | urldecode`
if [ "$line_src" != "$line_dest" ]; then
line_dir=`dirname "$line_dest"`
@@ -438,6 +472,11 @@ yelp_html () {
html_custom="$1"
shift
;;
+ "-p")
+ shift
+ html_paths=$(yelp_paths_normalize "$1")
+ shift
+ ;;
"--profile")
html_profile="--profile"
shift
@@ -489,6 +528,11 @@ yelp_epub () {
html_custom="$1"
shift
;;
+ "-p")
+ shift
+ html_paths=$(yelp_paths_normalize "$1")
+ shift
+ ;;
*)
break
;;
@@ -517,11 +561,13 @@ yelp_epub () {
epub_id=`uuidgen`
epub_data=`(cd "$html_out" && ls yelp/*.*)`
xsltproc \
+ --path "$html_paths" \
-o "$html_out/opf.opf" \
--stringparam opf.id "$epub_id" \
--stringparam opf.data "$epub_data" \
"$xsl_mal_opf" "$epub_cache_file"
xsltproc \
+ --path "$html_paths" \
-o "$html_out/ncx.ncx" \
--stringparam ncx.id "$epub_id" \
"$xsl_mal_ncx" "$epub_cache_file"
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]