class ChefRake::Task::Gem

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/chef/raketasks/gem.rb, line 23
def initialize
  super

  namespace :gem do
    desc 'gem:install'
    namespace :install do
      def install_gem(name, version, source)
        cmd = 'chef gem install '
        cmd << "#{name} "
        cmd << "-v #{version} " unless version.nil?
        cmd << "-s #{source} " unless source.nil?
        cmd << '--no-document'

        sh cmd
      end

      # NAMESPACE: gem:install:static
      desc 'Installs necessary static gems for kitchen'
      task static: %i[
        gem:install:static:kitchen
      ]
      namespace :static do
        desc 'Installs kitchen-static for kitchen'
        task :kitchen, [:version, :source] do |_t, args|
          install_gem('kitchen-static', args.version, args.source)
        end
      end

      # NAMESPACE: gem:install:vcenter
      desc 'Installs necessary vcenter gems for kitchen'
      task vcenter: %i[
        gem:install:vcenter:sdk
        gem:install:vcenter:kitchen
      ]
      namespace :vcenter do
        desc 'Installs vcenter sdk for kitchen'
        task :sdk, [:version, :source] do |_t, args|
          install_gem('vsphere-automation-sdk', args.version, args.source)
        end

        desc 'Installs kitchen-vcenter for kitchen'
        task :kitchen, [:version, :source] do |_t, args|
          install_gem('kitchen-vcenter', args.version, args.source)
        end
      end # namespace vcenter
    end # namespace install
  end # namespace gem
end

Public Instance Methods

install_gem(name, version, source) click to toggle source
# File lib/chef/raketasks/gem.rb, line 29
def install_gem(name, version, source)
  cmd = 'chef gem install '
  cmd << "#{name} "
  cmd << "-v #{version} " unless version.nil?
  cmd << "-s #{source} " unless source.nil?
  cmd << '--no-document'

  sh cmd
end