class PuppetModule::Pkg::Tasks::Modulefile

Attributes

metadata[R]

Public Class Methods

new(str) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 13
def initialize(str)
  @metadata = OpenStruct.new
  @metadata.dependencies = []
  binding.eval str
  validate_required_fields
end
parse(file) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 7
def self.parse(file)
  self.new(File.read(file)).metadata
end

Public Instance Methods

method_missing(*args) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 20
def method_missing(*args)
  # TODO: Maybe display an info message about the
  # unrecognized/unsupported field? (it might be a typo, so the user
  # might be happy to know what have been ignored)
end

Private Instance Methods

author(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 40
def author(s)
  @metadata.author_full = s
end
dependency(mod, ver) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 60
def dependency(mod, ver)
  a, n = mod.split('/')
  @metadata.dependencies << {
    :name => n,
    :author => a,
    :versions => dependency_versions_for(ver),
  }
end
dependency_versions_for(versions_str) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 69
def dependency_versions_for(versions_str)
  versions = []
  versions_str.split(/(>=|<=|==|=|<|>)\s*/)\
    .select { |s| !s.empty? }\
    .each_slice(2) { |v|
      versions << v.map { |s| s.strip }.join(" ")
    }

  versions
end
description(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 52
def description(s)
  @metadata.description = s
end
license(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 44
def license(s)
  @metadata.license = s
end
name(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 28
def name(s)
  @metadata.author, @metadata.name = s.split %r{[-/]}
end
project_page(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 56
def project_page(s)
  @metadata.project_page = s
end
source(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 36
def source(s)
  @metadata.source = s
end
summary(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 48
def summary(s)
  @metadata.summary = s
end
validate_required_fields() click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 80
def validate_required_fields
  raise ArgumentError, 'Modulefile doesn`t contain name or author' unless
    @metadata.name and @metadata.author

  raise ArgumentError, 'Modulefile doesn`t contain version information' unless
    @metadata.version
end
version(s) click to toggle source
# File lib/puppet_module/pkg/tasks/modulefile.rb, line 32
def version(s)
  @metadata.version = s
end