diff --git a/FHEM/98_Installer.pm b/FHEM/98_Installer.pm
index ffbd8c462..bafc375f5 100644
--- a/FHEM/98_Installer.pm
+++ b/FHEM/98_Installer.pm
@@ -246,12 +246,6 @@ sub Get($$@) {
my $ret = CreateRawMetaJson( $hash, $cmd, $args[0] );
return $ret;
}
- elsif ( lc($cmd) eq 'zzgetmaintainer.json' ) {
- return "usage: $cmd MAINTAINER" if ( @args != 1 );
-
- my $ret = CreateRawMaintainerJson( $hash, $cmd, $args[0] );
- return $ret;
- }
else {
my @fhemModules;
foreach ( sort { "\L$a" cmp "\L$b" } keys %modules ) {
@@ -259,23 +253,10 @@ sub Get($$@) {
push @fhemModules, $_;
}
- my @fhemMaintainers;
- foreach ( keys %FHEM::Meta::maintainerModules ) {
- push @fhemMaintainers, $_;
- }
- foreach ( keys %FHEM::Meta::maintainerPackages ) {
- push @fhemMaintainers, $_;
- }
- foreach ( keys %FHEM::Meta::maintainerFile ) {
- push @fhemMaintainers, $_;
- }
-
my $list =
'search'
. ' showModuleInfo:FHEM,'
. join( ',', @fhemModules )
- . ' zzGetMaintainer.json:'
- . join( ',', sort { "\L$a" cmp "\L$b" } __aUniq(@fhemMaintainers) )
. ' zzGetMETA.json:FHEM,'
. join( ',', @fhemModules );
@@ -949,8 +930,8 @@ sub CreateSearchList ($$$) {
# search for matching device
my $foundDevices = 0;
- my $linecount = 1;
- foreach my $device ( sort keys %defs ) {
+ my $linecount = 1;
+ foreach my $device ( sort { "\L$a" cmp "\L$b" } keys %defs ) {
next
unless ( defined( $defs{$device}{TYPE} )
&& defined( $modules{ $defs{$device}{TYPE} } ) );
@@ -1010,8 +991,8 @@ sub CreateSearchList ($$$) {
# search for matching module
my $foundModules = 0;
- $linecount = 1;
- foreach my $module ( sort keys %modules ) {
+ $linecount = 1;
+ foreach my $module ( sort { "\L$a" cmp "\L$b" } keys %modules ) {
if ( $module =~ m/^.*$search.*$/i ) {
unless ($foundModules) {
push @ret, '
Modules
' . $lb;
@@ -1064,7 +1045,9 @@ sub CreateSearchList ($$$) {
# search for matching keyword
my $foundKeywords = 0;
$linecount = 1;
- foreach my $keyword (%FHEM::Meta::keywords) {
+ foreach
+ my $keyword ( sort { "\L$a" cmp "\L$b" } keys %FHEM::Meta::keywords )
+ {
if ( $keyword =~ m/^.*$search.*$/i ) {
push @ret, 'Keywords
' unless ($foundKeywords);
$found++;
@@ -1097,8 +1080,8 @@ sub CreateSearchList ($$$) {
my $l = $linecount % 2 == 0 ? $rowOpenEven : $rowOpenOdd;
my $type = $mAttr;
- $type = 'Module' if ( $mAttr eq 'modules' );
- $type = 'Perl Package' if ( $mAttr eq 'packages' );
+ $type = 'Module' if ( $mAttr eq 'modules' );
+ $type = 'Package' if ( $mAttr eq 'packages' );
FHEM::Meta::Load($item);
@@ -1138,6 +1121,107 @@ sub CreateSearchList ($$$) {
}
}
+ # search for matching maintainer
+ my $foundMaintainers = 0;
+ my %maintainerInfo;
+ $linecount = 1;
+ foreach my $maintainer (
+ sort { "\L$a" cmp "\L$b" }
+ keys %FHEM::Meta::maintainerModules
+ )
+ {
+ if ( $maintainer =~ m/^.*$search.*$/i ) {
+ $maintainerInfo{$maintainer}{modules} =
+ $FHEM::Meta::maintainerModules{$maintainer};
+ }
+ }
+ foreach my $maintainer (
+ sort { "\L$a" cmp "\L$b" }
+ keys %FHEM::Meta::maintainerPackages
+ )
+ {
+ if ( $maintainer =~ m/^.*$search.*$/i ) {
+ $maintainerInfo{$maintainer}{packages} =
+ $FHEM::Meta::maintainerPackages{$maintainer};
+ }
+ }
+ foreach my $maintainer ( sort { "\L$a" cmp "\L$b" } keys %maintainerInfo ) {
+ next
+ unless ( defined( $maintainerInfo{$maintainer}{modules} )
+ || defined( $maintainerInfo{$maintainer}{packages} ) );
+
+ unless ($foundMaintainers) {
+ push @ret, 'Authors & Maintainers
' . $lb;
+ push @ret, $tableOpen;
+ push @ret,
+ $colOpenMinWidth . $txtOpen . 'Author' . $txtClose . $colClose;
+ push @ret, $colOpen . $txtOpen . 'Modules' . $txtClose . $colClose;
+ push @ret, $colOpen . $txtOpen . 'Packages' . $txtClose . $colClose;
+ }
+ $found++;
+ $foundMaintainers++;
+
+ my $l = $linecount % 2 == 0 ? $rowOpenEven : $rowOpenOdd;
+
+ my $modules = '';
+ my $packages = '';
+
+ my $counter = 0;
+ foreach my $module ( sort { "\L$a" cmp "\L$b" }
+ @{ $maintainerInfo{$maintainer}{modules} } )
+ {
+ $modules .= $lb if ($counter);
+ $counter++;
+
+ if ($html) {
+ $modules .=
+ ''
+ . $module . '';
+ }
+ else {
+ $modules .= $module;
+ }
+ }
+ $counter = 0;
+ foreach my $package ( sort { "\L$a" cmp "\L$b" }
+ @{ $maintainerInfo{$maintainer}{packages} } )
+ {
+ $packages .= $lb if ($counter);
+ $counter++;
+
+ # if ($html) {
+ # $packages .=
+ # ''
+ # . $package . '';
+ # }
+ # else {
+ $packages .= $package;
+ # }
+ }
+
+ $l .= $colOpenMinWidth . $maintainer . $colClose;
+ $l .= $colOpen . $modules . $colClose;
+ $l .= $colOpen . $packages . $colClose;
+
+ $l .= $rowClose;
+
+ push @ret, $l;
+ $linecount++;
+ }
+ push @ret, $tableClose if ($foundMaintainers);
+
return $header . join( "\n", @ret ) . $footer;
}
@@ -1369,7 +1453,7 @@ sub CreateMetadataList ($$$) {
$copyWeb = $modMeta->{resources}{x_copyright}{web};
}
- if ( $html && $copyEmail ) {
+ if ( $html && $copyWeb ) {
$copyNameContact =
''
- . $authorName
- . $authorEditorOnly . ''
- if ( $html && $authorEmail );
+ my $authorNameEmail = $authorName;
# add alias name if different
if ( defined( $modMeta->{x_fhem_maintainer} )
@@ -1811,15 +1889,39 @@ m/^([^<>\n\r]+?)(?:\s+(\(last release only\)))?(?:\s+(?:<(.*)>))?$/
&& @{ $modMeta->{x_fhem_maintainer} } > 0
&& $modMeta->{x_fhem_maintainer}[$counter] ne '' )
{
- $authorNameEmail = (
- $authorNameEmail
- ? $authorNameEmail
- : $authorName
- )
- . ', alias '
- . $modMeta->{x_fhem_maintainer}[$counter]
- if ( $modMeta->{x_fhem_maintainer}[$counter] ne
- $authorName );
+
+ my $alias = $modMeta->{x_fhem_maintainer}[$counter];
+
+ if ( $alias eq $authorName ) {
+ $authorNameEmail =
+ ''
+ . $authorName . ''
+ if ($html);
+ }
+ else {
+ if ($html) {
+ $authorNameEmail =
+ $authorName
+ . ', alias '
+ . $alias . '';
+ }
+ else {
+ $authorNameEmail =
+ $authorName . ', alias ' . $alias;
+ }
+ }
}
$l .= $lb if ($counter);
@@ -2285,33 +2387,6 @@ sub CreateRawMetaJson ($$$) {
return $j->encode( $modules{$modName}{META} );
}
-sub CreateRawMaintainerJson ($$$) {
- my ( $hash, $getCmd, $maintainer ) = @_;
- my %ret = ();
-
- $ret{fhem_modules} = $FHEM::Meta::maintainerModules{$maintainer}
- if ( defined( $FHEM::Meta::maintainerModules{$maintainer} ) );
-
- $ret{fhem_packages} = $FHEM::Meta::maintainerPackages{$maintainer}
- if ( defined( $FHEM::Meta::maintainerPackages{$maintainer} ) );
-
- $ret{fhem_files} = $FHEM::Meta::maintainerFile{$maintainer}
- if ( defined( $FHEM::Meta::maintainerFile{$maintainer} ) );
-
- if ( scalar keys %ret > 0 ) {
- $ret{fhem_maintainer} = $maintainer;
- }
- else {
- return '{}';
- }
-
- my $j = JSON->new;
- $j->allow_nonref;
- $j->canonical;
- $j->pretty;
- return $j->encode( \%ret );
-}
-
# Checks whether a perl package is installed in the system
sub __IsInstalledPerl($) {
return 0 unless ( __PACKAGE__ eq caller(0) );