lib/roku_builder/plugins/loader.rb in roku_builder-4.25.5 vs lib/roku_builder/plugins/loader.rb in roku_builder-4.25.6

- old
+ new

@@ -48,20 +48,24 @@ def self.dependencies [Navigator] end # Sideload an app onto a roku device - def sideload(options:) + def sideload(options:, device: nil) did_build = false unless options[:in] did_build = true build(options: options) end keep_build_file = is_build_command(options) and options[:out] - upload(options) + upload(options: options, device: device) # Cleanup - File.delete(file_path(:in)) if did_build and not keep_build_file + begin + File.delete(file_path(:in)) if did_build and not keep_build_file + rescue Errno::EACCES + @logger.warn "Unable to delete: " + file_path(:in) + end end # Build an app to sideload later def build(options:) @@ -74,21 +78,33 @@ file_path(:out) end # Remove the currently sideloaded app def delete(options:, ignoreFailure: false) - payload = {mysubmit: "Delete", archive: ""} - response = multipart_connection.post "/plugin_install", payload + payload = { + mysubmit: make_param("Delete"), + archive: make_param("", "application/octet-stream") + } + response = nil + multipart_connection do |conn| + response = conn.post "/plugin_install", payload + end unless response.status == 200 and response.body =~ /Delete Succeeded/ or ignoreFailure raise ExecutionError, "Failed Unloading" end end # Convert sideloaded app to squashfs - def squash(options:, ignoreFailure: false) - payload = {mysubmit: "Convert to squashfs", archive: ""} - response = multipart_connection.post "/plugin_install", payload + def squash(options:, device: nil, ignoreFailure: false) + payload = { + mysubmit: "Convert to squashfs", + archive: make_param("", "application/octet-stream") + } + response = nil + multipart_connection(device: device) do |conn| + response = conn.post "/plugin_install", payload + end unless response.status == 200 and response.body =~ /Conversion succeeded/ or ignoreFailure raise ExecutionError, "Failed Converting to Squashfs" end end @@ -102,19 +118,22 @@ def is_build_command(options) [:sideload, :build].include? options.command end - def upload(options) + def upload(options:, device: nil) payload = { mysubmit: "Replace", archive: Faraday::UploadIO.new(file_path(:in), 'application/zip'), } payload["remotedebug"] = "1" if options[:remoteDebug] - response = multipart_connection.post "/plugin_install", payload + response = nil + multipart_connection(device: device) do |conn| + response = conn.post "/plugin_install", payload + end @logger.debug("Status: #{response.status}, Body: #{response.body}") if response.status==200 and response.body=~/Identical to previous version/ - @logger.warn("Sideload identival to previous version") + @logger.warn("Sideload identical to previous version") elsif not (response.status==200 and response.body=~/Install Success/) raise ExecutionError, "Failed Sideloading" end end