diff options
author | Shaun McCance <shaunm@gnome.org> | 2015-07-05 09:45:56 -0400 |
---|---|---|
committer | Shaun McCance <shaunm@gnome.org> | 2015-07-05 09:45:56 -0400 |
commit | 4d0b2e1a02f34cb73c2bcd2e5796f752e1577df4 (patch) | |
tree | 2117d86846cfaba303305fca7a97ee506935a3f0 | |
parent | 9ed7b7f884b8f30293900cfcb487d262706f0ebe (diff) | |
download | yelp-tools-4d0b2e1a02f34cb73c2bcd2e5796f752e1577df4.tar.gz |
yelp-check: Support Mallard Sites for media checker
-rwxr-xr-x | tools/yelp-check.in | 96 | ||||
-rw-r--r-- | xslt/media.xsl | 11 |
2 files changed, 65 insertions, 42 deletions
diff --git a/tools/yelp-check.in b/tools/yelp-check.in index 64452fa..48ae013 100755 --- a/tools/yelp-check.in +++ b/tools/yelp-check.in @@ -163,6 +163,9 @@ yelp_usage_media () { echo " Find broken references to media files. In Mallard, this" echo " checks media and thumb elements. In DocBook, this checks" echo " audiodata, imagedata, and videodata elements." + echo "" + echo "Options:" + echo " -s Treat pages as belonging to a Mallard site" ) 1>&2 } yelp_usage_orphans () { @@ -362,11 +365,13 @@ yelp_hrefs () { check_db=yelp_hrefs_page check_page=yelp_hrefs_page yelp_check_iter_args "$@" > "$check_out_file" - ret=$(cat "$check_out_file" | wc -l) - if test "x$ret" != "x0"; then ret="1"; fi + yelp_check_retval=$(wc -l < "$check_out_file") + if test "x$yelp_check_retval" != "x0"; then + yelp_check_retval=1 + fi cat "$check_out_file" rm "$check_out_file" - exit $ret + exit $yelp_check_retval } yelp_ids_page () { @@ -541,28 +546,41 @@ yelp_links () { fi fi done > "$check_out_file" - ret=`cat "$check_out_file" | wc -l` - if test "x$ret" != "x0"; then ret="1"; fi + yelp_check_retval=$(wc -l < "$check_out_file") + if test "x$yelp_check_retval" != "x0"; then + yelp_check_retval=1 + fi cat "$check_out_file" + rm "$check_out_file" if [ "x$check_cache_file_is_tmp" = "xyes" ]; then rm "$check_cache_file" fi - rm "$check_out_file" - exit $ret + exit $yelp_check_retval } yelp_media_page () { - ext=`echo "$1" | sed -e 's/.*\.//'` - bname=`basename "$1" ".$ext"` - dname=$(dirname "$xml") - if [ x"$dname" = "." ]; then + ext=$(echo "$1" | sed -e 's/.*\.//') + bname=$(basename "$1" ".$ext") + dname=$(dirname "$1") + if [ "x$dname" = "x." ]; then dname="" else dname="$dname"/ fi; - xsltproc --stringparam basename "$bname" \ - --stringparam dirname "$dname" \ - "$xsl_media" "$1" + if [ "x$check_site" = "x1" ]; then + sdir=$(cd "$dname" && pwd) + sdir=${sdir##${check_site_root}}/ + else + sdir="$dname" + fi + xsltproc "$xsl_media" "$1" | \ + sort | uniq | \ + while read line; do + src=$(urldecode "$line") + if [ ! -f "$dname$src" ]; then + echo "$sdir$bname: $line" + fi + done } yelp_media () { @@ -570,21 +588,33 @@ yelp_media () { yelp_usage_media exit 1 fi - for xml in "$@"; do - if [ -d "$xml" ]; then - for page in "$xml"/*.page; do - yelp_media_page "$page" - done - else - yelp_media_page "$xml" - fi - done | while read line; do - dname=$(dirname $(echo "$line" | cut -d' ' -f1)) - src=$(urldecode $(echo "$line" | cut -d' ' -f2)) - if [ ! -f "$dname"/"$src" ]; then - echo $line - fi + while [ "$#" != "0" ]; do + case "$1" in + "-s") + check_site="1" + check_site_root=$(pwd) + shift + ;; + *) + break + ;; + esac done + if [ "$#" = "0" -o "x$1" = "x--help" -o "x$1" = "x-h" ]; then + yelp_usage_media + exit 1 + fi + check_out_file=`mktemp "${TMPDIR:-/tmp}"/yelp-XXXXXXXX` + check_db=yelp_media_page + check_page=yelp_media_page + yelp_check_iter_args "$@" > "$check_out_file" + yelp_check_retval=$(wc -l < "$check_out_file") + if test "x$yelp_check_retval" != "x0"; then + yelp_check_retval=1 + fi + cat "$check_out_file" + rm "$check_out_file" + exit $yelp_check_retval } yelp_orphans_page () { @@ -651,14 +681,16 @@ yelp_orphans () { yelp_orphans_page "$xml" fi done > "$check_out_file" - ret=`cat "$check_out_file" | wc -l` - if test "x$ret" != "x0"; then ret="1"; fi + yelp_check_retval=$(wc -l < "$check_out_file") + if test "x$yelp_check_retval" != "x0"; then + yelp_check_retval=1 + fi cat "$check_out_file" + rm "$check_out_file" if [ "x$check_cache_file_is_tmp" = "xyes" ]; then rm "$check_cache_file" fi - rm "$check_out_file" - exit $ret + exit $yelp_check_retval } yelp_comments_page () { diff --git a/xslt/media.xsl b/xslt/media.xsl index 7a3b155..c6b6845 100644 --- a/xslt/media.xsl +++ b/xslt/media.xsl @@ -9,9 +9,6 @@ <xsl:output method="text"/> -<xsl:param name="basename"/> -<xsl:param name="dirname"/> - <xsl:template match="/*[namespace-uri(.) = ''] | /db:*"> <xsl:for-each select=" //audiodata | //imagedata | //videodata | @@ -26,9 +23,6 @@ </xsl:when> </xsl:choose> </xsl:variable> - <xsl:value-of select="$dirname"/> - <xsl:value-of select="$basename"/> - <xsl:text>: </xsl:text> <xsl:value-of select="$src"/> <xsl:text>
</xsl:text> </xsl:for-each> @@ -36,10 +30,7 @@ <xsl:template match="/mal:page"> <xsl:variable name="id" select="@id"/> - <xsl:for-each select="//mal:media | //uix:thumb | //ui:thumb | //e:mouseover"> - <xsl:value-of select="$dirname"/> - <xsl:value-of select="$id"/> - <xsl:text>: </xsl:text> + <xsl:for-each select="//mal:media[@src] | //uix:thumb | //ui:thumb | //e:mouseover"> <xsl:value-of select="@src"/> <xsl:text>
</xsl:text> </xsl:for-each> |