class Pieces::Builder

Public Class Methods

build(config = {}) click to toggle source
# File lib/pieces/builder.rb, line 7
def self.build(config = {})
  new(Config.new(config)).build
end
new(config) click to toggle source
Calls superclass method Pieces::Configurable::new
# File lib/pieces/builder.rb, line 13
def initialize(config)
  super
  config.env = env
end

Public Instance Methods

build() click to toggle source
# File lib/pieces/builder.rb, line 18
def build
  save_files(build_routes(build_assets))
end

Private Instance Methods

build_assets(files = {}) click to toggle source
# File lib/pieces/builder.rb, line 32
def build_assets(files = {})
  if env['manifest.js']
    manifest.find('manifest.js').reduce(files) do |files, file|
      files.merge("assets/#{file.logical_path}" => { type: file.content_type, contents: file })
    end
  else
    files.merge('assets/pieces.css' => { type: 'text/css', contents: env['pieces.css'] },
                'assets/pieces.js' => { type: 'application/js', contents: env['pieces.js'] })
  end
end
build_routes(files = {}) click to toggle source
# File lib/pieces/builder.rb, line 43
def build_routes(files = {})
  route_compiler = RouteCompiler.new(config)

  config.routes.reduce(files) do |files, (name, route)|
    route_compiler.compile(files, name, route)
  end
end
env() click to toggle source
# File lib/pieces/builder.rb, line 24
def env
  @env ||= Server.new(config).sprockets_env
end
manifest() click to toggle source
# File lib/pieces/builder.rb, line 28
def manifest
  @manifest ||= Sprockets::Manifest.new(env, 'build/assets')
end
save_file(name, file) click to toggle source
# File lib/pieces/builder.rb, line 59
def save_file(name, file)
  FileUtils.mkdir_p(File.dirname("build/#{name}"))
  File.open("build/#{name}", 'w') { |f| f.write(file[:contents]) }
end
save_files(files) click to toggle source
# File lib/pieces/builder.rb, line 51
def save_files(files)
  Dir.chdir(config.path) do
    files.each do |name, file|
      save_file(name, file)
    end
  end
end