Sha256: 54f4b33917fe6260b4a8a4a3fab3beafd7d0b195ddb695aeab57f5ff9b076dda

Contents?: true

Size: 1.53 KB

Versions: 2

Compression:

Stored size: 1.53 KB

Contents

module Dpl
  module Providers
    class Cloudfiles < Provider
      status :alpha

      full_name 'Cloud Files'

      description sq(<<-str)
        tbd
      str

      gem 'nokogiri', '< 1.10'
      gem 'fog-core', '= 2.1.0', require: 'fog/core'
      gem 'fog-rackspace', '~> 0.1.6', require: 'fog/rackspace'

      opt '--username USER',  'Rackspace username', required: true
      opt '--api_key KEY',    'Rackspace API key', required: true, secret: true
      opt '--region REGION',  'Cloudfiles region', required: true, enum: %w(ord dfw syd iad hkg)
      opt '--container NAME', 'Name of the container that files will be uploaded to', required: true
      opt '--glob GLOB',      'Paths to upload', default: '**/*'
      opt '--dot_match',      'Upload hidden files starting a dot'

      msgs missing_container: 'The specified container does not exist.'

      def deploy
        paths.each do |path|
          container.files.create(key: path, body: File.open(path))
        end
      end

      def paths
        paths = Dir.glob(*glob)
        paths.reject { |path| File.directory?(path) }
      end

      def glob
        glob = [super]
        glob << File::FNM_DOTMATCH if dot_match?
        glob
      end

      def container
        @container ||= api.directories.get(super) || error(:missing_container)
      end

      def api
        @api ||= Fog::Storage.new(
          provider: 'Rackspace',
          rackspace_username: username,
          rackspace_api_key: api_key,
          rackspace_region: region
        )
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
dpl-2.0.0.alpha.2 lib/dpl/providers/cloudfiles.rb
dpl-2.0.0.alpha.1 lib/dpl/providers/cloudfiles.rb