class Assetify::Pkg

Some Assets are inside rocks, need tools…

Constants

PATH

Attributes

name[RW]
url[RW]

Public Class Methods

new(name, url, _opts = {}) click to toggle source
# File lib/assetify/asset/pkg.rb, line 13
def initialize(name, url, _opts = {})
  @name = name
  @pkgname = url.split('/').last
  @url = url
end

Public Instance Methods

fullpath() click to toggle source
# File lib/assetify/asset/pkg.rb, line 23
def fullpath
  File.join(path, @pkgname)
end
get(file, force = false) click to toggle source
# File lib/assetify/asset/pkg.rb, line 40
def get(file, force = false)
  # Download and write to tmp if force or doensnt exists
  write(get_data(url)) if force || !File.exist?(fullpath)
  # Better way when multiple are found....?
  read_from_pkg(file)
end
path() click to toggle source
# File lib/assetify/asset/pkg.rb, line 19
def path
  File.join(PATH, name.to_s)
end
read_from_pkg(regex = '.*') click to toggle source
# File lib/assetify/asset/pkg.rb, line 27
def read_from_pkg(regex = '.*')
  data = {}
  Archive.read_open_filename(fullpath) do |ar|
    while (entry = ar.next_header)
      if entry.pathname =~ /#{regex}/
        data[entry.pathname] = ar.read_data
        # return data
      end
    end
  end
  data
end
unpack_all() click to toggle source

Used when pkgs doesn't provide a block, just dump it somewhere.

# File lib/assetify/asset/pkg.rb, line 50
def unpack_all
  read_from_pkg.each do |file, data|
    _fname, *dir = file =~ %r{/$} ? [nil, file] : file.split('/').reverse
    dir = File.join Opt[:vendor], dir.reverse.join('/')
    FileUtils.mkdir_p dir unless Dir.exist?(dir)
    next if file =~ %r{/$} # next if data.empty?
    File.open(Opt[:vendor] + "/#{file}", 'w+') { |f| f.puts(data) }
  end
end