lib/app_builder/uploader.rb in app_builder-0.1.3 vs lib/app_builder/uploader.rb in app_builder-0.1.4

- old
+ new

@@ -8,52 +8,68 @@ end end def initialize(conf = nil) case conf - when AppBuilder::Archiver + when Archiver @builder = Builder.new(conf) conf = conf.config - when AppBuilder::Builder + when Builder @builder = conf conf = conf.config end super(conf) + @builder ||= Builder.new(config) end def upload + upload_proc = s3? ? method(:upload_to_s3) : method(:upload_to_server) builder.build - if s3?(src_url) - upload_to_s3(builded_src_path, src_url) - else - upload_to_server(builded_src_path, remote_src_path) - end - + upload_proc.call(builded_src_path, remote_src_file) generate_manifest - if s3?(manifest_url) - upload_to_s3(builded_manifest_path, manifest_url) - else - upload_to_server(builded_manifest_path, remote_manifest_path) - end + upload_proc.call(builded_manifest_path, remote_manifest_file) end def upload_to_s3(local, remote) - execute("aws s3 cp #{local} #{remote}") + log(:info, "Upload #{local} to #{src_url}") + s3_client.put_object( + bucket: upload_id, + key: remote, + body: File.open(local), + ) end def upload_to_server(local, remote) - execute("scp -i #{identity_file} #{local} #{ssh_user}@#{resource_host}:#{remote}") + log(:info, "Upload #{local} to #{src_url}") + resource_server.upload(local, remote) end def generate_manifest checksum = `openssl sha256 #{builded_src_path} | awk -F"=" '{ print $2 }'`.strip manifest = ERB.new(File.read(manifest_template_path)).result(binding) File.open(builded_manifest_path, "w") { |f| f.write(manifest) } end private - def s3?(url) - url.to_s.start_with?("s3://") + def s3? + upload_type == :s3 + end + + def s3_client + @s3_client ||= Aws::S3::Client.new( + region: region, + access_key_id: access_key_id, + secret_access_key: secret_access_key + ) + end + + def resource_server + @resource_server ||= Server.new( + resource_host, + user: resource_user, + options: resource_ssh_options, + logger: logger + ) end end end