summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/cargo.pl31
1 files changed, 21 insertions, 10 deletions
diff --git a/scripts/cargo.pl b/scripts/cargo.pl
index 54d716e47..93e365620 100755
--- a/scripts/cargo.pl
+++ b/scripts/cargo.pl
@@ -2,7 +2,7 @@
use strict;
use warnings;
-use feature qw(:5.22);
+use feature qw(:5.34);
open my $cargo, '<', $ARGV[0] or die "can't open $ARGV[0]: $!\n";
my $data = '';
@@ -12,21 +12,32 @@ my $data = '';
$data = <$cargo>;
}
-my $name = '';
-my %cargo = ();
-my @lines = split /\r?\n/, $data;
+my @lines = split /(\r?\n){2,}/, $data;
+my @cargo;
# Parse the file; we just want the name and version.
foreach my $line (@lines) {
- if ($line =~ /^name = "(.*?)"$/) {
- $name = $1;
- } elsif ($line =~ /^version = "(.*?)"$/) {
- $cargo{$name} = $1;
+ $line =~ /^name = "(.*?)"$/m;
+ my $name = $1;
+ next unless defined($name);
+
+ $line =~ /^version = "(.*?)"$/m;
+ my $version = $1;
+ next unless defined($version);
+
+ next unless $line =~ /^source /m;
+ $line =~ /^source = "(.*?)"$/m;
+ my $source = $1;
+ next unless defined($source);
+
+ if ($source ne 'registry+https://github.com/rust-lang/crates.io-index') {
+ warn "Warning: $name lacks a supported registry.\n";
}
+ push @cargo, "$name $version";
}
open my $file, '>', 'crates.txt' or die "can't open output file: $!\n";
# Print the data we pulled out above to a file.
-foreach my $pkg (keys %cargo) {
- say $file $pkg . ' ' . $cargo{$pkg};
+foreach my $pkg (sort @cargo) {
+ say $file $pkg;
}