bc1fd31d64
file missed with the last commit. didn't package: no bump, no cookie for me!
46 lines
1.2 KiB
Tcl
46 lines
1.2 KiB
Tcl
# Generate 'index' manpage
|
|
# Stuart Cassoff
|
|
# Version 0.1
|
|
# Winter 2009
|
|
|
|
package require doctools
|
|
|
|
lassign $argv dir descrfn outfn name title version
|
|
|
|
set modules {}
|
|
foreach fn [glob -nocomplain -dir $dir *.n] {
|
|
set data [read [set f [open $fn]]][close $f]
|
|
if {[regexp {.SH NAME\n(.*?) \\- (.*?)\n} $data -> shname shtitle] &&
|
|
[regexp -line {^\.TH.*$} $data th]} {
|
|
lappend modules [list [string map {_ ::} $shname] [lindex $th 3] [lindex $th 5] $shtitle]
|
|
}
|
|
}
|
|
set modules [lsort -dictionary -index 0 $modules]
|
|
|
|
set mp ""
|
|
append mp {[comment {-*- tcl -*- doctools manpage}]}
|
|
append mp "\[manpage_begin $name n $version\]"
|
|
append mp "\[titledesc {$title}\]"
|
|
append mp "\[moddesc {$title}\]"
|
|
|
|
append mp {[description]} \n [read [set f [open $descrfn]]][close $f]
|
|
append mp {
|
|
To locate a manual page for a package with "::", replace "::" with "_".
|
|
For example, the manual page for package "foo::bar" would be "foo_bar".
|
|
}
|
|
|
|
append mp {[section MODULES] [list_begin options]}
|
|
foreach module $modules {
|
|
append mp "\[opt_def {[lindex $module 0]} [lindex $module 1]\] [lindex $module 2] - [lindex $module 3]" \n
|
|
}
|
|
append mp {[list_end]}
|
|
|
|
append mp {[manpage_end]}
|
|
|
|
set f [open $outfn w]
|
|
puts -nonewline $f [[::doctools::new mp -format nroff] format $mp]
|
|
close $f
|
|
|
|
|
|
# EOF
|