class Knife::Clc::Bootstrap::Methods::AsyncWindowsPackage

Constants

COMBINED_SCRIPT_PATH
LINES_PER_PARTIAL_SCRIPT

Attributes

config[R]
subcommand_loader[R]

Public Class Methods

new(params) click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 13
def initialize(params)
  @config = params.fetch(:config)
  @subcommand_loader = params.fetch(:subcommand_loader)
end

Public Instance Methods

execute(launch_parameters) click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 18
def execute(launch_parameters)
  launch_parameters['packages'] ||= []
  launch_parameters['packages'].concat(packages_for_async_bootstrap)
end

Private Instance Methods

appending_script(script_to_append) click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 45
def appending_script(script_to_append)
  "$script = @'\n" +
  script_to_append +
  "'@\n" +
  "$script | out-file #{COMBINED_SCRIPT_PATH} -Append -Encoding ASCII\n"
end
bootstrap_command() click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 57
def bootstrap_command
  subcommand_loader.load(:class => Chef::Knife::BootstrapWindowsWinrm, :config => config)
end
bootstrap_script() click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 61
def bootstrap_script
  command = bootstrap_command
  command.render_template(command.load_template(config[:bootstrap_template]))
end
ensure_windows_newlines(script) click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 52
def ensure_windows_newlines(script)
  script.gsub!("\r\n", "\n")
  script.gsub!("\n", "\r\n")
end
packages_for_async_bootstrap() click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 25
def packages_for_async_bootstrap
  split_script(bootstrap_script).map do |partial_script|
    {
      'packageId' => 'a5d9d04369df4276a4f98f2ca7f7872b',
      'parameters' => {
        'Mode' => 'PowerShell',
        'Script' => partial_script
      }
    }
  end
end
split_script(script) click to toggle source
# File lib/knife-clc/bootstrap/methods/async_windows_package.rb, line 37
def split_script(script)
  partial_scripts = script.lines.each_slice(LINES_PER_PARTIAL_SCRIPT).map do |lines|
    appending_script(lines.join).tap { |script| ensure_windows_newlines(script) }
  end

  partial_scripts.push(COMBINED_SCRIPT_PATH)
end