class Bower::Project::Creator

Attributes

src[R]

Public Class Methods

new(src) click to toggle source
# File lib/rab/bower/project.rb, line 11
def initialize(src)
  @src = src
end

Public Instance Methods

create!() click to toggle source
# File lib/rab/bower/project.rb, line 15
def create!
  cmd = Bower::Command.new(src)
  cmd.install!
  prj_json = JSON.parse(cmd.list!)
  dep_paths = JSON.parse(cmd.list_paths!)

  cwd = prj_json.fetch("canonicalDir")
  pkg_meta = prj_json.fetch("pkgMeta")
  name = pkg_meta.fetch("name")
  version = pkg_meta.fetch("version")

  prj = Bower::Project.new(name, version, [])
  prj.assets += build_assets(cwd, pkg_meta["main"]) # current
  prj.assets += build_dep_assets(cwd, dep_paths)

  prj
end

Private Instance Methods

build_assets(cwd, paths) click to toggle source
# File lib/rab/bower/project.rb, line 35
def build_assets(cwd, paths)
  Array(paths).map do |p|
    pp = full_path(cwd, p)
    if File.directory?(pp)
      pp = Dir["#{pp}/**/*"].select { |f| !File.directory? f }
    end

    pp
  end.flatten
end
build_dep_assets(cwd, dep_paths) click to toggle source
# File lib/rab/bower/project.rb, line 46
def build_dep_assets(cwd, dep_paths)
  dep_paths.map do |_, p|
    build_assets(cwd, p)
  end.flatten
end
full_path(cwd, path) click to toggle source
# File lib/rab/bower/project.rb, line 52
def full_path(cwd, path)
  File.expand_path File.join(cwd, path)
end