app-portage/eclass-manpages: pass up exit codes to the caller
authorMike Frysinger <vapier@gentoo.org>
Fri, 14 Aug 2015 04:25:15 +0000 (00:25 -0400)
committerMike Frysinger <vapier@gentoo.org>
Fri, 14 Aug 2015 04:25:15 +0000 (00:25 -0400)
This will let us make errors in the docs fatal in the ebuild if we want.

app-portage/eclass-manpages/files/eclass-to-manpage.awk
app-portage/eclass-manpages/files/eclass-to-manpage.sh

index 979ad10a6a8805ce48cdb6f8ac6b045c8905c272..cc21a73933a21125c4e0c1a98cf5abe553a5418f 100644 (file)
@@ -79,6 +79,10 @@ function fail(text) {
        _stderr_msg(text, "error")
        exit(1)
 }
+function xfail(text) {
+       _stderr_msg(text, "error (ignoring)")
+       exit(77)
+}
 
 function eat_line() {
        ret = $0
@@ -392,8 +396,12 @@ BEGIN {
                        state = "funcvar"
                } else if ($0 == "# @DEAD") {
                        eclass = "dead"
-                       exit(10)
+                       exit(77)
                } else if ($0 == "# @eclass-begin") {
+                       # White list old eclasses that haven't been updated so we can block
+                       # new ones from being added to the tree.
+                       if (eclass == "")
+                               xfail("java documentation not supported")
                        fail("java documentation not supported")
                } else if ($0 ~ /^# @/)
                        warn("Unexpected tag in \"" state "\" state: " $0)
@@ -414,7 +422,7 @@ BEGIN {
 #
 END {
        if (eclass == "")
-               fail("eclass not documented yet (no @ECLASS found)")
+               xfail("eclass not documented yet (no @ECLASS found)")
        else if (eclass != "dead")
                handle_footer()
 }
index da97e37727351c6e017124a1e2d1d6e9767bbd26..d41de426debd1636b29706be1bc384ea1e046b29 100755 (executable)
@@ -22,6 +22,7 @@ fi
 
 [[ $# -eq 0 ]] && set -- "${ECLASSDIR}"/*.eclass
 
+ret=0
 for e in "$@" ; do
        set -- \
        ${AWK} \
@@ -29,8 +30,17 @@ for e in "$@" ; do
                -f "${FILESDIR}"/eclass-to-manpage.awk \
                ${e}
        if [[ ${AWK} == "gawk" ]] ; then
-               "$@" > ${e##*/}.5 || rm -f ${e##*/}.5
+               "$@" > ${e##*/}.5
+               tret=$?
+               if [[ ${tret} -ne 0 ]] ; then
+                       rm -f ${e##*/}.5
+                       if [[ ${tret} -ne 77 ]] ; then
+                               echo "FAIL: ${e}"
+                               ret=1
+                       fi
+               fi
        else
                "$@"
        fi
 done
+exit ${ret}