175 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/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 = <FILE>;
 | |
| 	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 = <TYPE>;
 | |
| 	close(TYPE);
 | |
| 	chomp $type;
 | |
| 	return $type;
 | |
| }
 | |
| 
 | |
| return 1;
 |