6 # collect lines continued with a '\' into an array
16 last unless (/\\\s*$/);
21 # regex && eval away unwanted strings from documentation
24 $text =~ s/USAGE_NOT\w+\(.*?"\s*\)//sxg;
25 $text =~ s/USAGE_\w+\(\s*?(.*?)"\s*\)/$1"/sxg;
27 my @line = split("\n", $text);
34 eval qq[ sprintf(qq#$_#) ]
40 # generate POD for an applet
46 my $trivial = $usage->{trivial};
47 $trivial =~ s/(?<!\w)(-\w+)/B<$1>/sxg;
49 map { $_ !~ /^\s/ && s/(?<!\w)(-\w+)/B<$1>/g; $_ }
50 split("\n", $usage->{full});
52 # add "\n" prior to certain lines to make indented
56 for (my $i = 0; $i < $len; $i++) {
58 if (($i+1) != $len && $f0[$i] !~ /^\s/ && $f0[$i+1] =~ /^\s/) {
59 next if ($f0[$i] =~ /^$/);
60 push(@f1, "") unless ($f0[$i+1] =~ /^\s*$/s);
63 my $full = join("\n", @f1);
65 # prepare notes if they exists
66 my $notes = (defined $usage->{notes})
67 ? "$usage->{notes}\n\n"
70 # prepare example if one exists
71 my $example = (defined $usage->{example})
78 split("\n", $example)) . "\n\n";
89 "-------------------------------".
94 # FIXME | generate SGML for an applet
105 # the keys are applet names, and
106 # the values will contain hashrefs of the form:
116 # get command-line options
128 if (defined $opt{help}) {
130 "$0 [OPTION]... [FILE]...\n",
140 # collect documenation into %docs
143 open(USAGE, $_) || die("$0: $_: $!");
145 my ($applet, $type, @line);
147 if (/^#define (\w+)_(\w+)_usage/) {
150 @line = continuation($fh);
151 my $doc = $docs{$applet} ||= { };
152 my $text = join("\n", @line);
153 $doc->{$type} = beautify($text);
159 # generate structured documentation
161 my $generator = \&pod_for_usage;
162 if (defined $opt{sgml}) {
163 $generator = \&sgml_for_usage;
166 foreach my $applet (sort keys %docs) {
167 print $generator->($applet, $docs{$applet});
176 autodocifier.pl - generate docs for busybox based on usage.h
180 autodocifier.pl usage.h > something
184 The purpose of this script is to automagically generate documentation
185 for busybox using its usage.h as the original source for content.
186 Currently, the same content has to be duplicated in 3 places in
187 slightly different formats -- F<usage.h>, F<docs/busybox.pod>, and
188 F<docs/busybox.sgml>. This is tedious, so Perl has come to the rescue.
190 This script was based on a script by Erik Andersen (andersen@lineo.com).
198 This displays the help message.
202 Generate POD (this is the default)
210 Be verbose (not implemented)
220 Copyright (c) 2001 John BEPPU. All rights reserved. This program is
221 free software; you can redistribute it and/or modify it under the same
222 terms as Perl itself.
226 John BEPPU <beppu@lineo.com>
230 # $Id: autodocifier.pl,v 1.16 2001/03/15 20:49:25 beppu Exp $