| author | David Anderson <dvander@alliedmods.net> |
| Tue Dec 25 18:13:02 2012 -0800 (2012-12-25) | |
| changeset 240 | e3c851a14f16 |
| parent 112 | 54ec6ed5d90d |
| permissions | -rw-r--r-- |
1 #!/usr/bin/perl
2 # vim: set ts=2 sw=2 tw=99 et:
4 use strict;
5 use Cwd;
7 package Build;
9 our $SVN = "/usr/bin/svn";
10 our $SVN_USER = 'dvander';
11 our $SVN_ARGS = '';
13 sub HgRevNum
14 {
15 my ($path) = (@_);
16 my ($cd, $text, $rev);
18 $cd = Cwd::cwd();
19 chdir($path);
20 $text = `hg identify -n`;
21 chdir($cd);
23 chomp $text;
24 if ($text =~ /^(\d+)/)
25 {
26 return $1;
27 }
29 return 0;
30 }
32 sub SvnRevNum
33 {
34 my ($str)=(@_);
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 }
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 }
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 }
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 }
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 }
95 sub Command
96 {
97 my($cmd)=(@_);
98 print "$cmd\n";
99 return `$cmd`;
100 }
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 }
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 }
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 }
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 }
157 return 1;