nixpkgs-mirror-tarballs/mirror.pl

35 lines
1.3 KiB
Perl
Executable File

#!/usr/bin/env nix-shell
#! nix-shell -i perl -p perlPackages.JSON perl
use strict;
use warnings;
use JSON;
use Data::Dumper;
my $json = do { local $/; <> };
my @text = decode_json($json);
my @data = @{$text[0]};
my $return;
foreach my $val (@data) {
if ( ! -f "distfiles/$val->{name}" ) {
#print "Fetching $val->{name} from $val->{url} with patch=$val->{isPatch} $val->{type} $val->{hash}\n";
#print Dumper $val;
if (defined $val->{isPatch} && $val->{isPatch} eq 1) {
$return = `nix-build -o "distfiles/$val->{name}" '<nixpkgs>' -A fetchpatch --argstr url "$val->{url}" --argstr name "$val->{name}" --argstr sha256 "$val->{hash}"`;
print $return;
} else {
# we known the checksum we expect
if (defined $val->{type}) {
$return = `nix-build -o "distfiles/$val->{name}" '<nixpkgs>' -A fetchurl --argstr url "$val->{url}" --argstr "$val->{type}" "$val->{hash}"`;
print $return;
} else {
$return = `nix-build -o "distfiles/$val->{name}" '<nixpkgs>' -A fetchurl --argstr url "$val->{url}" --argstr sha256 "$val->{hash}"`;
print $return;
}
}
} else {
print "Skipping $val->{name}, already in store\n";
}
}