#!/usr/bin/perl # Copyright (C) 2009 Eric L. Wilhelm use warnings; use strict; =head1 NAME pdt-deplist - list dependencies from a scan =head1 Usage pdt-deplist [OPTIONS] SCANFILE '^lib/' =head1 Options =over =item --modules List modules. DEFAULT: true =item --no-modules Disable modules listing. =item -v, --perl-versions List any explicitely required perl versions. =item -h, --help =for help show this help message Show help about options. =back =cut package bin::pdt_deplist; use Getopt::AsDocumented; use Devel::TraceDeps::Scan; use File::Fu; sub main { my (@args) = @_; my $opt = Getopt::AsDocumented->process(\@args) or return; my ($file, $match) = @args or die "need file and match arguments"; $file = File::Fu->file($file); my $scan = Devel::TraceDeps::Scan->load($file->open); my %ver; my %reqs; foreach my $item ($scan->items) { # skip command-line scan item next if($item->file eq '-e'); my $by = File::Fu->file($item->file)->relative; if($match) {$by =~ m/$match/ or next;} if(my $ver = $item->ver) { $ver{$ver} = 1; next; } my $req = $item->req || $item->did; $item->req or die "no req for ", $item->file; $reqs{$item->req} = 1; } print join("\n", sort({$a <=> $b} keys %ver)), "\n" if($opt->perl_versions); print join("\n", sort keys %reqs), "\n" if($opt->modules); } package main; if($0 eq __FILE__) { bin::pdt_deplist::main(@ARGV); } # vi:ts=2:sw=2:et:sta my $package = 'bin::pdt_deplist';