Class: Assetify::Asset

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/assetify/asset.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#find_version

Constructor Details

#initialize(type, name, url, ver = nil, params = {}) ⇒ Asset

Returns a new instance of Asset.



10
11
12
13
14
15
16
17
18
19
# File 'lib/assetify/asset.rb', line 10

def initialize(type, name, url, ver = nil, params={})
  raise "NoType" unless type
  raise "NoName" unless name
  raise "NoURL" unless url
  @type, @name = type, name.to_s
  @url = (@ver = ver) ? url.gsub(/{VERSION}/, @ver) : url
  @ns = params[:ns] || ""
  @to = params[:to] || ""
  @pkg = params[:pkg]
end

Instance Attribute Details

#nameObject

Returns the value of attribute name.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def name
  @name
end

#nsObject

Returns the value of attribute ns.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def ns
  @ns
end

#pkgObject

Returns the value of attribute pkg.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def pkg
  @pkg
end

#typeObject Also known as: ext

Returns the value of attribute type.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def type
  @type
end

#urlObject

Returns the value of attribute url.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def url
  @url
end

#verObject

Returns the value of attribute ver.



7
8
9
# File 'lib/assetify/asset.rb', line 7

def ver
  @ver
end

Instance Method Details

#check?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/assetify/asset.rb', line 43

def check?
  File.exists? fullpath
end

#dataObject



53
54
55
56
# File 'lib/assetify/asset.rb', line 53

def data
  # Get data, from a pkg or download directly
  @data ||= @pkg ? @pkg.get(url, :force).values.first : get_data(url)
end

#filenameObject



21
22
23
24
25
26
# File 'lib/assetify/asset.rb', line 21

def filename
  return @filename if @filename
  @filename = Opt[:newname] ? name : url.split("/").last
  @filename += ".#{type}" unless @filename =~ /\.\w{1,6}$/
  @filename
end

#fullpathObject



39
40
41
# File 'lib/assetify/asset.rb', line 39

def fullpath
  @fullpath ||= File.join(path, filename)
end

#install!(force = false) ⇒ Object



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/assetify/asset.rb', line 63

def install!(force = false)
  LINE.p "-> #{name}.#{type}"
  if !force && check?
    @data = File.read(fullpath)
    return LINE.f "#{print_version}Installed"
  end
  begin
    # Creates a thread to insert dots while downloading
    points = Thread.new { loop do; LINE.p "."; sleep 1; end }

    write data
    LINE.f "#{print_version}ok"
  rescue => e
    LINE.f :FAIL, :red
    p "Fail: #{e} #{e.backtrace}"
  ensure
    points.kill
  end

end

#pathObject



28
29
30
31
32
33
34
35
36
37
# File 'lib/assetify/asset.rb', line 28

def path
  args = if @to.empty?
    tpath = Opt["#{type}path".to_sym]
    raise "Don`t know where to put #{type} files..." unless tpath
    [tpath,  @ns ? @ns.to_s : ""]
  else
    [Dir.pwd, @to]
  end
  @path = File.join(args)
end


47
48
49
50
51
# File 'lib/assetify/asset.rb', line 47

def print_version
  return "" unless ver
  ver_str = ver.size > 10 ? ver[0..10] : ver[0]
  "v#{ver_str} "
end