class MvnPluginConfig::App

Constants

MAVEN_REPOSITORY

Private Instance Methods

collect_mojos_info(content) click to toggle source
# File lib/mvn_plugin_config/app.rb, line 97
def collect_mojos_info content
  mojos = []
 
  doc = Nokogiri::XML(content)
   
   doc.xpath('//mojos/mojo').each do |node|
     goal = node.xpath('goal')
     description = node.xpath('description')
     
     parameters = collect_parameters(node.xpath('parameters'))
     configuration = node.xpath('configuration')
     
     mojos << MojoInfo.new(goal, description, parameters, configuration)
   end
  
  mojos
end
collect_parameters(node) click to toggle source
# File lib/mvn_plugin_config/app.rb, line 115
def collect_parameters(node)
  parameters = []
  
  node.children.each do |param_node|
    if param_node.name == 'parameter'
      parameter = {:name => param_node.xpath('name'), :type => param_node.xpath('type'),
                   :required => param_node.xpath('required'), :editable => param_node.xpath('editable'),
                   :description => param_node.xpath('description')}
      parameters << parameter
    end
  end
  
  parameters
end
collect_plugins_info() click to toggle source
# File lib/mvn_plugin_config/app.rb, line 72
def collect_plugins_info
  plugins = []
 
  scanner = DirectoryScanner.new
 
  scanner.on_dir do |file, path|
    if file =~ /-plugin$/
      directories = scanner.directories_in_parent(path)
      
      directories.each do |version|
        group_id = path[MAVEN_REPOSITORY.length+1..path.length-file.length-2].gsub('/', '.')
        artifact_id = file.gsub('/', '.')
        
        jar_file_name = jar_file_name(group_id, artifact_id, version)
            
        plugins << PluginInfo.new(group_id, artifact_id, version) if File.exist?(jar_file_name)         
      end
    end 
  end
  
  scanner.scan_subtree(MAVEN_REPOSITORY)
  
  plugins
end
jar_file_name(group_id, artifact_id, version) click to toggle source
# File lib/mvn_plugin_config/app.rb, line 49
def jar_file_name group_id, artifact_id, version
  "#{MAVEN_REPOSITORY}/#{group_id.gsub('.', '/')}/#{artifact_id}/#{version}/#{artifact_id}-#{version}.jar"  
end
plugin_file_content(group_id, artifact_id, version) click to toggle source
# File lib/mvn_plugin_config/app.rb, line 53
def plugin_file_content group_id, artifact_id, version
  plugin_file_content = nil
      
  jar_file_name = jar_file_name(group_id, artifact_id, version)
  
  Zip::ZipInputStream.open(jar_file_name) do |zis|
    done = false
    while (not done) do
      entry = zis.get_next_entry
      if entry.name == "META-INF/maven/plugin.xml"
        plugin_file_content = zis.read
        done = true
      end
    end
  end
  
  plugin_file_content    
end