class Beaker::DSL::PEClientTools::ExecutableHelper::Private

Attributes

logger[RW]

Public Instance Methods

build_win_batch_command( host, batch_contents, command_options) click to toggle source
# File lib/beaker-pe/pe-client-tools/executable_helper.rb, line 157
def build_win_batch_command( host, batch_contents, command_options)
  timestamp = Time.new.strftime('%Y-%m-%d_%H.%M.%S')
  # Create Temp file
  # make file fully qualified
  batch_file = "#{host.system_temp_path}\\#{timestamp}.bat"
  create_remote_file(host, batch_file, batch_contents)
  Beaker::Command.new("\"#{batch_file}\"", [], command_options)
end
tool(tool, *args) { |self| ... } click to toggle source
# File lib/beaker-pe/pe-client-tools/executable_helper.rb, line 114
          def tool(tool, *args, &block)

            host = args.shift
            @logger = host.logger
            options = {}
            options.merge!(args.pop) if args.last.is_a?(Hash)

            if host.platform =~ /win/i

              program_files = host.exec(Beaker::Command.new('echo', ['%PROGRAMFILES%'], :cmdexe => true)).stdout.chomp
              client_tools_dir = "#{program_files}\\#{['Puppet Labs', 'Client', 'tools', 'bin'].join('\\')}\\"
              tool_executable = "\"#{client_tools_dir}puppet-#{tool.to_s}.exe\""

              #TODO does this need to be more detailed to pass exit codes????
              # TODO make batch file direct output to separate file
              batch_contents =<<-EOS
@echo off
call #{tool_executable} #{args.join(' ')}
              EOS

              @command = build_win_batch_command( host, batch_contents, {:cmdexe => true})
            else

              tool_executable = '/opt/puppetlabs/client-tools/bin/' << "puppet-#{tool.to_s}"
              @command = Beaker::Command.new(tool_executable, args, {:cmdexe => true})
            end

            result = host.exec(@command, options)

            # Also, let additional checking be performed by the caller.
            if block_given?
              case block.arity
                #block with arity of 0, just hand back yourself
                when 0
                  yield self
                #block with arity of 1 or greater, hand back the result object
                else
                  yield result
              end
            end
            result
          end