Sha256: 9a79ea6038eef77656a5b3c03b5a0acc154785d2a4438d88727edc1756b57085

Contents?: true

Size: 1.62 KB

Versions: 66

Compression:

Stored size: 1.62 KB

Contents

#!/usr/bin/env ruby

require 'optparse'
require 'aws-sdk-s3'

options = {}
OptionParser.new do |opts|
  opts.banner = "Usage: s3-upload options"

  opts.on("-r", "--region=REGION", "AWS region to use (default us-east-1)") do |v|
    options[:region] = v
  end

  opts.on("-p", "--param=KEY=VALUE", "Specify parameter for S3 upload") do |v|
    options[:params] ||= {}
    k, v = v.split('=', 2)
    options[:params][k.to_sym] = v
  end

  opts.on("-f", "--file=PATH", "Path to the file to upload, - to upload standard input") do |v|
    options[:file] = v
  end

  opts.on("-w", "--write=BUCKET:PATH", "Bucket name and key (or path) to upload to") do |v|
    options[:write] = v
  end

  opts.on("-c", "--copy=BUCKET:PATH", "Bucket name and key (or path) to copy to (may be specified more than once)") do |v|
    options[:copy] ||= []
    options[:copy] << v
  end
end.parse!

ENV['AWS_REGION'] ||= options[:region] || 'us-east-1'

def upload(f, options)
  s3 = Aws::S3::Client.new
  write = options.fetch(:write)
  STDERR.puts "Writing #{write}"
  bucket, key = write.split(':', 2)
  s3.put_object(
    body: f.read,
    bucket: bucket,
    key: key,
    **options[:params] || {},
  )
  if copy = options[:copy]
    copy.each do |dest|
      STDERR.puts "Copying to #{dest}"
      dbucket, dkey = dest.split(':', 2)
      s3.copy_object(
        bucket: dbucket,
        key: dkey,
        copy_source: "/#{bucket}/#{key}",
        **options[:params] || {},
      )
    end
  end
end

if options[:file] == '-'
  upload(STDIN, options)
elsif options[:file]
  File.open(options[:file]) do |f|
    upload(f, options)
  end
else
  upload(STDIN, options)
end

Version data entries

66 entries across 66 versions & 4 rubygems

Version Path
mogno-1.0.0 spec/shared/bin/s3-upload
mongoid-9.0.0 spec/shared/bin/s3-upload
mongo-2.20.0 spec/shared/bin/s3-upload
mongoid-8.0.8 spec/shared/bin/s3-upload
mongoid-8.1.5 spec/shared/bin/s3-upload
bson-5.0.0-java spec/shared/bin/s3-upload
bson-5.0.0 spec/shared/bin/s3-upload
mongoid-8.1.4 spec/shared/bin/s3-upload
mongo-2.19.3 spec/shared/bin/s3-upload
mongo-2.16.4 spec/shared/bin/s3-upload
mongo-2.17.4 spec/shared/bin/s3-upload
mongo-2.18.3 spec/shared/bin/s3-upload
mongo-2.19.2 spec/shared/bin/s3-upload
mongoid-8.0.7 spec/shared/bin/s3-upload
mongoid-8.1.3 spec/shared/bin/s3-upload
mongoid-8.1.2 spec/shared/bin/s3-upload
mongoid-8.0.6 spec/shared/bin/s3-upload
mongoid-7.5.4 spec/shared/bin/s3-upload
mongo-2.19.1 spec/shared/bin/s3-upload
mongoid-8.1.1 spec/shared/bin/s3-upload