Populated Bestine Capitol Building with missing NPCs. Also spawns several other missi...
[swg-src.git] / tools / stage_label_check.pl
blob397c5b318a6d35774c4952a37e2455e8dd7c4fbc
1 #!/usr/bin/perl
3 use strict;
4 use warnings;
6 my $debug = 100;
8 sub numerically()
10 return $a <=> $b;
13 die "usage: $0\n\tDetermines what changelists need to be pushed to test\n" if (@ARGV != 0);
15 my $p4 = "p4";
17 # read in the data files list
18 print STDERR "reading current files" if ($debug);
19 my %data_revisions;
20 open(P4, "$p4 -ztag files //depot/swg/current/data/... //depot/swg/current/dsrc/... |");
21 while (!eof(P4))
23 my $depotFile;
24 my $revision;
26 while (<P4>)
28 chomp;
29 if ($_ eq "")
31 last;
33 elsif (s/^\.\.\. depotFile //)
35 $depotFile = $_;
37 elsif (s/^\.\.\. rev //)
39 $revision = $_;
43 die "missing depotFile" if (!defined($depotFile));
44 die "missing revision " if (!defined($revision));
45 $data_revisions{$depotFile} = $revision;
47 close(P4);
48 my @data_keys = sort keys %data_revisions;
49 print STDERR " (", scalar(@data_keys), " files)\n" if ($debug);
51 # read in the stage files list
52 print STDERR "reading stage files" if ($debug);
53 my %stage_revisions;
54 open(P4, "$p4 -ztag files //depot/swg/current/data/...\@swg-stage-label //depot/swg/current/dsrc/...\@swg-stage-label |");
55 while (!eof(P4))
57 my $depotFile;
58 my $revision;
60 while (<P4>)
62 chomp;
63 if ($_ eq "")
65 last;
67 elsif (s/^\.\.\. depotFile //)
69 $depotFile = $_;
71 elsif (s/^\.\.\. rev //)
73 $revision = $_;
77 die "missing depotFile" if (!defined($depotFile));
78 die "missing revision " if (!defined($revision));
79 $stage_revisions{$depotFile} = $revision;
81 close(P4);
82 my @stage_keys = sort keys %stage_revisions;
83 print STDERR " (", scalar(@stage_keys), " files)\n" if ($debug);
85 print STDERR "comparing current vs stage" if ($debug);
86 # compare the two sets of files
87 my @new_revisions;
88 my $changed = 0;
89 while (@data_keys)
91 if (@stage_keys && ($data_keys[0] eq $stage_keys[0]))
93 my $key = shift @data_keys;
94 my $s = shift @stage_keys;
95 if ($data_revisions{$key} != $stage_revisions{$key})
97 $changed += 1;
98 foreach my $revision ($stage_revisions{$key}+1 .. $data_revisions{$key})
100 push(@new_revisions, "$key#$revision");
104 else
106 die "\nD\n$data_keys[0]\n$stage_keys[0]\n" if (@stage_keys && $stage_keys[0] lt $data_keys[0]);
108 $changed += 1;
110 my $key = shift @data_keys;
111 foreach my $revision (1 .. $data_revisions{$key})
113 push(@new_revisions, "$key#$revision");
117 print STDERR " (", $changed, " files changed)\n" if ($debug);
119 # generate the temp file of the revisions
120 print STDERR "finding changelists" if ($debug);
121 my $fstat = "fstat.tmp";
122 open(FSTAT, ">" . $fstat);
123 foreach (@new_revisions)
125 print FSTAT $_, "\n";
127 close(FSTAT);
128 my %changes;
129 my @labelsync;
130 open(P4, "$p4 -x $fstat fstat |") || die "$0: Could not open p4 fstat pipe: $!\n";
131 while (<P4>)
133 chomp;
134 if (s/^\.\.\. headChange //)
136 # print $_, "\t", (shift @new_revisions), "\n";
137 $changes{$_} = 1;
140 close(P4);
141 unlink($fstat);
142 print STDERR " (", scalar keys %changes, " changes)\n" if ($debug);
144 # get a description of each changelist
145 print STDERR "getting changelist descriptions\n" if ($debug);
146 foreach (sort numerically keys %changes)
148 open(P4, "$p4 describe -s $_|");
149 my $header = <P4>;
150 while (<P4>)
152 $header = "" if (/\[automated\]/);
154 close(P4);
155 print $header;