require'logger'require'yaml'moduleKPMclassInstallerLATEST_VERSION='LATEST'defself.from_file(config_path,logger=nil)Installer.new(YAML::load_file(config_path),logger)enddefinitialize(raw_config,logger=nil)raise(ArgumentError,'killbill or kaui section must be specified')ifraw_config['killbill'].nil?andraw_config['kaui'].nil?@config=raw_config['killbill']@kaui_config=raw_config['kaui']iflogger.nil?@logger=Logger.new(STDOUT)@logger.level=Logger::INFOelse@logger=loggerend@nexus_config=@config['nexus']@nexus_ssl_verify=!@nexus_config.nil??@nexus_config['ssl_verify']:trueenddefinstallunless@config.nil?install_killbill_serverinstall_pluginsinstall_default_bundlesendunless@kaui_config.nil?install_kauiendendprivatedefinstall_killbill_servergroup_id=@config['group_id']||KPM::BaseArtifact::KILLBILL_GROUP_IDartifact_id=@config['artifact_id']||KPM::BaseArtifact::KILLBILL_ARTIFACT_IDpackaging=@config['packaging']||KPM::BaseArtifact::KILLBILL_PACKAGINGclassifier=@config['classifier']||KPM::BaseArtifact::KILLBILL_CLASSIFIERversion=@config['version']||LATEST_VERSIONwebapp_path=@config['webapp_path']||KPM::rootKPM::KillbillServerArtifact.pull(@logger,group_id,artifact_id,packaging,classifier,version,webapp_path,@nexus_config,@nexus_ssl_verify)enddefinstall_pluginsbundles_dir=@config['plugins_dir']install_java_plugins(bundles_dir)install_ruby_plugins(bundles_dir)enddefinstall_java_plugins(bundles_dir)returnif@config['plugins'].nil?or@config['plugins']['java'].nil?infos=[]@config['plugins']['java'].eachdo|plugin|group_id=plugin['group_id']||KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_GROUP_IDartifact_id=plugin['artifact_id']||plugin['name']packaging=plugin['packaging']||KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_PACKAGINGclassifier=plugin['classifier']||KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_CLASSIFIERversion=plugin['version']||LATEST_VERSIONdestination="#{bundles_dir}/plugins/java/#{artifact_id}/#{version}"infos<<KPM::KillbillPluginArtifact.pull(@logger,group_id,artifact_id,packaging,classifier,version,destination,@nexus_config,@nexus_ssl_verify)endinfosenddefinstall_ruby_plugins(bundles_dir)returnif@config['plugins'].nil?or@config['plugins']['ruby'].nil?infos=[]@config['plugins']['ruby'].eachdo|plugin|group_id=plugin['group_id']||KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_GROUP_IDartifact_id=plugin['artifact_id']||plugin['name']packaging=plugin['packaging']||KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_PACKAGINGclassifier=plugin['classifier']||KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_CLASSIFIERversion=plugin['version']||LATEST_VERSIONdestination="#{bundles_dir}/plugins/ruby"infos<<KPM::KillbillPluginArtifact.pull(@logger,group_id,artifact_id,packaging,classifier,version,destination,@nexus_config,@nexus_ssl_verify)endinfosenddefinstall_default_bundlesreturnif@config['default_bundles']==falsegroup_id='org.kill-bill.billing'artifact_id='killbill-platform-osgi-bundles-defaultbundles'packaging='tar.gz'classifier=nilversion=@config['version']||LATEST_VERSIONdestination="#{@config['plugins_dir']}/platform"info=KPM::BaseArtifact.pull(@logger,group_id,artifact_id,packaging,classifier,version,destination,@nexus_config,@nexus_ssl_verify)# The special JRuby bundle needs to be called jruby.jar# TODO .first - code smellFile.renameDir.glob("#{destination}/killbill-platform-osgi-bundles-jruby-*.jar").first,"#{destination}/jruby.jar"infoenddefinstall_kauigroup_id=@kaui_config['group_id']||KPM::BaseArtifact::KAUI_GROUP_IDartifact_id=@kaui_config['artifact_id']||KPM::BaseArtifact::KAUI_ARTIFACT_IDpackaging=@kaui_config['packaging']||KPM::BaseArtifact::KAUI_PACKAGINGclassifier=@kaui_config['classifier']||KPM::BaseArtifact::KAUI_CLASSIFIERversion=@kaui_config['version']||LATEST_VERSIONwebapp_path=@kaui_config['webapp_path']||KPM::rootKPM::KauiArtifact.pull(@logger,group_id,artifact_id,packaging,classifier,version,webapp_path,@nexus_config,@nexus_ssl_verify)endendend