require 'shellwords' module SimCtl class Command module IO # Saves a screenshot to a file # # @param device [SimCtl::Device] the device the screenshot should be taken from # @param file Path where the screenshot should be saved to # @param opts Optional hash that supports two keys: # * type: Can be png, tiff, bmp, gif, jpeg (default is png) # * display: Can be main or tv for iOS, tv for tvOS and main for watchOS # @return [void] def screenshot(device, file, opts={}) unless Xcode::Version.gte? '8.2' raise UnsupportedCommandError.new('Needs at least Xcode 8.2') end optional_args = opts.map {|k,v| "--#{k}=#{Shellwords.shellescape(v)}"} Executor.execute(command_for('io', device.udid, 'screenshot', *optional_args, Shellwords.shellescape(file))) end end end end