Skip to content

Commit 72fe6a5

Browse files
author
Junio C Hamano
committed
Documentation: Generate command lists.
This moves the source of the list of commands and categorization to the end of Documentation/cmd-list.perl, so that re-categorization and re-ordering would become easier to manage. Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent c3f0baa commit 72fe6a5

9 files changed

+196
-379
lines changed

Documentation/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,4 @@
55
howto-index.txt
66
doc.dep
77
README
8+
cmds-*.txt

Documentation/Makefile

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,21 @@ doc.dep : $(wildcard *.txt) build-docdep.perl
7171

7272
-include doc.dep
7373

74-
git.7 git.html: git.txt core-intro.txt
74+
cmds_txt = cmds-ancillaryinterrogators.txt \
75+
cmds-ancillarymanipulators.txt \
76+
cmds-mainporcelain.txt \
77+
cmds-plumbinginterrogators.txt \
78+
cmds-plumbingmanipulators.txt \
79+
cmds-synchingrepositories.txt
80+
81+
$(cmds_txt): cmd-list.perl $(MAN1_TXT) $(MAN7_TXT)
82+
perl ./cmd-list.perl
7583

84+
git.7 git.html: git.txt core-intro.txt
7685

7786
clean:
7887
rm -f *.xml *.html *.1 *.7 howto-index.txt howto/*.html doc.dep
88+
rm -f $(cmds_txt)
7989

8090
%.html : %.txt
8191
asciidoc -b xhtml11 -d manpage -f asciidoc.conf $<

Documentation/cmd-list.perl

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,184 @@
1+
#
2+
3+
sub format_one {
4+
my ($out, $name) = @_;
5+
my ($state, $description);
6+
open I, '<', "$name.txt" or die "No such file $name.txt";
7+
while (<I>) {
8+
if (/^NAME$/) {
9+
$state = 1;
10+
next;
11+
}
12+
if ($state == 1 && /^----$/) {
13+
$state = 2;
14+
next;
15+
}
16+
next if ($state != 2);
17+
chomp;
18+
$description = $_;
19+
last;
20+
}
21+
close I;
22+
if (!defined $description) {
23+
die "No description found in $name.txt";
24+
}
25+
if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
26+
print $out "gitlink:$name\[1\]::\n";
27+
print $out "\t$text.\n\n";
28+
}
29+
else {
30+
die "Description does not match $name: $description";
31+
}
32+
}
33+
34+
my %cmds = ();
35+
while (<DATA>) {
36+
next if /^#/;
37+
38+
chomp;
39+
my ($name, $cat) = /^(\S+)\s+(.*)$/;
40+
push @{$cmds{$cat}}, $name;
41+
}
42+
43+
for my $cat (qw(ancillaryinterrogators
44+
ancillarymanipulators
45+
mainporcelain
46+
plumbinginterrogators
47+
plumbingmanipulators
48+
synchingrepositories)) {
49+
my $out = "cmds-$cat.txt";
50+
open O, '>', "$out+" or die "Cannot open output file $out+";
51+
for (@{$cmds{$cat}}) {
52+
format_one(\*O, $_);
53+
}
54+
close O;
55+
rename "$out+", "$out";
56+
}
57+
58+
__DATA__
59+
git-add mainporcelain
60+
git-am mainporcelain
61+
git-annotate ancillaryinterrogators
62+
git-applymbox mainporcelain
63+
git-applypatch ancillarymanipulators
64+
git-apply plumbingmanipulators
65+
git-archimport ancillarymanipulators
66+
git-archive mainporcelain
67+
git-bisect mainporcelain
68+
git-blame ancillaryinterrogators
69+
git-branch mainporcelain
70+
git-cat-file plumbinginterrogators
71+
git-checkout-index plumbingmanipulators
72+
git-checkout mainporcelain
73+
git-check-ref-format ancillaryinterrogators
74+
git-cherry ancillaryinterrogators
75+
git-cherry-pick mainporcelain
76+
git-clean mainporcelain
77+
git-clone mainporcelain
78+
git-commit mainporcelain
79+
git-commit-tree plumbingmanipulators
80+
git-convert-objects ancillarymanipulators
81+
git-count-objects ancillaryinterrogators
82+
git-cvsexportcommit ancillarymanipulators
83+
git-cvsimport ancillarymanipulators
84+
git-cvsserver ancillarymanipulators
85+
git-daemon ancillaryinterrogators
86+
git-describe plumbinginterrogators
87+
git-diff-files plumbinginterrogators
88+
git-diff-index plumbinginterrogators
89+
git-diff mainporcelain
90+
git-diff-stages plumbinginterrogators
91+
git-diff-tree plumbinginterrogators
92+
git-fetch mainporcelain
93+
git-fetch-pack synchingrepositories
94+
git-fmt-merge-msg ancillaryinterrogators
95+
git-for-each-ref plumbinginterrogators
96+
git-format-patch mainporcelain
97+
git-fsck-objects plumbinginterrogators
98+
git-gc ancillarymanipulators
99+
git-get-tar-commit-id ancillaryinterrogators
100+
git-grep mainporcelain
101+
git-hash-object plumbingmanipulators
102+
git-http-fetch synchingrepositories
103+
git-http-push synchingrepositories
104+
git-imap-send ancillaryinterrogators
105+
git-index-pack plumbingmanipulators
106+
git-init plumbingmanipulators
107+
git-instaweb ancillaryinterrogators
108+
gitk mainporcelain
109+
git-local-fetch synchingrepositories
110+
git-log mainporcelain
111+
git-lost-found ancillarymanipulators
112+
git-ls-files plumbinginterrogators
113+
git-ls-remote mainporcelain
114+
git-ls-tree plumbinginterrogators
115+
git-mailinfo ancillaryinterrogators
116+
git-mailsplit ancillaryinterrogators
117+
git-merge-base plumbinginterrogators
118+
git-merge-file plumbingmanipulators
119+
git-merge-index plumbingmanipulators
120+
git-merge mainporcelain
121+
git-merge-one-file ancillarymanipulators
122+
git-merge-tree ancillaryinterrogators
123+
git-mktag plumbingmanipulators
124+
git-mktree plumbingmanipulators
125+
git-mv mainporcelain
126+
git-name-rev plumbinginterrogators
127+
git-pack-objects plumbingmanipulators
128+
git-pack-redundant plumbinginterrogators
129+
git-pack-refs mainporcelain
130+
git-parse-remote ancillaryinterrogators
131+
git-patch-id ancillaryinterrogators
132+
git-peek-remote synchingrepositories
133+
git-prune ancillarymanipulators
134+
git-prune-packed plumbingmanipulators
135+
git-pull mainporcelain
136+
git-push mainporcelain
137+
git-quiltimport ancillarymanipulators
138+
git-read-tree plumbingmanipulators
139+
git-rebase mainporcelain
140+
git-receive-pack synchingrepositories
141+
git-reflog ancillarymanipulators
142+
git-relink ancillarymanipulators
143+
git-repack mainporcelain
144+
git-repo-config plumbingmanipulators
145+
git-request-pull ancillaryinterrogators
146+
git-rerere mainporcelain
147+
git-reset mainporcelain
148+
git-resolve mainporcelain
149+
git-revert mainporcelain
150+
git-rev-list plumbinginterrogators
151+
git-rev-parse ancillaryinterrogators
152+
git-rm mainporcelain
153+
git-runstatus ancillaryinterrogators
154+
git-send-email ancillaryinterrogators
155+
git-send-pack synchingrepositories
156+
git-shell synchingrepositories
157+
git-shortlog mainporcelain
158+
git-show mainporcelain
159+
git-show-branch mainporcelain
160+
git-show-index plumbinginterrogators
161+
git-show-ref plumbinginterrogators
162+
git-sh-setup ancillarymanipulators
163+
git-ssh-fetch synchingrepositories
164+
git-ssh-upload synchingrepositories
165+
git-status mainporcelain
166+
git-stripspace ancillaryinterrogators
167+
git-svn ancillarymanipulators
168+
git-svnimport ancillarymanipulators
169+
git-symbolic-ref ancillaryinterrogators
170+
git-symbolic-ref ancillarymanipulators
171+
git-tag ancillarymanipulators
172+
git-tar-tree plumbinginterrogators
173+
git-unpack-file plumbinginterrogators
174+
git-unpack-objects plumbingmanipulators
175+
git-update-index plumbingmanipulators
176+
git-update-ref ancillarymanipulators
177+
git-update-server-info synchingrepositories
178+
git-upload-archive synchingrepositories
179+
git-upload-pack synchingrepositories
180+
git-var plumbinginterrogators
181+
git-verify-pack plumbinginterrogators
182+
git-verify-tag mainporcelain
183+
git-whatchanged mainporcelain
184+
git-write-tree plumbingmanipulators

Documentation/cmds-ancillaryinterrogators.txt

Lines changed: 0 additions & 63 deletions
This file was deleted.

Documentation/cmds-ancillarymanipulators.txt

Lines changed: 0 additions & 57 deletions
This file was deleted.

0 commit comments

Comments
 (0)