6f08fafca026c8b5385a19eb68123288b74ba71b
[awesomized/libmemcached] / memcached / version.pl
1 #!/usr/bin/perl
2 # If you think this is stupid/overkill, blame dormando
3
4 use warnings;
5 use strict;
6
7 my $version = `git describe`;
8 chomp $version;
9 # Test the various versions.
10 #my $version = 'foob';
11 #my $version = '1.4.2-30-gf966dba';
12 #my $version = '1.4.3-rc1';
13 #my $version = '1.4.3';
14 unless ($version =~ m/^\d+\.\d+\.\d+/) {
15 write_file('version.m4', "m4_define([VERSION_NUMBER], [UNKNOWN])\n");
16 exit;
17 }
18
19 $version =~ s/-/_/g;
20 write_file('version.m4', "m4_define([VERSION_NUMBER], [$version])\n");
21 my ($VERSION, $FULLVERSION, $RELEASE);
22
23 if ($version =~ m/^(\d+\.\d+\.\d+)_rc(\d+)$/) {
24 $VERSION = $1;
25 $FULLVERSION = $version;
26 $RELEASE = '0.1.rc' . $2;
27 } elsif ($version =~ m/^(\d+\.\d+\.\d+)_(.+)$/) {
28 $VERSION = $1;
29 $FULLVERSION = $version;
30 $RELEASE = '1.' . $2;
31 } elsif ($version =~ m/^(\d+\.\d+\.\d+)$/) {
32 $VERSION = $1;
33 $FULLVERSION = $version;
34 $RELEASE = '1';
35 }
36
37 my $spec = read_file('memcached.spec.in');
38 $spec =~ s/\@VERSION\@/$VERSION/gm;
39 $spec =~ s/\@FULLVERSION\@/$FULLVERSION/gm;
40 $spec =~ s/\@RELEASE\@/$RELEASE/gm;
41
42 write_file('memcached.spec', $spec);
43
44 sub write_file {
45 my $file = shift;
46 my $data = shift;
47 open(my $fh, "> $file") or die "Can't open $file: $!";
48 print $fh $data;
49 close($fh);
50 }
51
52 sub read_file {
53 my $file = shift;
54 local $/ = undef;
55 open(my $fh, "< $file") or die "Can't open $file: $!";
56 my $data = <$fh>;
57 close($fh);
58 return $data;
59 }