5b7950a0cb29480751991e817b98b588d5d2b941
[grml-scripts.git] / usr_bin / fma
1 #!/bin/zsh
2 # Filename:      fma
3 # Purpose:       "fast manual access"
4 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
5 # Bug-Reports:   see http://grml.org/bugs/
6 # License:       This file is licensed under the GPL v2.
7 # Latest change: Son Nov 12 12:03:13 CET 2006 [mika]
8 ################################################################################
9
10 # Idea for this script and basic functionally by Matthias Kopfermann <maddi@grml.org>.
11
12 . /etc/grml/lsb-functions
13 . /etc/grml/script-functions
14
15 check4progs man lzop vim || exit 1
16
17 MANDIR=${MANDIR:-$HOME/man}
18 VERSION='0.1'
19
20 if ! [ -d "$MANDIR" ] ; then
21    einfo "Creating $MANDIR."
22    mkdir $MANDIR ; eend $?
23 fi
24
25 usage() {
26    eerror "Usage: fma [section] manpage" ; eend 1
27    exit 1
28 }
29
30 case $1 in
31   -h*|--h*)
32     usage
33     ;;
34   -v*|--v*)
35     einfo "fma - version $VERSION" ; eend 0
36     exit 0
37     ;;
38   [0-9])
39     SECTION="${1}"
40     SECTIONFILE=".${1}"
41     MANPAGE="$2"
42     ;;
43   *)
44     SECTION=''
45     MANPAGE="$1"
46     ;;
47 esac
48
49 if [ -z "$MANPAGE" ] ; then
50    usage
51 fi
52
53 if ! [ -f "${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo" ] ; then
54    einfo "Writing manpage to ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt"
55    if man $SECTION $MANPAGE 1>/dev/null ; then
56       man $SECTION $MANPAGE > ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
57       einfo "Compressing manpage with lzop"
58       lzop -U ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt.lzo ${MANDIR}/${MANPAGE}${SECTIONFILE}.txt ; eend $?
59    else
60       exit 1
61       eend 1
62    fi
63 fi
64
65 vim -c 'set ft=man' =( lzop -cd $MANDIR/${MANPAGE}${SECTIONFILE}.txt.lzo)
66
67 einfo "Thanks for flying fma using vim and lzop." ; eend 0
68
69 ## END OF FILE #################################################################