diff --git a/helpers.pm b/helpers.pm new file mode 100644 index 0000000..1e3e13e --- /dev/null +++ b/helpers.pm @@ -0,0 +1,174 @@ +#!/usr/bin/perl + +use strict; +use Cwd; + +package Build; + +our $SVN = "/usr/bin/svn"; +our $SVN_USER = 'dvander'; +our $SVN_ARGS = ''; + +sub GitRevNum +{ + my ($path) = (@_); + my ($cd, $text, $rev); + + $cd = Cwd::cwd(); + chdir($path); + $text = `git rev-list --count HEAD`; + chdir($cd); + + chomp $text; + if ($text =~ /^(\d+)/) { + return $1; + } + + return 0; +} + +sub HgRevNum +{ + my ($path) = (@_); + my ($cd, $text, $rev); + + $cd = Cwd::cwd(); + chdir($path); + $text = `hg identify -n`; + chdir($cd); + + chomp $text; + if ($text =~ /^(\d+)/) + { + return $1; + } + + return 0; +} + +sub SvnRevNum +{ + my ($str)=(@_); + + my $data = Command('svnversion -c ' . $str); + if ($data =~ /(\d+):(\d+)/) + { + return $2; + } elsif ($data =~ /(\d+)/) { + return $1; + } else { + return 0; + } +} + +sub ProductVersion +{ + my ($file) = (@_); + my ($version); + open(FILE, $file) or die "Could not open $file: $!\n"; + $version = ; + close(FILE); + chomp $version; + return $version; +} + +sub Delete +{ + my ($str)=(@_); + if ($^O =~ /MSWin/) + { + Command("del /S /F /Q \"$str\""); + Command("rmdir /S /Q \"$str\""); + } else { + Command("rm -rf $str"); + } + return !(-e $str); +} + +sub Copy +{ + my ($src,$dest)=(@_); + if ($^O =~ /MSWin/) + { + Command("copy \"$src\" \"$dest\" /y"); + } else { + Command("cp \"$src\" \"$dest\""); + } + return (-e $dest); +} + +sub Move +{ + my ($src,$dest)=(@_); + if ($^O =~ /MSWin/) + { + Command("move \"$src\" \"$dest\""); + } else { + Command("mv \"$src\" \"$dest\""); + } + return (-e $dest); +} + +sub Command +{ + my($cmd)=(@_); + print "$cmd\n"; + return `$cmd`; +} + +sub PathFormat +{ + my ($str)=(@_); + if ($^O =~ /MSWin/) + { + $str =~ s#/#\\#g; + } else { + $str =~ s#\\#/#g; + } + return $str; +} + +sub SVN_Remove +{ + my ($file)=(@_); + my ($path, $name); + if ($^O =~ /MSWin/) + { + ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); + } else { + ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); + } + my $dir = Cwd::cwd(); + chdir($path); + Command($SVN . ' ' . $SVN_ARGS . ' delete ' . $name); + chdir($dir); +} + +sub SVN_Add +{ + my ($file)=(@_); + my ($path, $name); + if ($^O =~ /MSWin/) + { + ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/); + } else { + ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/); + } + my $dir = Cwd::cwd(); + chdir($path); + Command($SVN . ' ' . $SVN_ARGS . ' add ' . $name); + chdir($dir); +} + +sub GetBuildType +{ + my ($file)=(@_); + my ($type); + open(TYPE, $file) or die("Could not open file: $!\n"); + $type = ; + close(TYPE); + chomp $type; + return $type; +} + +return 1;