#!/usr/bin/perl -w

use strict;

my $name;
my $version;
my $repo;
my @patches=();

while(<>) {
  if(/^Package:\s*(\S+)\s*$/) {
    $name=$1;
  } elsif(/^Version:\s*([\d\w\.]+)\s*$/) {
    $version=$1;
  } elsif(/^Repository:\s*(\S+)\s*$/) {
    $repo=$1;
  } elsif(/^(\S*)/) {
    push @patches,$1;
  }
}

die "Specify package name" unless defined $name;
die "Specify version" unless defined $version;
die "Specify repository" unless defined $repo;

my $tmpdir=`mktemp -d upstream.XXXXXX` 
  or die "Couldn't make temporary directory";

chomp $tmpdir;
chdir $tmpdir or die "Couldn't change dir to $tmpdir";
system('darcs','init');

foreach my $patch (@patches) {
  system('darcs','pull','--matches',"hash $patch",'-a',$repo);
}

my @filelist=split('\n',`find . -path './_darcs' -prune -o -type f -print`)
  or die "Couldn't make file list";
system('tar','-czvf',"../${name}_$version.orig.tar.gz",@filelist);

chdir '..';
system('rm','-rf',$tmpdir);
