#!/usr/bin/perl -w
use strict;
require File::Temp;
use File::Temp ();

die "update_plist_test <test file> <plist file>\n" if ($#ARGV < 1);
my $testFile = shift @ARGV;
die "error: cannot read file $testFile\n" if (! -r $testFile);
my $plistFile = shift @ARGV;
die "error: cannot read file $plistFile\n" if (! -r $plistFile);

# Create a temp file for the new test.
my $fh = File::Temp->new();
my $filename = $fh->filename;
$fh->unlink_on_destroy(1);

# Copy the existing temp file, skipping the FileCheck comments.
open (IN, $testFile) or die "cannot open $testFile\n";
while (<IN>) {
  next if (/^\/\/ CHECK/);
  print $fh $_;
}
close(IN);

# Copy the plist data, and specially format it.
open (IN, $plistFile) or die "cannot open $plistFile\n";
my $firstArray = 1;
my $first = 1;
while (<IN>) {
  # Skip everything not indented.
  next if (/^[^\s]/);
  # Skip the first array entry, which is for files.
  if ($firstArray) {
    if (/<\/array>/) { $firstArray = 0; }
	next;
  }
  # Format the CHECK lines.
  if ($first) {
  	print $fh "// CHECK: ";
	$first = 0;
  }
  else {
  	print $fh "// CHECK-NEXT: ";
  }
  print $fh $_;
}
close (IN);
close ($fh);

`cp $filename $testFile`;
print "updated $testFile\n";
