-#
+#!/usr/bin/perl -w
+
+use File::Compare qw(compare);
sub format_one {
- my ($out, $name) = @_;
+ my ($out, $nameattr) = @_;
+ my ($name, $attr) = @$nameattr;
my ($state, $description);
+ $state = 0;
open I, '<', "$name.txt" or die "No such file $name.txt";
while (<I>) {
if (/^NAME$/) {
die "No description found in $name.txt";
}
if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
- print $out "gitlink:$name\[1\]::\n";
- print $out "\t$text.\n\n";
+ print $out "linkgit:$name\[1\]::\n\t";
+ if ($attr =~ / deprecated /) {
+ print $out "(deprecated) ";
+ }
+ print $out "$text.\n\n";
}
else {
die "Description does not match $name: $description";
}
my %cmds = ();
-while (<DATA>) {
+for (sort <>) {
next if /^#/;
chomp;
- my ($name, $cat) = /^(\S+)\s+(.*)$/;
- push @{$cmds{$cat}}, $name;
+ my ($name, $cat, $attr) = /^(\S+)\s+(.*?)(?:\s+(.*))?$/;
+ $attr = '' unless defined $attr;
+ push @{$cmds{$cat}}, [$name, " $attr "];
}
for my $cat (qw(ancillaryinterrogators
mainporcelain
plumbinginterrogators
plumbingmanipulators
- synchingrepositories)) {
+ synchingrepositories
+ foreignscminterface
+ purehelpers
+ synchelpers)) {
my $out = "cmds-$cat.txt";
open O, '>', "$out+" or die "Cannot open output file $out+";
for (@{$cmds{$cat}}) {
format_one(\*O, $_);
}
close O;
- rename "$out+", "$out";
-}
-__DATA__
-git-add mainporcelain
-git-am mainporcelain
-git-annotate ancillaryinterrogators
-git-applymbox mainporcelain
-git-applypatch ancillarymanipulators
-git-apply plumbingmanipulators
-git-archimport ancillarymanipulators
-git-archive mainporcelain
-git-bisect mainporcelain
-git-blame ancillaryinterrogators
-git-branch mainporcelain
-git-cat-file plumbinginterrogators
-git-checkout-index plumbingmanipulators
-git-checkout mainporcelain
-git-check-ref-format ancillaryinterrogators
-git-cherry ancillaryinterrogators
-git-cherry-pick mainporcelain
-git-clean mainporcelain
-git-clone mainporcelain
-git-commit mainporcelain
-git-commit-tree plumbingmanipulators
-git-convert-objects ancillarymanipulators
-git-count-objects ancillaryinterrogators
-git-cvsexportcommit ancillarymanipulators
-git-cvsimport ancillarymanipulators
-git-cvsserver ancillarymanipulators
-git-daemon ancillaryinterrogators
-git-describe plumbinginterrogators
-git-diff-files plumbinginterrogators
-git-diff-index plumbinginterrogators
-git-diff mainporcelain
-git-diff-stages plumbinginterrogators
-git-diff-tree plumbinginterrogators
-git-fetch mainporcelain
-git-fetch-pack synchingrepositories
-git-fmt-merge-msg ancillaryinterrogators
-git-for-each-ref plumbinginterrogators
-git-format-patch mainporcelain
-git-fsck-objects plumbinginterrogators
-git-gc ancillarymanipulators
-git-get-tar-commit-id ancillaryinterrogators
-git-grep mainporcelain
-git-hash-object plumbingmanipulators
-git-http-fetch synchingrepositories
-git-http-push synchingrepositories
-git-imap-send ancillaryinterrogators
-git-index-pack plumbingmanipulators
-git-init plumbingmanipulators
-git-instaweb ancillaryinterrogators
-gitk mainporcelain
-git-local-fetch synchingrepositories
-git-log mainporcelain
-git-lost-found ancillarymanipulators
-git-ls-files plumbinginterrogators
-git-ls-remote mainporcelain
-git-ls-tree plumbinginterrogators
-git-mailinfo ancillaryinterrogators
-git-mailsplit ancillaryinterrogators
-git-merge-base plumbinginterrogators
-git-merge-file plumbingmanipulators
-git-merge-index plumbingmanipulators
-git-merge mainporcelain
-git-merge-one-file ancillarymanipulators
-git-merge-tree ancillaryinterrogators
-git-mktag plumbingmanipulators
-git-mktree plumbingmanipulators
-git-mv mainporcelain
-git-name-rev plumbinginterrogators
-git-pack-objects plumbingmanipulators
-git-pack-redundant plumbinginterrogators
-git-pack-refs mainporcelain
-git-parse-remote ancillaryinterrogators
-git-patch-id ancillaryinterrogators
-git-peek-remote synchingrepositories
-git-prune ancillarymanipulators
-git-prune-packed plumbingmanipulators
-git-pull mainporcelain
-git-push mainporcelain
-git-quiltimport ancillarymanipulators
-git-read-tree plumbingmanipulators
-git-rebase mainporcelain
-git-receive-pack synchingrepositories
-git-reflog ancillarymanipulators
-git-relink ancillarymanipulators
-git-repack mainporcelain
-git-repo-config plumbingmanipulators
-git-request-pull ancillaryinterrogators
-git-rerere mainporcelain
-git-reset mainporcelain
-git-resolve mainporcelain
-git-revert mainporcelain
-git-rev-list plumbinginterrogators
-git-rev-parse ancillaryinterrogators
-git-rm mainporcelain
-git-runstatus ancillaryinterrogators
-git-send-email ancillaryinterrogators
-git-send-pack synchingrepositories
-git-shell synchingrepositories
-git-shortlog mainporcelain
-git-show mainporcelain
-git-show-branch mainporcelain
-git-show-index plumbinginterrogators
-git-show-ref plumbinginterrogators
-git-sh-setup ancillarymanipulators
-git-ssh-fetch synchingrepositories
-git-ssh-upload synchingrepositories
-git-status mainporcelain
-git-stripspace ancillaryinterrogators
-git-svn ancillarymanipulators
-git-svnimport ancillarymanipulators
-git-symbolic-ref ancillaryinterrogators
-git-symbolic-ref ancillarymanipulators
-git-tag ancillarymanipulators
-git-tar-tree plumbinginterrogators
-git-unpack-file plumbinginterrogators
-git-unpack-objects plumbingmanipulators
-git-update-index plumbingmanipulators
-git-update-ref ancillarymanipulators
-git-update-server-info synchingrepositories
-git-upload-archive synchingrepositories
-git-upload-pack synchingrepositories
-git-var plumbinginterrogators
-git-verify-pack plumbinginterrogators
-git-verify-tag mainporcelain
-git-whatchanged mainporcelain
-git-write-tree plumbingmanipulators
+ if (-f "$out" && compare("$out", "$out+") == 0) {
+ unlink "$out+";
+ }
+ else {
+ print STDERR "$out\n";
+ rename "$out+", "$out";
+ }
+}