Sha256: bcd1114bbe8db5e8b6351696142fc1aa050b10456ecb626f50d852126e5a8971

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require "google/cloud/storage"

class TerraspaceBundler::Mod::Fetcher
  class Gcs < Base
    extend Memoist

    def run
      bucket, key, path = gcs_info
      download(bucket, key, path)
    end

    def download(bucket_name, key, path)
      # Download to cache area
      bucket = storage.bucket(bucket_name)
      unless bucket
        logger.error "ERROR: bucket #{bucket_name} does not exist".color(:red)
        exit 1
      end
      file = bucket.file(key)
      unless file
        logger.error "ERROR: Unable to find gs://#{bucket_name}/#{key}".color(:red)
        exit 1
      end

      archive = cache_path(path) # temporary path
      logger.debug "Gcs save archive to #{archive}"
      FileUtils.mkdir_p(File.dirname(archive))
      file.download(archive)

      # Save to stage
      dest = stage_path(rel_dest_dir)
      extract(archive, dest)
    end

  private
    def gcs_info
      path = type_path
      path.sub!(%r{storage/v\d+/},'')
      bucket, key = get_bucket_key(path)
      [bucket, key, path]
    end

    def storage
      Google::Cloud::Storage.new
    end
    memoize :storage
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
terraspace-bundler-0.4.3 lib/terraspace_bundler/mod/fetcher/gcs.rb
terraspace-bundler-0.4.2 lib/terraspace_bundler/mod/fetcher/gcs.rb
terraspace-bundler-0.4.1 lib/terraspace_bundler/mod/fetcher/gcs.rb
terraspace-bundler-0.4.0 lib/terraspace_bundler/mod/fetcher/gcs.rb