# class Puppet::ModuleTool::ModulefileReader

# Modulefile¶ ↑

This class provides the DSL used for evaluating the module’s ‘Modulefile’. These methods are used to concisely define this module’s attributes, which are later rendered as PSON into a ‘metadata.json’ file.

### Public Class Methods

evaluate(metadata, filename) click to toggle source

Read the `filename` and eval its Ruby code to set values in the Metadata `metadata` instance.

    # File lib/puppet/module_tool/modulefile.rb, line 12
    def self.evaluate(metadata, filename)
      builder = new(metadata)
      if File.file?(filename)
        builder.instance_eval(File.read(filename.to_s), filename.to_s, 1)
      else
        Puppet.warning "No Modulefile: #{filename}"
      end
      return builder
    end

new(metadata) click to toggle source

Instantiate with the Metadata `metadata` instance.

    # File lib/puppet/module_tool/modulefile.rb, line 23
    def initialize(metadata)
      @metadata = metadata
    end

### Public Instance Methods

author(author) click to toggle source

Set the author or default to `username`

    # File lib/puppet/module_tool/modulefile.rb, line 51
    def author(author)
        @metadata.author = author
    end

dependency(name, version_requirement = nil, repository = nil) click to toggle source

Add a dependency with the full_module_name `name` (e.g. “myuser-mymodule”), an optional `version_requirement` (e.g. “0.0.1”) and `repository` (a URL string). Optional. Can be called multiple times to add many dependencies.

    # File lib/puppet/module_tool/modulefile.rb, line 41
    def dependency(name, version_requirement = nil, repository = nil)
      @metadata.dependencies << Dependency.new(name, version_requirement, repository)
    end

description(description) click to toggle source

Set the description

    # File lib/puppet/module_tool/modulefile.rb, line 66
    def description(description)
       @metadata.description = description
    end

license(license) click to toggle source

Set the license

    # File lib/puppet/module_tool/modulefile.rb, line 56
    def license(license)
      @metadata.license = license
    end

name(name) click to toggle source

Set the `full_module_name` (e.g. “myuser-mymodule”), which will also set the `username` and module `name`. Required.

    # File lib/puppet/module_tool/modulefile.rb, line 29
    def name(name)
      @metadata.full_module_name = name
    end

project_page(project_page) click to toggle source

Set the project page

    # File lib/puppet/module_tool/modulefile.rb, line 71
    def project_page(project_page)
       @metadata.project_page = project_page
     end

source(source) click to toggle source

Set the source

    # File lib/puppet/module_tool/modulefile.rb, line 46
    def source(source)
      @metadata.source = source
    end

summary(summary) click to toggle source

Set the summary

    # File lib/puppet/module_tool/modulefile.rb, line 61
    def summary(summary)
       @metadata.summary = summary
     end

version(version) click to toggle source

Set the module `version` (e.g., “0.0.1”). Required.

    # File lib/puppet/module_tool/modulefile.rb, line 34
    def version(version)
      @metadata.version = version
    end