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