add missing changelog entry
[aurutils.git] / lib / aur-sync--filter
blobf2fd4e863cdc6602ba41c4cf777a0d3f6e4065ac
1 #!/usr/bin/env perl
2 use strict;
3 use warnings;
4 use v5.20;
6 use AUR::Depends qw(prune);
7 use AUR::Json qw(parse_json_aur);
8 my $argv0 = "sync--filter";
10 # TODO: depends: adjust pkgname for lib32
12 unless(caller) {
13 use Getopt::Long;
14 my $opt_ignore = [];
15 my $opt_json;
16 my $opt_ignore_file;
18 GetOptions(
19 'i|ignore=s' => $opt_ignore,
20 'f|ignore-file=s' => \$opt_ignore_file,
21 'p|path=s' => \$opt_json
22 ) or exit(1);
24 if (not length $opt_json) {
25 say STDERR "$argv0: json path required";
26 exit(1);
28 @{$opt_ignore} = map { split(',', $_) } @{$opt_ignore};
30 # Concatenate ignore targets from file
31 if (length($opt_ignore_file)) {
32 open(my $fh_ignore, '<', $opt_ignore_file) or die $!;
34 while(<$fh_ignore>) {
35 chomp $_;
36 push(@{$opt_ignore}, $_) if length($_);
38 close($fh_ignore);
41 # Read aur-depends output
42 my @results;
43 open(my $fh, '<', $opt_json) or die $!;
45 while(<$fh>) {
46 chomp $_;
47 push(@results, parse_json_aur($_));
49 close($fh);
51 # Extract DAG
52 my (%dag, %map);
53 for my $pkg (@results) {
54 $dag{$pkg->{'Name'}} = $pkg->{'RequiredBy'};
55 $map{$pkg->{'Name'}} = $pkg->{'PackageBase'};
58 # Prune ignored targets
59 my $removals = prune(\%dag, $opt_ignore);
61 if (defined $ENV{'AUR_DEBUG'}) {
62 say STDERR "$argv0: targets removed: " . join(" ", @{$removals});
65 # Print remaining dependency pairs as pkgbase
66 for my $dep (keys %dag) { # == keys %map
67 for my $name (keys %{$dag{$dep}}) {
68 say $map{$dep} . "\t" . $map{$name} if defined $map{$name};