Class: KPM::PluginsDirectory

Inherits:
Object
  • Object
show all
Defined in:
lib/kpm/plugins_directory.rb

Class Method Summary collapse

Class Method Details

.all(latest = false) ⇒ Object



6
7
8
9
10
11
12
13
14
15
# File 'lib/kpm/plugins_directory.rb', line 6

def self.all(latest=false)
  if latest
    # Look at GitHub (source of truth)
    source = URI.parse('https://raw.githubusercontent.com/killbill/killbill-cloud/master/kpm/lib/kpm/plugins_directory.yml').read
    YAML.load(source)
  else
    source = File.join(File.expand_path(File.dirname(__FILE__)), 'plugins_directory.yml')
    YAML.load_file(source)
  end
end

.list_plugins(latest = false, kb_version) ⇒ Object



18
19
20
# File 'lib/kpm/plugins_directory.rb', line 18

def self.list_plugins(latest=false, kb_version)
  all(latest).inject({}) { |out, (key, val)| out[key]=val[:versions][kb_version.to_sym] if val[:versions].key?(kb_version.to_sym) ; out}
end

.lookup(raw_plugin_key, latest = false, raw_kb_version = nil) ⇒ Object

Note: this API is used in Docker images (see kpm_generator.rb, careful when changing it!)



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/kpm/plugins_directory.rb', line 23

def self.lookup(raw_plugin_key, latest=false, raw_kb_version=nil)
  plugin_key = raw_plugin_key.to_s.downcase
  plugin = all(latest)[plugin_key.to_sym]
  return nil if plugin.nil?

  type = plugin[:type]
  is_ruby = type == :ruby

  group_id    = plugin[:group_id] || (is_ruby ? KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_GROUP_ID : KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_GROUP_ID)
  artifact_id = plugin[:artifact_id] || "#{plugin_key}-plugin"
  packaging   = plugin[:packaging] || (is_ruby ? KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_PACKAGING : KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_PACKAGING)
  classifier  = plugin[:classifier] || (is_ruby ? KPM::BaseArtifact::KILLBILL_RUBY_PLUGIN_CLASSIFIER : KPM::BaseArtifact::KILLBILL_JAVA_PLUGIN_CLASSIFIER)

  if raw_kb_version == 'LATEST'
    version = 'LATEST'
  else
    captures = raw_kb_version.nil? ? [] : raw_kb_version.scan(/(\d+\.\d+)(\.\d)?/)
    if captures.empty? || captures.first.nil? || captures.first.first.nil?
      version = 'LATEST'
    else
      kb_version = captures.first.first
      version = (plugin[:versions] || {})[kb_version.to_sym] || 'LATEST'
    end
  end

  [group_id, artifact_id, packaging, classifier, version, type]
end