Sha256: 2161b608568caa0e9a960c303b54e0d5e2d219aee444db12ba3c5762036c7e37

Contents?: true

Size: 1.31 KB

Versions: 4

Compression:

Stored size: 1.31 KB

Contents

#!/usr/bin/env ruby

require "dotenv/s3"
require "thor"

module Dotenv
  module S3
    class Upload < Thor
      desc "upload -b BUCKET -f FILENAME", "upload your dotenv"

      method_option :bucket,        aliases: '-b', default: nil, type: :string, option: :required
      method_option :filename,      aliases: '-f', default: nil, type: :string, option: :required
      method_option :base64_encode, aliases: '-m', default: false, type: :boolean
      method_option :kms_key_id,    aliases: '-a', default: nil, type: :string

      def upload
        error_check
        body = create_body
        Dotenv::S3.s3_client.put_object(body: body, bucket: options.bucket, key: options.filename)

        puts "uploaded #{options.bucket}/#{options.filename}"
      end

      private

      def error_check
        raise "bucket is empty" unless options.bucket
        raise "filename is empty" unless options.filename
      end

      def create_body
        body = File.read(options.filename)
        body = Base64.encode64(body) if options.base64_encode

        if options.kms_key_id
          ciphertext_blob = Dotenv::S3.kms_client.encrypt(key_id: options.kms_key_id, plaintext: body).ciphertext_blob
          body = Base64.encode64(ciphertext_blob)
        end

        body
      end
    end
  end
end

Dotenv::S3::Upload.start(ARGV)

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
dotenv-s3-0.2.2 exe/dotenv-s3
dotenv-s3-0.2.1 bin/dotenv-s3
dotenv-s3-0.2.0 bin/dotenv-s3
dotenv-s3-0.1.0 bin/dotenv-s3