Hello World

File download of Package build

#!/usr/bin/perl -w

################################################################
#
# Copyright (c) 1995-2014 SUSE Linux Products GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see the file COPYING); if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
################################################################

BEGIN {
  unshift @INC, ($::ENV{'BUILD_DIR'} || '/usr/lib/build');
}

use URI;

use Build::Download;

use strict;

die "USAGE: $0 DIR URLS..." unless $#ARGV >= 1;

my $dir = shift @ARGV;

my $ua = Build::Download::create_ua();

for my $url (@ARGV) {
  if ($url =~ m#^zypp://#) {
    die("do not know how to download $url\n") unless $url =~ m#^zypp://([^/]+)/((?:.*/)?([^/]+)\.rpm)$#;
    my ($repo, $path, $pkg) = ($1, $2, $3);
    my $dest = "$dir/$pkg.rpm";
    system('/usr/bin/zypper', '--no-refresh', '-q', '--pkg-cache-dir', $dir,
           'download', '-r', $repo, $pkg)
	&& die("zypper download $pkg failed\n");
    rename("$dir/$repo/$path", $dest) || die("rename $dir/$repo/$path $dest: $!\n");
    next;
  }
  $url = URI->new($url);
  my $dest = $url->path;
  $dest =~ s/.*\///;
  unlink("$dir/$dest");	# just in case
  Build::Download::download($url, "$dir/.$dest.$$", "$dir/$dest", 'ua' => $ua, 'retry' => 3);
}

# vim:sw=2