Created
October 4, 2011 15:39
-
-
Save atomicbird/1261964 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Convert man pages to PDF and open them in the default PDF viewer. | |
# PDFs are cached when created. | |
# By Tom Harrington, tph at atomicbird dot com, 16 March 2005 | |
# Directory to save cached PDFs in | |
# (if you don't want long-term caching, you could use /tmp/). | |
CACHEDIR=~/Library/Caches | |
# Command to read PS from stdin and write PDF to an output file. | |
PS2PDF_CMD="/usr/bin/pstopdf -i -o" | |
# Command to open the resulting PDF once it's created. | |
OPEN_CMD="/usr/bin/open" | |
# Path to "man", which is expected to take the -w, -S, and -t args. | |
MAN_CMD="/usr/bin/man" | |
CACHEDIR="$CACHEDIR/manpdf" | |
if [ ! -e $CACHEDIR ]; then | |
mkdir -p $CACHEDIR | |
fi | |
if [ $# -eq 1 ] | |
then | |
MANSECT="" | |
MANARG=$1 | |
elif [ $# -eq 2 ] | |
then | |
MANSECT=$1 | |
MANARG=$2 | |
else | |
echo "Usage: " `basename $0` "[section] name" | |
exit | |
fi | |
if [ "$MANSECT" != "" ]; then | |
MANSECTARG="-S $MANSECT" | |
fi | |
# Look for the command's man page. | |
MANFILE=`$MAN_CMD $MANSECTARG -w $MANARG 2>/dev/null` | |
if [ -z $MANFILE ]; then | |
echo No manual entry for $MANARG | |
exit | |
fi | |
# OK, got the man page. Now get the name for the corresponding | |
# PDF. The goal here is to organize cached PDFs in CACHEDIR | |
# according to man-page section, similar to the way /usr/share/man | |
# is organized into "man1", "man3", etc. | |
echo file: $MANFILE | |
MANSECT=`echo "$MANFILE" | sed 's/.*\.\([0-9]\).*/\1/'` | |
MANPDF=$CACHEDIR/pdf$MANSECT/$MANARG.$MANSECT.pdf | |
FINALDIR=`dirname $MANPDF` | |
echo PDF: $MANPDF | |
# Create the PDF if it's not in the cache dir or if the cached version is obsolete. | |
CREATEPDF=0 | |
if [ ! -e $MANPDF ]; then | |
echo Generating man page... | |
CREATEPDF=1 | |
else | |
if [ $MANFILE -nt $MANPDF ]; then | |
echo Man page newer than PDF, regenerating... | |
CREATEPDF=1 | |
fi | |
fi | |
if [ $CREATEPDF -eq 1 ]; then | |
mkdir -p $FINALDIR | |
$MAN_CMD $MANSECTARG -t $MANARG | $PS2PDF_CMD $MANPDF | |
else | |
echo Reading man page from cache... | |
fi | |
# Now open the PDF. | |
$OPEN_CMD $MANPDF |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment