class Pagemaster::Site

Attributes

args[R]
collections[R]
config[R]
opts[R]

Public Class Methods

new(args, opts, config = nil) click to toggle source
# File lib/pagemaster/site.rb, line 11
def initialize(args, opts, config = nil)
  @args             = args
  @opts             = opts
  @config           = config || config_from_file
  @collections      = parse_collections
  @collections_dir  = @config.dig 'collections_dir'
  @source_dir       = @config.dig 'source_dir'

  raise Error::MissingArgs, 'You must specify one or more collections after `jekyll pagemaster`' if @args.empty?
  raise Error::InvalidCollection, "Cannot find collection(s) #{@args} in config" if @collections.empty?
end

Public Instance Methods

config_from_file() click to toggle source
# File lib/pagemaster/site.rb, line 25
def config_from_file
  YAML.load_file "#{`pwd`.strip}/_config.yml"
end
generate_pages() click to toggle source
# File lib/pagemaster/site.rb, line 45
def generate_pages
  paths = @collections.map do |c|
    c.generate_pages @opts, @collections_dir, @source_dir
  end.flatten
  puts Rainbow('Done ✔').green

  paths
end
parse_collections() click to toggle source
# File lib/pagemaster/site.rb, line 31
def parse_collections
  collections_config = @config.dig 'collections'

  raise Error::InvalidConfig, "Cannot find 'collections' key in _config.yml" if collections_config.nil?

  args.map do |a|
    raise Error::InvalidArgument, "Cannot find requested collection #{a} in _config.yml" unless collections_config.key? a

    Collection.new(a, collections_config.fetch(a))
  end
end