Summen und Saldenliste - Header für PDF Export.
[kivitendo-erp.git] / scripts / find-use.pl
index 4fcb030..f65143e 100755 (executable)
@@ -30,7 +30,11 @@ my (%uselines, %modules, %supplied, %requires);
     'Template::Iterator'                 => 1,
     'Template::Plugin'                   => 1,
     'Template::Plugin::Filter'           => 1,
+    'Template::Plugin::HTML'             => 1,
   },
+  'Devel::REPL' => {
+    'namespace::clean'                   => 1,
+  }
 );
 
 find(sub {
@@ -79,10 +83,14 @@ for my $useline (keys %uselines) {
   next if $useline =~ /^most and offer that in a small/; # YAML
 
   my $version = Module::CoreList->first_release($module);
-  $modules{$module} = $supplied{$module}     ? 'included'
-                    : $version               ? sprintf '%2.6f', $version
-                    : is_documented($module) ? 'required'
-                    : '!missing';
+  $modules{$module} = { status => $supplied{$module}     ? 'included'
+                                : $version               ? sprintf '%2.6f', $version
+                                : is_required($module)   ? 'required'
+                                : is_optional($module)   ? 'optional'
+                                : is_developer($module)  ? 'developer'
+                                : '!missing',
+                        files  => $uselines{$useline},
+                      };
 
   # build requirement tree
   for my $file (@{ $uselines{$useline} }) {
@@ -99,19 +107,21 @@ while ($changed) {
   $changed = 0;
   for my $src_module (keys %requires) {
     for my $dst_module (keys %{ $requires{$src_module} }) {
-      if (   $modules{$src_module} =~ /^required/
-          && $modules{$dst_module} eq '!missing') {
-        $modules{$dst_module} = "required"; # . ", via $src_module";
+      if (   $modules{$src_module}
+          && $modules{$dst_module}
+          && $modules{$src_module}->{status} =~ /^(required|devel|optional)/
+          && $modules{$dst_module}->{status} eq '!missing') {
+        $modules{$dst_module}->{status} = "required"; # . ", via $src_module";
         $changed = 1;
       }
     }
   }
 }
 
-print sprintf "%8s : %s", color_text($modules{$_}), $_
+print sprintf "%8s : %s (%s)", color_text($modules{$_}->{status}), $_, join(' ', @{ $modules{$_}->{files} || [] })
   for sort {
-       $modules{$a} cmp $modules{$b}
-    ||          $a  cmp $b
+       $modules{$a}->{status} cmp $modules{$b}->{status}
+    ||                    $a  cmp $b
   } keys %modules;
 
 sub modulize {
@@ -124,11 +134,21 @@ sub modulize {
   }
 }
 
-sub is_documented {
+sub is_required {
   my ($module) = @_;
   grep { $_->{name} eq $module } @SL::InstallationCheck::required_modules;
 }
 
+sub is_optional {
+  my ($module) = @_;
+  grep { $_->{name} eq $module } @SL::InstallationCheck::optional_modules;
+}
+
+sub is_developer {
+  my ($module) = @_;
+  grep { $_->{name} eq $module } @SL::InstallationCheck::developer_modules;
+}
+
 sub color_text {
   my ($text) = @_;
   return color(get_color($text)) . $text . color('reset');