summaryrefslogtreecommitdiff
path: root/scripts/cargo.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cargo.pl')
-rwxr-xr-xscripts/cargo.pl43
1 files changed, 43 insertions, 0 deletions
diff --git a/scripts/cargo.pl b/scripts/cargo.pl
new file mode 100755
index 000000000..93e365620
--- /dev/null
+++ b/scripts/cargo.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+use feature qw(:5.34);
+
+open my $cargo, '<', $ARGV[0] or die "can't open $ARGV[0]: $!\n";
+my $data = '';
+# This block reads in the entire file.
+{
+ local $/;
+ $data = <$cargo>;
+}
+
+my @lines = split /(\r?\n){2,}/, $data;
+my @cargo;
+
+# Parse the file; we just want the name and version.
+foreach my $line (@lines) {
+ $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 (sort @cargo) {
+ say $file $pkg;
+}