#!/usr/bin/env perl

$version = $ARGV[0];

if($version eq "") {
    print "Enter version number!\n";
    exit;
}

if(!-f "ares.h") {
    print "run this script in the ares source root dir\n";
    exit;
}

my ($major, $minor, $patch)=split(/\./, $version);

$major += 0;
$minor += 0;
$patch += 0;

open(VER, "<ares_version.h") ||
    die "can't open ares_version.h";
open(NEWV, ">ares_version.h.dist");
while(<VER>) {
    $_ =~ s/^\#define ARES_VERSION_MAJOR .*/\#define ARES_VERSION_MAJOR $major/;
    $_ =~ s/^\#define ARES_VERSION_MINOR .*/\#define ARES_VERSION_MINOR $minor/;
    $_ =~ s/^\#define ARES_VERSION_PATCH .*/\#define ARES_VERSION_PATCH $patch/;
    $_ =~ s/^\#define ARES_VERSION_STR .*/\#define ARES_VERSION_STR \"$version\"/;

    print NEWV $_;
}
close(VER);
close(NEWV);
print "ares_version.h.dist created\n";

if(!-f "configure") {
    print "running buildconf\n";
    `./buildconf`;
}
print "adding $version in the configure.ac file\n";
`sed -e 's/AC_INIT.*/AC_INIT([c-ares], [$version],/' < configure.ac > configure.ac.dist`;

# now make a new configure script with this
print "makes a new configure script\n";
`autoconf configure.ac.dist >configure`;

# now run this new configure to get a fine makefile
print "running configure\n";
`./configure`;

# now make the actual tarball
print "running make dist\n";
`make dist VERSION=$version`;

print "removing temporary configure.ac file\n";
`rm configure.ac.dist`;
print "removing temporary ares_version.h file\n";
`rm ares_version.h.dist`;

print "NOTE: now cvs tag this release!\n";
