129 lines
3.2 KiB
Ruby
129 lines
3.2 KiB
Ruby
$:.unshift File.dirname(__FILE__) # For use/testing when no gem is installed
|
|
|
|
# Require all of the Ruby files in the given directory.
|
|
#
|
|
# path - The String relative path from here to the directory.
|
|
#
|
|
# Returns nothing.
|
|
def require_all(path)
|
|
glob = File.join(File.dirname(__FILE__), path, '*.rb')
|
|
Dir[glob].each do |f|
|
|
require f
|
|
end
|
|
end
|
|
|
|
# rubygems
|
|
require 'rubygems'
|
|
|
|
# stdlib
|
|
require 'fileutils'
|
|
require 'time'
|
|
require 'safe_yaml/load'
|
|
require 'English'
|
|
require 'pathname'
|
|
|
|
# 3rd party
|
|
require 'liquid'
|
|
require 'maruku'
|
|
require 'colorator'
|
|
require 'toml'
|
|
|
|
# internal requires
|
|
require 'jekyll/version'
|
|
require 'jekyll/utils'
|
|
require 'jekyll/stevenson'
|
|
require 'jekyll/deprecator'
|
|
require 'jekyll/configuration'
|
|
require 'jekyll/document'
|
|
require 'jekyll/collection'
|
|
require 'jekyll/plugin_manager'
|
|
require 'jekyll/frontmatter_defaults'
|
|
require 'jekyll/site'
|
|
require 'jekyll/convertible'
|
|
require 'jekyll/url'
|
|
require 'jekyll/layout'
|
|
require 'jekyll/page'
|
|
require 'jekyll/post'
|
|
require 'jekyll/excerpt'
|
|
require 'jekyll/draft'
|
|
require 'jekyll/filters'
|
|
require 'jekyll/static_file'
|
|
require 'jekyll/errors'
|
|
require 'jekyll/related_posts'
|
|
require 'jekyll/cleaner'
|
|
require 'jekyll/entry_filter'
|
|
require 'jekyll/layout_reader'
|
|
require 'jekyll/publisher'
|
|
require 'jekyll/renderer'
|
|
|
|
# extensions
|
|
require 'jekyll/plugin'
|
|
require 'jekyll/converter'
|
|
require 'jekyll/generator'
|
|
require 'jekyll/command'
|
|
require 'jekyll/liquid_extensions'
|
|
|
|
require_all 'jekyll/commands'
|
|
require_all 'jekyll/converters'
|
|
require_all 'jekyll/converters/markdown'
|
|
require_all 'jekyll/generators'
|
|
require_all 'jekyll/tags'
|
|
|
|
# plugins
|
|
require 'jekyll-coffeescript'
|
|
require 'jekyll-sass-converter'
|
|
|
|
SafeYAML::OPTIONS[:suppress_warnings] = true
|
|
|
|
module Jekyll
|
|
# Public: Generate a Jekyll configuration Hash by merging the default
|
|
# options with anything in _config.yml, and adding the given options on top.
|
|
#
|
|
# override - A Hash of config directives that override any options in both
|
|
# the defaults and the config file. See Jekyll::Configuration::DEFAULTS for a
|
|
# list of option names and their defaults.
|
|
#
|
|
# Returns the final configuration Hash.
|
|
def self.configuration(override)
|
|
config = Configuration[Configuration::DEFAULTS]
|
|
override = Configuration[override].stringify_keys
|
|
config = config.read_config_files(config.config_files(override))
|
|
|
|
# Merge DEFAULTS < _config.yml < override
|
|
config = Utils.deep_merge_hashes(config, override).stringify_keys
|
|
set_timezone(config['timezone']) if config['timezone']
|
|
|
|
config
|
|
end
|
|
|
|
# Static: Set the TZ environment variable to use the timezone specified
|
|
#
|
|
# timezone - the IANA Time Zone
|
|
#
|
|
# Returns nothing
|
|
def self.set_timezone(timezone)
|
|
ENV['TZ'] = timezone
|
|
end
|
|
|
|
def self.logger
|
|
@logger ||= Stevenson.new
|
|
end
|
|
|
|
# Public: File system root
|
|
#
|
|
# Returns the root of the filesystem as a Pathname
|
|
def self.fs_root
|
|
@fs_root ||= "/"
|
|
end
|
|
|
|
def self.sanitized_path(base_directory, questionable_path)
|
|
clean_path = File.expand_path(questionable_path, fs_root)
|
|
clean_path.gsub!(/\A\w\:\//, '/')
|
|
unless clean_path.start_with?(base_directory)
|
|
File.join(base_directory, clean_path)
|
|
else
|
|
clean_path
|
|
end
|
|
end
|
|
end
|