Sha256: 2571263a80709b6535e16ce1f1af8693172df56f4d582bffcd15ce2cdc11f658

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

require 'libarchive'

module Assetify

  class Pkg
    include Helpers
    attr_accessor :name, :url

    PATH = "/tmp/"

    def initialize(name, url)
      @name = name
      @pkgname = url.split("/").last
      @url = url
    end

    def path
      File.join(PATH, name)
    end

    def fullpath
      File.join(path, @pkgname)
    end

    def read_from_pkg(regex = ".*")
      data = {}
      Archive.read_open_filename(fullpath) do |ar|
        while entry = ar.next_header
          if entry.pathname =~ /#{regex}/
            data.merge! entry.pathname => ar.read_data
           # return data
          end
        end
      end
      data
    end

    def get(file, force = false)
      # Download and write to tmp if force or doensnt exists
      write(get_data(url)) if force || !File.exists?(File.join(fullpath))
      # Better way when multiple are found....?
      read_from_pkg(file)
    end

    def unpack_to_vendor
      read_from_pkg.each do |file, data|
        fname, *dir = file =~ /\/$/ ? [nil, file] : file.split("/").reverse
        dir = File.join Opt[:vendor], dir.reverse.join("/")
        FileUtils.mkdir_p dir unless Dir.exists?(dir)
        next if file =~ /\/$/ # next if data.empty?
        File.open(Opt[:vendor] + "/#{file}", "w+") { |f| f.puts(data) }
      end
    end

  end

end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
assetify-1.0.0 lib/assetify/asset/pkg.rb
assetify-1.0.0.rc1 lib/assetify/asset/pkg.rb
assetify-0.7.0.rc1 lib/assetify/pkg.rb
assetify-0.4.0 lib/assetify/pkg.rb
assetify-0.3.0 lib/assetify/pkg.rb