From dbd091be3333fd420616cf90267dc75cc5116fd7 Mon Sep 17 00:00:00 2001 From: jpawlowski Date: Tue, 2 Apr 2019 10:54:41 +0000 Subject: [PATCH] Meta.pm: fix license to be an array (comply with CPAN::Meta::Spec) git-svn-id: https://svn.fhem.de/fhem/trunk@19094 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_Installer.pm | 27 +++++++++++---------- fhem/FHEM/Meta.pm | 50 +++++++++++++++++++++++++++++++++++---- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/fhem/FHEM/98_Installer.pm b/fhem/FHEM/98_Installer.pm index f758ff8f9..bf969ed01 100644 --- a/fhem/FHEM/98_Installer.pm +++ b/fhem/FHEM/98_Installer.pm @@ -2242,8 +2242,11 @@ sub CreateMetadataList ($$$) { || !defined( $modMeta->{resources}{repository} ) ) ); next - if ( $mAttr eq 'release_date' - && ( !defined( $modMeta->{x_vcs} ) ) ); + if ( + $mAttr eq 'release_date' + && ( !defined( $modMeta->{x_release_date} ) + && !defined( $modMeta->{x_vcs} ) ) + ); next if ( $mAttr eq 'command_reference' && $modType eq 'package' ); @@ -2269,9 +2272,6 @@ sub CreateMetadataList ($$$) { elsif ( defined( $modMeta->{x_vcs} ) ) { $l .= $modMeta->{x_vcs}[7]; } - else { - $l .= '-'; - } } elsif ( $mAttr eq 'copyright' ) { @@ -3532,11 +3532,13 @@ sub LoadInstallStatusPerl(;$) { if ( exists( $modules{$modName} ) && !exists( $packages{$modName} ) ) { $type = 'module'; } - elsif ( exists( $packages{$modName} ) && !exists( $modules{$modName} ) ) + elsif ( exists( $packages{$modName} ) + && !exists( $modules{$modName} ) ) { $type = 'package'; } - elsif ( exists( $packages{$modName} ) && exists( $modules{$modName} ) ) + elsif (exists( $packages{$modName} ) + && exists( $modules{$modName} ) ) { $type = 'module+package'; } @@ -3580,8 +3582,8 @@ sub LoadInstallStatusPerl(;$) { unless ( grep ( /^$modName$/, @{ - $pkgStatus{Perl}{pkgs}{$pkg}{ $type . 's' } - {$mAttr} + $pkgStatus{Perl}{pkgs}{$pkg} + { $type . 's' }{$mAttr} } ) ); @@ -3718,7 +3720,8 @@ sub LoadInstallStatusPerl(;$) { $pkgStatus{Perl}{pkgs}{$pkg}{status} = 'installed'; my $v = eval "$pkg->VERSION()"; - $pkgStatus{Perl}{installed}{$pkg} = $v ? $v : 0; + $pkgStatus{Perl}{installed}{$pkg} = + $v ? $v : 0; } } @@ -3743,8 +3746,8 @@ sub LoadInstallStatusPerl(;$) { $reqV; $pkgStatus{Perl}{analyzed} = 1 - if ( - $modMeta->{x_prereqs_src} ne 'META.json' + if ( $modMeta->{x_prereqs_src} ne + 'META.json' && !$pkgStatus{Perl}{analyzed} ); } } diff --git a/fhem/FHEM/Meta.pm b/fhem/FHEM/Meta.pm index 6dcc4250a..c0c63b473 100644 --- a/fhem/FHEM/Meta.pm +++ b/fhem/FHEM/Meta.pm @@ -1943,12 +1943,49 @@ m/(^#\s+(?:\d{1,2}\.\d{1,2}\.(?:\d{2}|\d{4})\s+)?[^v\d]*(v?(?:\d{1,3}\.\d{1,3}(? $modMeta->{release_status} = 'stable'; } unless ( defined( $modMeta->{license} ) ) { - $modMeta->{license} = 'unknown'; + $modMeta->{license} = ['unknown']; } unless ( defined( $modMeta->{author} ) ) { $modMeta->{author} = ['unknown <>']; } + # ensure license is an array + if ( defined( $modMeta->{license} ) + && !ref( $modMeta->{license} ) ) + { + $modMeta->{license} = [ $modMeta->{license} ]; + } + + # ensure author is an array + if ( defined( $modMeta->{author} ) + && !ref( $modMeta->{author} ) ) + { + $modMeta->{author} = [ $modMeta->{author} ]; + } + + # ensure x_fhem_maintainer is an array + if ( defined( $modMeta->{x_fhem_maintainer} ) + && !ref( $modMeta->{x_fhem_maintainer} ) ) + { + $modMeta->{x_fhem_maintainer} = [ $modMeta->{x_fhem_maintainer} ]; + } + + # ensure x_fhem_maintainer_github is an array + if ( defined( $modMeta->{x_fhem_maintainer_github} ) + && !ref( $modMeta->{x_fhem_maintainer_github} ) ) + { + $modMeta->{x_fhem_maintainer_github} = + [ $modMeta->{x_fhem_maintainer_github} ]; + } + + # ensure resources/license is an array + if ( defined( $modMeta->{resources} ) + && defined( $modMeta->{resources}{license} ) + && !ref( $modMeta->{resources}{license} ) ) + { + $modMeta->{resources}{license} = [ $modMeta->{resources}{license} ]; + } + # Generate META information for FHEM core modules if ( GetModuleSourceOrigin($modName) eq 'fhem' ) { @@ -1963,9 +2000,14 @@ m/(^#\s+(?:\d{1,2}\.\d{1,2}\.(?:\d{2}|\d{4})\s+)?[^v\d]*(v?(?:\d{1,3}\.\d{1,3}(? } } - if ( !$modMeta->{license} || $modMeta->{license} eq 'unknown' ) { + if ( + !$modMeta->{license} + || ( ref( $modMeta->{license} ) eq 'ARRAY' + && $modMeta->{license}[0] eq 'unknown' ) + ) + { if ( defined( $modMeta->{x_vcs} ) ) { - $modMeta->{license} = 'GPL_2'; + $modMeta->{license}[0] = 'GPL_2'; } } @@ -3089,7 +3131,7 @@ sub __SetXVersion { "abstract": "FHEM Entwickler Paket, um Metadaten Unterstützung zu aktivieren" } }, - "version": "v0.4.0", + "version": "v0.4.1", "release_status": "testing", "author": [ "Julian Pawlowski "