From ee1a0bed6c5cddd225cb11dac5ffba839f2417d7 Mon Sep 17 00:00:00 2001 From: gromgit Date: Sat, 20 Feb 2016 13:00:56 +0800 Subject: [PATCH] Improved man page layout The option layout is now much closer to that of traditional man pages. --- src/bin/genman.pl | 45 +++++++++++++++++++++++---------------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/bin/genman.pl b/src/bin/genman.pl index 45f385f..bea4c3d 100755 --- a/src/bin/genman.pl +++ b/src/bin/genman.pl @@ -14,36 +14,37 @@ eval "$argfile_content"; my $option_list = ''; -my ($required_opts, $optional_opts) = ('', ''); +my ($required_opts, $required_longopts, $optional_opts, $optional_longopts) = ('', '', '', ''); foreach my $opt (@args) { $opt->{description} =~ s/\\//g; if ($opt->{required}) { - $required_opts .= $opt->{shortopt}; - } else { - $optional_opts .= $opt->{shortopt}; - } - if ($opt->{type} eq 'flag' || $opt->{type} eq 'custom_flag') { - if ($opt->{longopt}) { - $option_list .= ".TP\n" . '\fB\-' . $opt->{shortopt} . - ' \-\-' . $opt->{longopt} . '\fR' . - "\n" . $opt->{description} . "\n"; + if ($opt->{shortopt}) { + $required_opts .= $opt->{shortopt}; } else { - $option_list .= ".TP\n" . '\fB\-' . $opt->{shortopt} . - '\fR' . - "\n" . $opt->{description} . "\n"; + $required_longopts .= ' <\fI--' . $opt->{longopt} . '\fR>'; } } else { - if ($opt->{longopt}) { - $option_list .= ".TP\n" . '\fB\-' . $opt->{shortopt} . - '\fR ' . $opt->{name} . - ' \fB \-\-' . $opt->{longopt} . '\fR=' . $opt->{name} . - "\n" . $opt->{description} . "\n"; + if ($opt->{shortopt}) { + $optional_opts .= $opt->{shortopt}; } else { - $option_list .= ".TP\n" . '\fB\-' . $opt->{shortopt} . - '\fR ' . $opt->{name} . - "\n" . $opt->{description} . "\n"; + $optional_longopts .= ' [\fI--' . $opt->{longopt} . '\fR]'; } } + if ($opt->{type} eq 'flag' || $opt->{type} eq 'custom_flag') { + $option_list .= ".TP\n" . '\fB' . + ($opt->{shortopt} ? '\-' . $opt->{shortopt} : '') . + ($opt->{shortopt} && $opt->{longopt} ? ', ' : '') . + ($opt->{longopt} ? '\-\-' . $opt->{longopt} : ''). '\fR' . + "\n" . $opt->{description} . "\n"; + } else { + $option_list .= ".TP\n" . + ($opt->{shortopt} ? '\fB\-' . $opt->{shortopt} . '\fR' . + ($opt->{longopt} ? '' : ' ' . $opt->{name}) + : '') . + ($opt->{shortopt} && $opt->{longopt} ? ', ' : '') . + ($opt->{longopt} ? '\fB\-\-' . $opt->{longopt} . '\fR=' . $opt->{name} : '') . + "\n" . $opt->{description} . "\n"; + } } if ($required_opts) { @@ -64,7 +65,7 @@ $global{name} \\- $global{description} .SH SYNOPSIS .TP -\\fB$global{name}\\fP $required_opts $optional_opts $global{trailing_opts} +\\fB$global{name}\\fP $required_opts $optional_opts${required_longopts}${optional_longopts} $global{trailing_opts} .SH DESCRIPTION $global{description} $option_list