aboutsummaryrefslogtreecommitdiff
path: root/texinfo/gen-info-dir
diff options
context:
space:
mode:
Diffstat (limited to 'texinfo/gen-info-dir')
-rwxr-xr-xtexinfo/gen-info-dir101
1 files changed, 101 insertions, 0 deletions
diff --git a/texinfo/gen-info-dir b/texinfo/gen-info-dir
new file mode 100755
index 00000000000..ede0daa7e7b
--- /dev/null
+++ b/texinfo/gen-info-dir
@@ -0,0 +1,101 @@
+#!/bin/sh
+#
+# generate an Info directory, given a directory of Info files and a
+# list of entries. The output will be suitable for a dir.info file,
+# in the order given in the skeleton file
+
+INFODIR=$1
+if [ $# = 2 ] ; then
+ SKELETON=$2
+else
+ SKELETON=/dev/null
+fi
+
+skip=
+
+if [ $# -gt 2 ] ; then
+ echo usage: $0 info-directory [ skeleton-file ] 1>&2
+ exit 1
+else
+ true
+fi
+
+if [ ! -d ${INFODIR} ] ; then
+ echo "$0: first argument must specify a directory"
+ exit 1
+fi
+
+infofiles=`(cd ${INFODIR}; ls *.info | sort | sed "s/dir\.info//")`
+template=`cat ${SKELETON}`
+
+### output the dir.info header
+echo "-*- Text -*-"
+echo "This file was generated automatically by the gen-info-dir script."
+echo "This version was generated on `date`"
+echo "by `whoami`@`hostname` for `(cd ${INFODIR}; pwd)`"
+
+cat << moobler
+
+This is the file .../info/dir, which contains the topmost node of the
+Info hierarchy. The first time you invoke Info you start off
+looking at that node, which is (dir)Top.
+
+File: dir Node: Top This is the top of the INFO tree
+ This (the Directory node) gives a menu of major topics.
+ Typing "d" returns here, "q" exits, "?" lists all INFO commands, "h"
+ gives a primer for first-timers, "mTexinfo<Return>" visits Texinfo topic,
+ etc.
+ --- PLEASE ADD DOCUMENTATION TO THIS TREE. (See INFO topic first.) ---
+
+* Menu: The list of major topics begins on the next line.
+
+moobler
+
+
+### go through the list of files in the template. If an info file
+### exists, grab the ENTRY information from it. If there is no entry
+### info, then create a minimal dir entry, otherwise use the given info.
+###
+### Then remove that file from the list of existing files. If any
+### additional files remain (ones that don't have a template entry),
+### then generate entries for those in the same way, putting the info for
+### those at the very end....
+
+for file in ${template} ; do
+ if [ "${file}" = "--" ] ; then
+ skip=1
+ else
+ if [ -f ${INFODIR}/${file}.info ] ; then
+ entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' -e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/${file}.info`
+ if [ ! -z "${skip}" ] ; then
+ echo
+ skip=
+ fi
+
+ if [ ! -z "${entry}" ] ; then
+ echo "${entry}"
+ else
+ echo "* ${file}: (${file})."
+ fi
+
+ infofiles=`echo ${infofiles} | sed -e "s/${file}\.info//"`
+ fi
+ fi
+done
+
+if [ -z "${infofiles}" ] ; then
+ exit 0
+else
+ echo
+fi
+
+for file in ${infofiles}; do
+ entry=`sed -e '1,/START-INFO-DIR-ENTRY/d' -e '/END-INFO-DIR-ENTRY/,$d' ${INFODIR}/${file}`
+
+ if [ ! -z "${entry}" ] ; then
+ echo "${entry}"
+ else
+ echo "* ${file}: (${file})."
+ fi
+done
+