class ChefRake::Task::Repin

Public Class Methods

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

  namespace :repin do
    desc 'Repin hard dependencies in Chef Workstation binaries'

    %w[chef-client kitchen inspec ohai].each do |binary|
      next unless File.exist? binary_wrapper(binary)

      desc "Repin #{binary} dependency to a specific gem"
      task binary.to_sym, [:gem, :version] do |_task, args|
        task_repin binary, args.gem, args.version
      end
    end
  end # namespace repin
end

Public Instance Methods

binary_wrapper(name) click to toggle source
# File lib/chef/raketasks/repin.rb, line 46
def binary_wrapper(name)
  File.join('/opt/chef-workstation/bin', name)
end
read(filename) click to toggle source
# File lib/chef/raketasks/repin.rb, line 50
def read(filename)
  @contents = File.read(filename)
  @filename = filename
end
repin(gem, version) click to toggle source
# File lib/chef/raketasks/repin.rb, line 55
def repin(gem, version)
  printf("Changing version pin of %<gem>s to %<version>s for %<binary>s\n",
         gem: gem,
         version: version,
         binary: @filename)

  @contents.gsub!(/(?<=#{gem}"), "= [.0-9]+"/, ", \"= #{version}\"")
end
task_repin(name, gem, version) click to toggle source
# File lib/chef/raketasks/repin.rb, line 40
def task_repin(name, gem, version)
  read binary_wrapper(name)
  repin gem, version
  write_back
end
write_back() click to toggle source
# File lib/chef/raketasks/repin.rb, line 64
def write_back
  File.write(@filename, @contents)
end