The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Getopt::Gen::cmdline_pod.pm - built-in template for generating plain old documentation.

SYNOPSIS

 use Getopt::Gen::cmdline_pod;

 $og = Getopt::Gen::cmdline_pod->new(%args);
 $og->parse($options_file);
 $og->fill_in(%extra_text_template_fill_in_args);

DESCRIPTION

Generate pod documentation from option specifications.

METHODS

Most are inherited from Getopt::Gen.

  • fill_in(%args)

    Just like the Getopt::Gen method, except you do not need to specify 'TYPE' or 'SOURCE' parameters.

BUGS

Probably many.

ACKNOWLEDGEMENTS

perl by Larry Wall.

'gengetopt' was originally written by Roberto Arturo Tena Sanchez, and it is currently maintained by Lorenzo Bettini.

AUTHOR

Bryan Jurish <moocow@cpan.org>

SEE ALSO

perl(1). Getopt::Gen(3pm). Getopt::Gen::cmdline_c(3pm). Getopt::Gen::cmdline_h(3pm). Text::Template(3pm).

NAME

[@ (defined($og{USER}{program}) ? $og{USER}{program} : (defined($og{package}) ? $og{package} : '?')) @] - [@$og{purpose}@]

[@ $OUT = ''; if (defined($og{USER}{program_version}) || defined($og{version})) { $OUT .= "=head1 VERSION\n\n"; if (defined($og{USER}{program})) { $OUT .= $og{USER}{program}.' '; if (defined($og{USER}{program_version})) { $OUT .= $og{USER}{program_version}.' '; } } else { $OUT .= (defined($og{package}) ? ($og{package}.' '.(defined($og{version}) ? ($og{version}) : '')) : ''); } } @]

SYNOPSIS

[@ $OUT .= (defined($og{USER}{program}) ? $og{USER}{program} : (defined($og{package}) ? $og{package} : '?')); $OUT .= ' [OPTIONS]' if (@{$og{optl}}); if ($og{unnamed}) { if (@{$og{args}}) { $OUT .= join("", map { " $_->{name}" } @{$og{args}}); } else { $OUT .= " FILE(s)..."; } }

@] [@ #// -- summary: argument descriptions if ($og{unnamed} && @{$og{args}}) { my ($arg,$maxarglen); #// -- get argument field-lengths foreach $arg (@{$og{args}}) { $maxarglen = length($arg->{name}) if (!defined($maxarglen) || $maxarglen < length($arg)); } $OUT .= join("\n ", "", q{Arguments:}, map { sprintf(" %-${maxarglen}s %s", $_->{name}, $_->{descr}) } @{$og{args}}); }

    #// -- summary: option descriptions
    if (@{$og{optl}}) {
      #// -- get option field-lengths
      my ($optid,$opt,$maxshortlen,$maxlonglen,$oshortlen,$olonglen);
      my ($short,$long,$descr);
      foreach $opt (values(%{$og{opth}})) {
        $oshortlen = defined($opt->{short}) ? 2 : 0;
        $olonglen = defined($opt->{long}) ? 2+length($opt->{long}) : 0;
        if ($opt->{arg}) {
          $oshortlen += length($opt->{arg});
          $olonglen += 1+length($opt->{arg});
        }
        $maxshortlen = $oshortlen
          if (!defined($maxshortlen) || $maxshortlen < $oshortlen);
        $maxlonglen = $olonglen
          if (!defined($maxlonglen) || $maxlonglen < $olonglen);
      }
      #// -- print option summary
      my $group = '';
      foreach $optid (@{$og{optl}}) {
        $opt = $og{opth}{$optid};
        if ($opt->{group} ne $group) {
          #// -- print group header
          $group = $opt->{group};
          $OUT .= "\n\n $group";
        }
        #// -- print option
        $short = $long = $descr = '';
        if (defined($opt->{short}) && $opt->{short} ne '-') {
          $short = "-$opt->{short}";
          $short .= $opt->{arg} if (defined($opt->{arg}));
        }
        if (defined($opt->{long}) && $opt->{long} ne '-') {
          $long = $opt->{long};
          $long = '--'.$long;
          $long .= '='.$opt->{arg} if (defined($opt->{arg}));
        }
        next if ($short eq '' && !$og{longhelp});
        $OUT .= ("\n    "
                 .sprintf("%-${maxshortlen}s", $short)
                 .($og{longhelp} ? sprintf("  %-${maxlonglen}s", $long) : '')
                 .'  '.$opt->{descr});
      }
    }
@]

DESCRIPTION

[@ $og{purpose} ? $og{purpose} : '' @]

[@ defined($og{USER}{details}) ? $og{USER}{details} : '' @]

CONFIGURATION FILES

Configuration files are expected to contain lines of the form:

    LONG_OPTION_NAME    OPTION_VALUE

where LONG_OPTION_NAME is the long name of some option, without the leading '--', and OPTION_VALUE is the value for that option, if any. Fields are whitespace-separated. Blank lines and comments (lines beginning with '#') are ignored.

); if (@{$og{rcfiles}}) { $OUT .= ("The following configuration files are read by default:\n" ."\n" ."=over 4\n\n" .join('', map { "=item * $_\n\n" } @{$og{rcfiles}}) ."=back\n\n"); } else { $OUT .= "No configuration files are read by default.\n\n"; } } $OUT = "=pod\n\n$OUT\n\n=cut\n\n" if ($OUT); @]

############################################################### # Addenda ###############################################################

ADDENDA

[@ defined($og{USER}{addenda}) ? $og{USER}{addenda} : ''; @]

About this Document

Documentation file auto-generated by [@$og{name}@] version [@$OptGenVersion@] using Getopt::Gen version [@ $Getopt::Gen::VERSION @]. [@ my $ts='Translation was initiated'; if ($og{want_timestamp}) { my $d=`date`; $d=~s/\s*$//s; $ts.=" on $d"; } $ts; @] as:

   optgen.perl [@ $CMDLINE_OPTIONS @]

BUGS AND LIMITATIONS

[@ defined($og{USER}{bugs}) ? $og{USER}{bugs} : "Unknown." @]

ACKNOWLEDGEMENTS

[@ defined($og{USER}{acknowledge}) ? $og{USER}{acknowledge} : 'Perl by Larry Wall.

Getopt::Gen by Bryan Jurish.'; @]

AUTHOR

[@ (defined($og{USER}{author}) ? podify($og{USER}{author}) : 'A. U. Thor, <a.u.thor@a.galaxy.far.far.away>'); @]

SEE ALSO

[@ (defined($og{USER}{seealso}) ? $og{USER}{seealso} : 'perl, Getopt::Gen.'); @]