class UploadRunner

Attributes

md_json[R]

Public Class Methods

new(opts) click to toggle source
# File lib/bento/upload.rb, line 8
def initialize(opts)
  @md_json = opts.md_json
end

Public Instance Methods

start() click to toggle source
# File lib/bento/upload.rb, line 12
def start
  banner("Starting uploads...")
  time = Benchmark.measure do
    files = md_json ? [md_json] : metadata_files
    files.each do |md_file|
      upload(md_file)
    end
  end
  banner("Uploads finished in #{duration(time.real)}.")
end
upload(md_file) click to toggle source
# File lib/bento/upload.rb, line 23
def upload(md_file)
  puts "Attempting to upload #{md_file}"
  md = box_metadata(md_file)
  box_desc = "a bento box for #{md['name']}"
  box = vc_account.ensure_box(md["name"], {short_description: box_desc, is_private: private_box?(md["name"])})
  box_ver = box.ensure_version(md["version"], File.read(md_file))

  if builds_yml["slugs"].value?(box.name)
    slug_desc = "a bento box for #{builds_yml['slugs'].key(box.name)}"
    slug = vc_account.ensure_box(builds_yml["slugs"].key(box.name), {short_description: slug_desc, is_private: false})
    slug_ver = slug.ensure_version(md["version"], File.read(md_file))
  end

  md["providers"].each do |k, v|
    provider = box_ver.ensure_provider(k, nil)
    banner("Uploading #{box.name}/#{box_ver.version}/#{provider.name}...")
    provider.upload_file("builds/#{v['file']}")
    banner(provider.download_url.to_s)
    next unless builds_yml["slugs"].value?(box.name)

    slug_provider = slug_ver.ensure_provider(k, nil)
    banner("Uploading #{slug.name}/#{slug_ver.version}/#{slug_provider.name}...")
    slug_provider.upload_file("builds/#{v['file']}")
    banner(slug_provider.download_url.to_s)
  end
end