git-svn-id: https://scorched3d.svn.sourceforge.net/svnroot/scorched3d/trunk/scorched...
[scorched3d/parasti.git] / scripts / generateDiff.pl
blob62d8a5a498dc4d040510556ea82d5b4cb7df8488
1 use strict;
2 use File::Compare;
4 if (!defined $ARGV[0])
6 die "Usage : $0 <newdir> <olddir>";
9 my ($dir1, $dir2) = @ARGV;
11 open(OUT, ">diff.txt") || die "ERROR: Cannot open diff.txt";
13 checkDir($dir1, ".", $dir2, ".");
15 sub checkDir()
17 my ($dir1, $offset1, $dir2, $offset2) = @_;
19 my $actualdir1 = $dir1."\\".$offset1;
20 my $actualdir2 = $dir2."\\".$offset2;
22 # Src dir
23 opendir(DIR, $actualdir1) || die "ERROR $actualdir1";
24 my @files = readdir(DIR);
25 closedir(DIR);
27 if (! -d $actualdir2)
29 # New Dir
30 print "New Dir : $actualdir2\n";
31 print OUT "CreateDirectory \"\$INSTDIR\\$offset2\"\n";
34 foreach my $file (@files)
36 my $file1 = $actualdir1."\\".$file;
37 my $file2 = $actualdir2."\\".$file;
38 my $offfile = $offset1."\\".$file;
40 if (-f $file1)
42 if (! -f $file2)
44 # New file
45 print "New : $offfile\n";
46 print OUT "File \"/oname=\$INSTDIR\\$offfile\" \"$offfile\" \n";
48 else
50 if (compare($file1, $file2) != 0)
52 # Different file
53 print "Diff : $offfile\n";
54 print OUT "File \"/oname=\$INSTDIR\\$offfile\" \"$offfile\" \n";
58 elsif (-d $file1 && $file !~ /^\./)
60 checkDir($dir1, $offset1."\\".$file, $dir2, $offset2."\\".$file);
64 if (-d $actualdir2)
66 # Dest dir
67 opendir(DIR, $actualdir2) || die "ERROR $actualdir2";
68 my @files = readdir(DIR);
69 closedir(DIR);
71 foreach my $file (@files)
73 my $file1 = $actualdir1."\\".$file;
74 my $file2 = $actualdir2."\\".$file;
75 my $offfile = $offset2."\\".$file;
77 if (-f $file2)
79 if (! -f $file1)
81 # Old file
83 print "Old : $offfile\n";
84 print OUT "Delete \"\$INSTDIR\\$offfile\" \n";
87 elsif (-d $file2 && $file !~ /^\./)
89 if (! -d $file1)
91 # Old dir
92 print "Old Dir : $offfile\n";
93 print OUT "RMDir /r \"\$INSTDIR\\$offfile\" \n";