#!/bin/sh TARGET=portdb.js PCOUNT=0 TMPDIR=/tmp CATEGORIES= for CAT in `find /usr/ports -type d -depth 1 -print`; do case $CAT in *CVS|*Mk|*Templates|*Keywords|*distfiles|*packages|*Tools) echo Skipping $CAT continue esac CAT=`echo $CAT | sed 's|/usr/ports/||'` CATEGORIES=`echo ${CATEGORIES} $CAT` done cat << EOF > ${TARGET} { "ports": { "date": "`date`", "list": { EOF for CAT in ${CATEGORIES}; do ( TMPFILE=${TMPDIR}/${TARGET}.$CAT touch ${TMPFILE} for PORT in `find /usr/ports/$CAT -type d -depth 2 -print`; do PNAME=`echo $PORT | sed 's|/usr/ports/||'` PCOUNT=$((PCOUNT + 1)) echo Creating entry for $PNAME... RDEPS= for DEP in `make -C$PORT -VRUN_DEPENDS`; do DP=`echo $DEP | awk -F":" '{ gsub("/usr/ports/", "", $2); print $2 }'` RDEPS=`echo $RDEPS \"$DP\",` done RDEPS=${RDEPS%?} LDEPS= for DEP in `make -C$PORT -VLIB_DEPENDS`; do DP=`echo $DEP | awk -F":" '{ gsub("/usr/ports/", "", $2); print $2 }'` LDEPS=`echo $LDEPS \"$DP\",` done LDEPS=${LDEPS%?} BDEPS= for DEP in `make -C$PORT -VBUILD_DEPENDS`; do DP=`echo $DEP | awk -F":" '{ gsub("/usr/ports/", "", $2); print $2 }'` BDEPS=`echo $BDEPS \"$DP\",` done BDEPS=${BDEPS%?} cat << EOF >> ${TMPFILE} "$PNAME": { "run_depends": [$RDEPS], "lib_depends": [$LDEPS], "build_depends": [$BDEPS], "count": __${PNAME}__COUNT }, EOF done ) & done wait # Collect the files for CAT in ${CATEGORIES}; do cat ${TMPDIR}/${TARGET}.$CAT >> ${TARGET} rm -f ${TMPDIR}/${TARGET}.$CAT done sed -i '$ s|,$||' ${TARGET} cat << EOF >> ${TARGET} }, "count": ${PCOUNT} }} EOF