Add file mapping to accessories

This commit is contained in:
David Heinemeier Hansson
2023-01-23 09:43:57 +01:00
parent 92565d58d5
commit 8af7e48a90
7 changed files with 61 additions and 10 deletions

View File

@@ -3,10 +3,27 @@ require "mrsk/cli/base"
class Mrsk::Cli::Accessory < Mrsk::Cli::Base
desc "boot [NAME]", "Boot accessory service on host"
def boot(name)
invoke :upload, [ name ]
accessory = MRSK.accessory(name)
on(accessory.host) { execute *accessory.run }
end
desc "upload [NAME]", "Upload accessory files to host"
def upload(name)
accessory = MRSK.accessory(name)
on(accessory.host) do
accessory.files.each do |(local, remote)|
if Pathname.new(local).exist?
execute :mkdir, "-p", Pathname.new(remote).dirname.to_s
upload! local.to_s, remote.to_s
else
raise "Missing file: #{local}"
end
end
end
end
desc "reboot [NAME]", "Reboot accessory on host (stop container, remove container, start new container)"
def reboot(name)
invoke :stop, [ name ]