######################################################################## # # Some common functions for use in other FDP scripts # ######################################################################## FDPDIR=${FDPDIR:-".."} # Convert ${FDPDIR} into an absolute pathname if needed case "${FDPDIR}" in /* ) ;; * ) FDPDIR=${PWD}/${FDPDIR} ;; esac FDPBINDIR="${FDPDIR}/docs-common/bin" FDPPKGDIR="${FDPDIR}/docs-common/packaging" PRI_LANG=${PRI_LANG:-"en_US"} RPMINFO=${RPMINFO:-"${PRI_LANG}/rpm-info.xml"} XSLTPROC=${XSLTPROC:-xsltproc} XSLTPROCOPTS=${XSLTPROCOPTS:-"--path ${FDPDIR}/docs-common/common/entities:${FDPDIR}/docs-common/packaging"} XMLFORMAT=${XMLFORMAT:-"${FDPBINDIR}/xmlformat"} XMLFOPTS=${XMLFOPTS:-"-f ${FDPBINDIR}/xmlformat-fdp.conf"} rpminfo_exists() { if [ ! -f "${RPMINFO}" ]; then echo "File ${RPMINFO} missing." >&2 return 1 fi } get_all_workers() { # Return list of workers, in format "email:wholename" if [ ! -f "${RPMINFO}" ]; then echo "$0: File '${RPMINFO}' missing." >&2 return 1 fi ${XSLTPROC} "${FDPPKGDIR}/get-all-workers.xsl" \ "${RPMINFO}" | sed 's/^ \+//g' | grep -v '^$' | cat -n } get_worker_attribute() { # Return an attribute for a specific worker if [ ! -f "${RPMINFO}" ]; then echo "$0: File '${RPMINFO}' missing." >&2 return 1 fi if [ ! -z "$2" ]; then POS=$2 ; fi if [ ! -z "$1" ]; then ATT="$1" ; fi ${XSLTPROC} --stringparam att "${ATT}" --param pos $POS \ "${FDPPKGDIR}/get-worker.xsl" "${RPMINFO}" } get_title() { rpminfo_exists && ${XSLTPROC} ${XSLTPROCOPTS} "${FDPPKGDIR}/get-title.xsl" "${RPMINFO}" } get_desc() { rpminfo_exists && ${XSLTPROC} ${XSLTPROCOPTS} "${FDPPKGDIR}/get-desc.xsl" "${RPMINFO}" } version() { # Return latest revision for an optional role argument # Don't grumble if we cannot find ${RPMINFO}, because it # may not have been created yet. if [ ! -z "$1" ]; then OPTS="--stringparam role $1" fi if [ -f "${RPMINFO}" ]; then ${XSLTPROC} ${OPTS} "${FDPPKGDIR}/doc-version.xsl" "$RPMINFO" else echo -n TBD fi # The stylesheet doesn't put a NL at the end. echo } date() { # Return latest date for an optional role argument if [ ! -z "$1" ]; then OPTS="--stringparam role $1" fi if [ -f "${RPMINFO}" ]; then ${XSLTPROC} ${XSLTPROCOPTS} ${OPTS} "${FDPPKGDIR}/doc-date.xsl" "$RPMINFO" else echo -n TBD fi echo } iso2date() { # Convert ISO format date (YYYY-MM-DD) to ctime(3) # format, which is needed by the "rpm-info.xml" case "$#" in 0 ) echo -e "usage: iso2date YYYY-MM-DD ..." >&2 echo -e "\tiso2date YYYY-MM-DD" >&2 echo -e "\tiso2date today" >&2 return 1 ;; 1 ) multi=0;; * ) multi=1;; esac for x in $@ do if [ ${multi} -eq 1 ]; then echo -ne "${x}\t" fi date -d "${x}" +'%a %b %d %Y' done } get_latest_revision() { version $@ } get_latest_date() { date $@ } validate_rpm_info() { xmllint --noout --valid ${RPMINFO} && echo ${RPMINFO} OK } apply_po() { if [ $# -ne 1 ]; then echo "usage: apply_po filename.xml">&2 fi POFILE=`/usr/bin/dirname "$1"`/`/bin/basename "$1" .xml`.po if [ ! -f "${POFILE}" ]; then echo "apply_po: file '${POFILE}' not found." >&2 return 1 fi xml2po -p "${POFILE}" "$1" } prettyprint() { ${XMLFORMAT} ${XMLFOPTS} $@ } # Local variables: # mode: sh # End: