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