]> Kevux Git Server - rit/commitdiff
Documentation: teach "cmd-list.perl" about out-of-tree builds
authorPatrick Steinhardt <ps@pks.im>
Fri, 6 Dec 2024 13:24:54 +0000 (14:24 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 6 Dec 2024 22:52:12 +0000 (07:52 +0900)
The "cmd-list.perl" script generates a list of commands that can be
included into our manpages. The script doesn't know about out-of-tree
builds and instead writes resulting files into the source directory.

Adapt it such that we can read data from the source directory and write
data into the build directory.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/Makefile
Documentation/cmd-list.perl

index a74fc0f..e853d89 100644 (file)
@@ -312,7 +312,7 @@ cmds_txt = cmds-ancillaryinterrogators.txt \
 $(cmds_txt): cmd-list.made
 
 cmd-list.made: cmd-list.perl ../command-list.txt $(MAN1_TXT)
-       $(QUIET_GEN)$(PERL_PATH) ./cmd-list.perl ../command-list.txt $(cmds_txt) $(QUIET_STDERR) && \
+       $(QUIET_GEN)$(PERL_PATH) ./cmd-list.perl .. . $(cmds_txt) && \
        date >$@
 
 mergetools_txt = mergetools-diff.txt mergetools-merge.txt
index 755a110..e260a98 100755 (executable)
@@ -3,12 +3,13 @@
 use File::Compare qw(compare);
 
 sub format_one {
-       my ($out, $nameattr) = @_;
+       my ($source_dir, $out, $nameattr) = @_;
        my ($name, $attr) = @$nameattr;
+       my ($path) = "$source_dir/Documentation/$name.txt";
        my ($state, $description);
        my $mansection;
        $state = 0;
-       open I, '<', "$name.txt" or die "No such file $name.txt";
+       open I, '<', "$path" or die "No such file $path.txt";
        while (<I>) {
                if (/^(?:git|scalar)[a-z0-9-]*\(([0-9])\)$/) {
                        $mansection = $1;
@@ -29,7 +30,7 @@ sub format_one {
        }
        close I;
        if (!defined $description) {
-               die "No description found in $name.txt";
+               die "No description found in $path.txt";
        }
        if (my ($verify_name, $text) = ($description =~ /^($name) - (.*)/)) {
                print $out "linkgit:$name\[$mansection\]::\n\t";
@@ -43,9 +44,9 @@ sub format_one {
        }
 }
 
-my ($input, @categories) = @ARGV;
+my ($source_dir, $build_dir, @categories) = @ARGV;
 
-open IN, "<$input";
+open IN, "<$source_dir/command-list.txt";
 while (<IN>) {
        last if /^### command list/;
 }
@@ -63,17 +64,17 @@ close IN;
 
 for my $out (@categories) {
        my ($cat) = $out =~ /^cmds-(.*)\.txt$/;
-       open O, '>', "$out+" or die "Cannot open output file $out+";
+       my ($path) = "$build_dir/$out";
+       open O, '>', "$path+" or die "Cannot open output file $out+";
        for (@{$cmds{$cat}}) {
-               format_one(\*O, $_);
+               format_one($source_dir, \*O, $_);
        }
        close O;
 
-       if (-f "$out" && compare("$out", "$out+") == 0) {
-               unlink "$out+";
+       if (-f "$path" && compare("$path", "$path+") == 0) {
+               unlink "$path+";
        }
        else {
-               print STDERR "$out\n";
-               rename "$out+", "$out";
+               rename "$path+", "$path";
        }
 }