class Minimart::Web::HtmlGenerator

HTML generator coordinated building the various HTML pages (dashboard, show pages).

Attributes

clean_cookbooks[R]
cookbooks[R]
web_directory[R]

Public Class Methods

new(opts = {}) click to toggle source

@param [Hash] opts @option opts [String] :web_directory The directory to put any generated HTML in @option opts [String] :cookbooks The cookbooks to generate HTML for

# File lib/minimart/web/html_generator.rb, line 20
def initialize(opts = {})
  @web_directory = opts[:web_directory]
  @cookbooks     = opts[:cookbooks]
  @clean_cookbooks = opts.fetch(:clean_cookbooks, true)
end

Public Instance Methods

generate() click to toggle source

Generate any HTML!

# File lib/minimart/web/html_generator.rb, line 27
def generate
  generate_assets
  generate_index
  generate_cookbook_show_pages
end

Private Instance Methods

copy_assets() click to toggle source
# File lib/minimart/web/html_generator.rb, line 41
def copy_assets
  FileUtils.cp_r(compiled_asset_directory, web_directory)
end
generate_assets() click to toggle source
# File lib/minimart/web/html_generator.rb, line 35
def generate_assets
  generate_js
  generate_css
  copy_assets
end
generate_cookbook_show_pages() click to toggle source
# File lib/minimart/web/html_generator.rb, line 69
def generate_cookbook_show_pages
  CookbookShowPageGenerator.new(
    web_directory: web_directory,
    cookbooks:     cookbooks,
    clean_cookbooks: clean_cookbooks).generate
end
generate_css() click to toggle source
# File lib/minimart/web/html_generator.rb, line 54
def generate_css
  css_dir = Pathname.new(compiled_asset_directory).join('stylesheets')
  FileUtils.mkdir_p(css_dir)
  sprockets = Sprockets::Environment.new(minimart_root_directory)
  sprockets.css_compressor = :sass
  sprockets.append_path(Pathname.new(raw_asset_directory).join('stylesheets'))
  sprockets['manifest.css'].write_to(css_dir.join('application.min.css'))
end
generate_index() click to toggle source
# File lib/minimart/web/html_generator.rb, line 63
def generate_index
  DashboardGenerator.new(
    web_directory: web_directory,
    cookbooks:     cookbooks).generate
end
generate_js() click to toggle source
# File lib/minimart/web/html_generator.rb, line 45
def generate_js
  js_dir = Pathname.new(compiled_asset_directory).join('javascripts')
  FileUtils.mkdir_p(js_dir)
  sprockets = Sprockets::Environment.new(minimart_root_directory)
  sprockets.js_compressor = :uglify
  sprockets.append_path(Pathname.new(raw_asset_directory).join('javascripts'))
  sprockets['manifest.js'].write_to(js_dir.join('application.min.js'))
end