Sha256: 1fd5af29047e4581d4c63d386e73440bce2832c22600fef5029626b0e79a8876

Contents?: true

Size: 1.43 KB

Versions: 44

Compression:

Stored size: 1.43 KB

Contents

require 'r10k'

module R10K::Module

  # Register an module implementation for later generation
  def self.register(klass)
    @klasses ||= []
    @klasses << klass
  end

  # Look up the implementing class and instantiate an object
  #
  # This method takes the arguments for normal object generation and checks all
  # inheriting classes to see if they implement the behavior needed to create
  # the requested object. It selects the first class that can implement an object
  # with `name, args`, and generates an object of that class.
  #
  # @param [String] name The unique name of the module
  # @param [String] basedir The root to install the module in
  # @param [Object] args An arbitary value or set of values that specifies the implementation
  # @param [R10K::Environment] environment Optional environment that this module is a part of
  #
  # @return [Object < R10K::Module] A member of the implementing subclass
  def self.new(name, basedir, args, environment=nil)
    if implementation = @klasses.find { |klass| klass.implement?(name, args) }
      obj = implementation.new(name, basedir, args, environment)
      obj
    else
      raise _("Module %{name} with args %{args} doesn't have an implementation. (Are you using the right arguments?)") % {name: name, args: args.inspect}
    end
  end

  require 'r10k/module/base'
  require 'r10k/module/git'
  require 'r10k/module/svn'
  require 'r10k/module/local'
  require 'r10k/module/forge'
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
r10k-3.9.0 lib/r10k/module.rb
r10k-3.8.0 lib/r10k/module.rb
r10k-3.7.0 lib/r10k/module.rb
r10k-3.6.0 lib/r10k/module.rb
r10k-2.6.9 lib/r10k/module.rb
r10k-3.5.2 lib/r10k/module.rb
r10k-3.5.1 lib/r10k/module.rb
r10k-3.5.0 lib/r10k/module.rb
r10k-3.4.1 lib/r10k/module.rb
r10k-2.6.8 lib/r10k/module.rb
r10k-3.4.0 lib/r10k/module.rb
r10k-3.3.3 lib/r10k/module.rb
r10k-3.2.3 lib/r10k/module.rb
r10k-2.6.7 lib/r10k/module.rb
r10k-3.3.2 lib/r10k/module.rb
r10k-3.3.1 lib/r10k/module.rb
r10k-3.2.1 lib/r10k/module.rb
r10k-3.0.4 lib/r10k/module.rb
r10k-2.6.6 lib/r10k/module.rb
r10k-3.3.0 lib/r10k/module.rb