#!/usr/bin/env perl use strict; use Pod::Usage; my $program = shift; pod2usage(2) unless defined($program); open ARGTEXT, "$program 2>&1 |" or die "Failed to run $program: $!"; my $inargs = 0; my @args; while () { chomp; if (/^\[NAME/) { $inargs = 1; next; } next unless $inargs; last if /^\s*$/; my ($name, $deflt, $descr) = /^(\S+)\s+(\S+)\s+(.*)$/; push @args, [$name, $deflt, $descr]; } die "No arguments found!" unless @args; while (<>) { if (/\.\\\" ### ARGUMENTS ###/) { foreach (@args) { my ($name, $deflt, $descr) = @$_; $name =~ s/-/\\-/g; $descr =~ s/ (-\S+)/ \\fB\\$1\\fR/g; print <<"EOA"; .TP .B $name $descr EOA } } else { print; } } __END__ =head1 NAME sphinx_args2man - Generate manual pages from the output of Sphinx programs =head1 SYNOPSIS B I E I