#!/usr/bin/perl -l
+
+BEGIN {
+ use FindBin;
+
+ unshift(@INC, $FindBin::Bin . '/../modules/override'); # Use our own versions of various modules (e.g. YAML).
+ push (@INC, $FindBin::Bin . '/..'); # '.' will be removed from @INC soon.
+}
+
use strict;
#use warnings; # corelist and find throw tons of warnings
use File::Find;
use Module::CoreList;
use SL::InstallationCheck;
use Term::ANSIColor;
+use Getopt::Long;
my (%uselines, %modules, %supplied, %requires);
'Rose::DB::Object::ConventionManager' => 1,
'Rose::DB::Object::Manager' => 1,
'Rose::DB::Object::Metadata' => 1,
+ 'Rose::DB::Object::Helpers' => 1,
+ 'Rose::DB::Object::Util' => 1,
+ 'Rose::DB::Object::Constants' => 1,
},
'Rose::Object' => {
'Rose::Object::MakeMethods::Generic' => 1,
'Template::Plugin' => 1,
'Template::Plugin::Filter' => 1,
'Template::Plugin::HTML' => 1,
+ 'Template::Stash' => 1,
},
'Devel::REPL' => {
'namespace::clean' => 1,
- }
+ },
+ 'Email::MIME' => {
+ 'Email::MIME::Creator' => 1,
+ },
+ 'Test::Harness' => {
+ 'TAP::Parser' => 1,
+ 'TAP::Parser::Aggregator' => 1,
+ },
+ 'Archive::Zip' => {
+ 'Archive::Zip::Member' => 1,
+ },
+ 'HTML::Parser' => {
+ 'HTML::Entities' => 1,
+ },
+ 'URI' => {
+ 'URI::Escape' => 1,
+ },
+ 'File::MimeInfo' => {
+ 'File::MimeInfo::Magic' => 1,
+ },
);
+GetOptions(
+ 'files-with-match|l' => \ my $l,
+);
+
+chmod($FindBin::Bin . '/..');
+
find(sub {
return unless /(\.p[lm]|console)$/;
- # remember modules shipped with Lx-Office
+ # remember modules shipped with kivitendo
$supplied{modulize($File::Find::name)}++
if $File::Find::dir =~ m#modules/#;
next if /SL::/;
next if /Support::Files/; # our own test support module
next if /use (warnings|strict|vars|lib|constant|utf8)/;
+ next if /^use (with|the)/;
my ($useline) = m/^use\s+(.*?)$/;
}
}
-# build transitive closure for documented dependancies
+# have all documented modules mentioned here
+$modules{$_->{name}} ||= { status => 'required' } for @SL::InstallationCheck::required_modules;
+$modules{$_->{name}} ||= { status => 'optional' } for @SL::InstallationCheck::optional_modules;
+$modules{$_->{name}} ||= { status => 'developer' } for @SL::InstallationCheck::developer_modules;
+
+# build transitive closure for documented dependencies
my $changed = 1;
while ($changed) {
$changed = 0;
}
}
-print sprintf "%8s : %s (%s)", color_text($modules{$_}->{status}), $_, join(' ', @{ $modules{$_}->{files} || [] })
- for sort {
+do {
+ print sprintf "%8s : %s", color_text($modules{$_}->{status}), $_;
+ if ($l) {
+ print " $_" for @{ $modules{$_}->{files} || [] };
+ }
+} for sort {
$modules{$a}->{status} cmp $modules{$b}->{status}
|| $a cmp $b
} keys %modules;
=head1 EXAMPLE
# perl scipts/find-use.pl
- !missing : Perl::Tags
!missing : Template::Constants
!missing : DBI
=item required
This module is documented in C<SL:InstallationCheck> to be necessary, or is a
-dependancy of one of these. Everything alright.
+dependency of one of these. Everything alright.
=item !missing
Distributed under the terms of the GNU General Public License v2.
=cut
-
-