danderson@95: #!/usr/bin/perl dvander@112: # vim: set ts=2 sw=2 tw=99 et: danderson@95: danderson@95: use strict; danderson@95: use Cwd; danderson@95: danderson@95: package Build; danderson@95: danderson@95: our $SVN = "/usr/bin/svn"; danderson@95: our $SVN_USER = 'dvander'; danderson@95: our $SVN_ARGS = ''; danderson@95: danderson@95: sub HgRevNum danderson@95: { dvander@112: my ($path) = (@_); dvander@112: my ($cd, $text, $rev); danderson@95: dvander@112: $cd = Cwd::cwd(); dvander@112: chdir($path); dvander@112: $text = `hg identify -n`; dvander@112: chdir($cd); danderson@95: dvander@112: chomp $text; dvander@112: if ($text =~ /^(\d+)/) dvander@112: { dvander@112: return $1; dvander@112: } danderson@95: dvander@112: return 0; danderson@95: } danderson@95: danderson@95: sub SvnRevNum danderson@95: { dvander@112: my ($str)=(@_); dvander@112: dvander@112: my $data = Command('svnversion -c ' . $str); dvander@112: if ($data =~ /(\d+):(\d+)/) dvander@112: { dvander@112: return $2; dvander@112: } elsif ($data =~ /(\d+)/) { dvander@112: return $1; dvander@112: } else { dvander@112: return 0; dvander@112: } danderson@95: } danderson@95: danderson@95: sub ProductVersion danderson@95: { dvander@112: my ($file) = (@_); dvander@112: my ($version); dvander@112: open(FILE, $file) or die "Could not open $file: $!\n"; dvander@112: $version = ; dvander@112: close(FILE); dvander@112: chomp $version; dvander@112: return $version; danderson@95: } danderson@95: danderson@95: sub Delete danderson@95: { dvander@112: my ($str)=(@_); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: Command("del /S /F /Q \"$str\""); dvander@112: Command("rmdir /S /Q \"$str\""); dvander@112: } else { dvander@112: Command("rm -rf $str"); dvander@112: } dvander@112: return !(-e $str); danderson@95: } danderson@95: danderson@95: sub Copy danderson@95: { dvander@112: my ($src,$dest)=(@_); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: Command("copy \"$src\" \"$dest\" /y"); dvander@112: } else { dvander@112: Command("cp \"$src\" \"$dest\""); dvander@112: } dvander@112: return (-e $dest); danderson@95: } danderson@95: danderson@95: sub Move danderson@95: { dvander@112: my ($src,$dest)=(@_); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: Command("move \"$src\" \"$dest\""); dvander@112: } else { dvander@112: Command("mv \"$src\" \"$dest\""); dvander@112: } dvander@112: return (-e $dest); danderson@95: } danderson@95: danderson@95: sub Command danderson@95: { dvander@112: my($cmd)=(@_); dvander@112: print "$cmd\n"; dvander@112: return `$cmd`; danderson@95: } danderson@95: danderson@95: sub PathFormat danderson@95: { dvander@112: my ($str)=(@_); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: $str =~ s#/#\\#g; dvander@112: } else { dvander@112: $str =~ s#\\#/#g; dvander@112: } dvander@112: return $str; danderson@95: } danderson@95: danderson@95: sub SVN_Remove danderson@95: { dvander@112: my ($file)=(@_); dvander@112: my ($path, $name); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); dvander@112: } else { dvander@112: ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); dvander@112: } dvander@112: my $dir = Cwd::cwd(); dvander@112: chdir($path); dvander@112: Command($SVN . ' ' . $SVN_ARGS . ' delete ' . $name); dvander@112: chdir($dir); danderson@95: } danderson@95: danderson@95: sub SVN_Add danderson@95: { dvander@112: my ($file)=(@_); dvander@112: my ($path, $name); dvander@112: if ($^O =~ /MSWin/) dvander@112: { dvander@112: ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); dvander@112: } else { dvander@112: ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); dvander@112: } dvander@112: my $dir = Cwd::cwd(); dvander@112: chdir($path); dvander@112: Command($SVN . ' ' . $SVN_ARGS . ' add ' . $name); dvander@112: chdir($dir); danderson@95: } danderson@95: danderson@95: sub GetBuildType danderson@95: { dvander@112: my ($file)=(@_); dvander@112: my ($type); dvander@112: open(TYPE, $file) or die("Could not open file: $!\n"); dvander@112: $type = ; dvander@112: close(TYPE); dvander@112: chomp $type; dvander@112: return $type; danderson@95: } danderson@95: danderson@95: return 1;