diff --git a/packages/chck_modules_version.sh b/packages/chck_modules_version.sh index 7ab6e6eebd84c7248b0936ea818ec7d8133bd443..07a4ea28a7620218b43407fc5ab7248918bb72d1 100755 --- a/packages/chck_modules_version.sh +++ b/packages/chck_modules_version.sh @@ -1,11 +1,18 @@ #!/bin/bash # -# Script obtain Perl package version +# The script automatically obtain Perl modules and their local version +# in set directory (recursively) # -#modules=(LWP::Protocol::https) -modules=(SOAP::Lite SOAP::Transport::HTTP DBI DBD::mysql Format::Human::Bytes Sys::Syslog File::Basename Net::CIDR::Lite DateTime Getopt::Std Switch IO::Socket::SSL MIME::Base64 Crypt::X509 Carp) -for module in ${modules[@]} +if [[ -z $1 || ! -d $1 ]]; then + echo "Usage: ${0##*/} <directory>" + exit 1 +fi + +modules_file="/tmp/warden-server-modules.txt" +sed '/^use [A-Z]/!d; /Warden/d' `find $1 -type f` 2>/dev/null | cut -f 2 -d " " | sed 's/;//' | sort -u > $modules_file + +for module in $(<$modules_file); do perl -e "eval { require $module; }; if (\$@) { print \"$module: version not found\n\"; } else { print \"$module >= \$$module::VERSION\n\"}" done