Class: PDK::Module::Metadata

Inherits:
Object
  • Object
show all
Defined in:
lib/pdk/module/metadata.rb

Constant Summary collapse

DEFAULTS =
{
  'name'          => nil,
  'version'       => nil,
  'author'        => nil,
  'summary'       => '',
  'license'       => 'Apache-2.0',
  'source'        => '',
  'project_page'  => nil,
  'issues_url'    => nil,
  'dependencies'  => Set.new.freeze,
  'data_provider' => nil,
  'operatingsystem_support' => [
    {
      'operatingsystem' => 'Debian',
      'operatingsystemrelease' => ['8'],
    },
    {
      'operatingsystem' => 'RedHat',
      'operatingsystemrelease' => ['7.0'],
    },
    {
      'operatingsystem' => 'Ubuntu',
      'operatingsystemrelease' => ['16.04'],
    },
    {
      'operatingsystem' => 'windows',
      'operatingsystemrelease' => ['2012 R2'],
    },
  ],
  'requirements' => Set.new.freeze,
}.freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ Metadata

Returns a new instance of Metadata.



40
41
42
43
# File 'lib/pdk/module/metadata.rb', line 40

def initialize(params = {})
  @data = DEFAULTS.dup
  update!(params) if params
end

Instance Attribute Details

#dataObject

Returns the value of attribute data.



6
7
8
# File 'lib/pdk/module/metadata.rb', line 6

def data
  @data
end

Class Method Details

.from_file(metadata_json_path) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/pdk/module/metadata.rb', line 45

def self.from_file()
  unless File.file?()
    raise ArgumentError, _("'%{file}' does not exist or is not a file") % { file:  }
  end

  unless File.readable?()
    raise ArgumentError, _("Unable to open '%{file}' for reading") % { file:  }
  end

  begin
    data = JSON.parse(File.read())
  rescue JSON::JSONError => e
    raise ArgumentError, _('Invalid JSON in metadata.json: %{msg}') % { msg: e.message }
  end

  new(data)
end

Instance Method Details

#to_jsonObject



70
71
72
# File 'lib/pdk/module/metadata.rb', line 70

def to_json
  JSON.pretty_generate(@data.dup.delete_if { |_key, value| value.nil? })
end

#update!(data) ⇒ Object



63
64
65
66
67
68
# File 'lib/pdk/module/metadata.rb', line 63

def update!(data)
  # TODO: validate all data
  process_name(data) if data['name']
  @data.merge!(data)
  self
end