Sha256: 6d308a1fdcf5dd137a500a93f2d22c986186788277defe8def0577082daf84c3

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

require 'digest'
require 'open-uri'
require 'tempfile'
require 'uri'

require 'vendorificator/vendor'

module Vendorificator
  class Vendor::Download < Vendor
    arg_reader :url
    attr_reader :conjured_checksum, :conjured_filesize

    def path
      args[:path] || group
    end

    def conjure!
      say_status :default, :download, url
      File.open name, 'w' do |outf|
        outf.write( open(url).read )
      end
      @conjured_checksum = Digest::SHA256.file(name).hexdigest
      @conjured_filesize = File.size(name)
      add_download_metadata
    end

    def upstream_version
      conjured_checksum || Digest::SHA256.hexdigest( open(url).read )
    end

    def conjure_commit_message
      rv = "Conjured #{name} from #{url}\nChecksum: #{conjured_checksum}"
      rv << "Version: #{args[:version]}" if args[:version]
      rv
    end

    private

    def parse_initialize_args(args = {})
      unless args[:url]
        args[:url] ||= @name
        @name = URI::parse(args[:url]).path.split('/').last
      end

      args
    end

    def add_download_metadata
      @metadata[:download_checksum] = conjured_checksum
      @metadata[:download_filesize] = conjured_filesize
      @metadata[:download_url] = url
    end
  end

  class Config
    register_module :download, Vendor::Download
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
vendorificator-0.5.2 lib/vendorificator/vendor/download.rb
vendorificator-0.5.1 lib/vendorificator/vendor/download.rb
vendorificator-0.5.0 lib/vendorificator/vendor/download.rb
vendorificator-0.5.git.v0.4.0.63.g8e9d54d lib/vendorificator/vendor/download.rb
vendorificator-0.5.git.v0.4.0.60.g9c35209 lib/vendorificator/vendor/download.rb