tools/buildbot/helpers.pm
author David Anderson <dvander@alliedmods.net>
Tue Dec 25 17:02:07 2012 -0800 (2012-12-25)
changeset 239 572668ef742b
parent 112 54ec6ed5d90d
permissions -rw-r--r--
More const preparation: allow type casts to follow qualification.
     1 #!/usr/bin/perl
     2 # vim: set ts=2 sw=2 tw=99 et:
     3 
     4 use strict;
     5 use Cwd;
     6 
     7 package Build;
     8 
     9 our $SVN = "/usr/bin/svn";
    10 our $SVN_USER = 'dvander';
    11 our $SVN_ARGS = '';
    12 
    13 sub HgRevNum
    14 {
    15   my ($path) = (@_);
    16   my ($cd, $text, $rev);
    17 
    18   $cd = Cwd::cwd();
    19   chdir($path);
    20   $text = `hg identify -n`;
    21   chdir($cd);
    22 
    23   chomp $text;
    24   if ($text =~ /^(\d+)/)
    25   {
    26     return $1;
    27   }
    28 
    29   return 0;
    30 }
    31 
    32 sub SvnRevNum
    33 {
    34   my ($str)=(@_);
    35       
    36   my $data = Command('svnversion -c ' . $str);
    37   if ($data =~ /(\d+):(\d+)/)
    38   {
    39     return $2;
    40   } elsif ($data =~ /(\d+)/) {
    41     return $1;
    42   } else {
    43     return 0;
    44   }
    45 }
    46 
    47 sub ProductVersion
    48 {
    49   my ($file) = (@_);
    50   my ($version);
    51   open(FILE, $file) or die "Could not open $file: $!\n";
    52   $version = <FILE>;
    53   close(FILE);
    54   chomp $version;
    55   return $version;
    56 }
    57 
    58 sub Delete
    59 {
    60   my ($str)=(@_);
    61   if ($^O =~ /MSWin/)
    62   {
    63     Command("del /S /F /Q \"$str\"");
    64     Command("rmdir /S /Q \"$str\"");
    65   } else {
    66     Command("rm -rf $str");
    67   }
    68   return !(-e $str);
    69 }
    70 
    71 sub Copy
    72 {
    73   my ($src,$dest)=(@_);
    74   if ($^O =~ /MSWin/)
    75   {
    76     Command("copy \"$src\" \"$dest\" /y");
    77   } else {
    78     Command("cp \"$src\" \"$dest\"");
    79   }
    80   return (-e $dest);
    81 }
    82 
    83 sub Move
    84 {
    85   my ($src,$dest)=(@_);
    86   if ($^O =~ /MSWin/)
    87   {
    88     Command("move \"$src\" \"$dest\"");
    89   } else {
    90     Command("mv \"$src\" \"$dest\"");
    91   }
    92   return (-e $dest);
    93 }
    94 
    95 sub Command
    96 {
    97   my($cmd)=(@_);
    98   print "$cmd\n";
    99   return `$cmd`;
   100 }
   101 
   102 sub PathFormat
   103 {
   104   my ($str)=(@_);
   105   if ($^O =~ /MSWin/)
   106   {
   107     $str =~ s#/#\\#g;
   108   } else {
   109     $str =~ s#\\#/#g;
   110   }
   111   return $str;
   112 }
   113 
   114 sub SVN_Remove
   115 {
   116   my ($file)=(@_);
   117   my ($path, $name);
   118   if ($^O =~ /MSWin/)
   119   {
   120     ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/);
   121   } else {
   122     ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/);
   123   }
   124   my $dir = Cwd::cwd();
   125   chdir($path);
   126   Command($SVN . ' ' . $SVN_ARGS . ' delete ' . $name);
   127   chdir($dir);
   128 }
   129 
   130 sub SVN_Add
   131 {
   132   my ($file)=(@_);
   133   my ($path, $name);
   134   if ($^O =~ /MSWin/)
   135   {
   136     ($path, $name) = ($file =~ /(.+)\/([^\/]+)$/);
   137   } else {
   138     ($path, $name) = ($file =~ /(.+)\\([^\\]+)$/);
   139   }
   140   my $dir = Cwd::cwd();
   141   chdir($path);
   142   Command($SVN . ' ' . $SVN_ARGS . ' add ' . $name);
   143   chdir($dir);
   144 }
   145 
   146 sub GetBuildType
   147 {
   148   my ($file)=(@_);
   149   my ($type);
   150   open(TYPE, $file) or die("Could not open file: $!\n");
   151   $type = <TYPE>;
   152   close(TYPE);
   153   chomp $type;
   154   return $type;
   155 }
   156 
   157 return 1;