module MrHyde
Constants
- VERSION
Attributes
config[R]
configuration[RW]
source[R]
Public Class Methods
build(opts = {})
click to toggle source
# File lib/mr_hyde.rb, line 128 def build(opts = {}) Commands::Build.process opts end
built_list()
click to toggle source
# File lib/mr_hyde.rb, line 132 def built_list Site.built_list end
configure() { |configuration| ... }
click to toggle source
OBSOLETE
# File lib/mr_hyde.rb, line 25 def configure self.configuration ||= Configuration.new yield(configuration) if block_given? end
create(args = '.', opts = {})
click to toggle source
Creates the folders for the sources and destination, by default will be created under root folder. Copies the default _config.yml for all sites, in root folder.
Throws a SystemExit exception
# File lib/mr_hyde.rb, line 112 def create(args = '.', opts = {}) args = [args] if args.kind_of? String new_site_path = File.expand_path(args.join(" "), Dir.pwd) FileUtils.mkdir_p new_site_path if preserve_source_location?(new_site_path, opts) raise SystemExit.new "#{new_site_path} exists and is not empty." end if opts['blank'] create_blank_site new_site_path else create_sample_files new_site_path end new_site_path end
destination()
click to toggle source
# File lib/mr_hyde.rb, line 87 def destination config['destination'] end
draft_list()
click to toggle source
# File lib/mr_hyde.rb, line 140 def draft_list Site.draft_list end
has_jekyll_config?()
click to toggle source
# File lib/mr_hyde.rb, line 79 def has_jekyll_config? File.exist? File.expand_path(File.join(source, @config['config'])) end
jekyll_defaults(site_name = nil)
click to toggle source
If no site name is passed in then the configuration defaults are set for the main site
# File lib/mr_hyde.rb, line 65 def jekyll_defaults(site_name = nil) conf = if site_name { 'baseurl' => '/' + site_name, 'destination' => File.join(MrHyde.destination, site_name), 'source' => Pathname.pwd.join(MrHyde.sources_sites, site_name).to_s } else site_name = config['mainsite'] { 'source' => Pathname.pwd.join(site_name).to_s, 'destination' => File.join(MrHyde.destination).to_s } end conf.merge({ 'layouts_dir' => File.join(config['layouts_dir']) }) end
logger()
click to toggle source
Public: Fetch the logger instance for this Jekyll
process.
Returns the LogAdapter instance.
# File lib/mr_hyde.rb, line 98 def logger @logger ||= LogAdapter.new(Stevenson.new, (ENV['MRHYDE_LOG_LEVEL'] || :info).to_sym) end
logger=(writer)
click to toggle source
# File lib/mr_hyde.rb, line 102 def logger=(writer) @logger = LogAdapter.new(writer) end
main_site()
click to toggle source
# File lib/mr_hyde.rb, line 91 def main_site File.join source, config['mainsite'] end
main_site_configuration(opts = nil)
click to toggle source
# File lib/mr_hyde.rb, line 40 def main_site_configuration(opts = nil) # The order is important here, the last one overrides the previous ones site_configuration nil, opts end
site_configuration(site_name = nil, opts_args = nil)
click to toggle source
Jekyll
per site configuration This method gets the config files which must be read from jekyll. _config.yml < sites/site/_config.yml < override
# File lib/mr_hyde.rb, line 49 def site_configuration(site_name = nil, opts_args = nil) clone_opts_args = opts_args.clone if opts_args jekyll_config = jekyll_defaults(site_name) site_name ||= config['mainsite'] opts = {} # The order is important here, the last one overrides the previous one opts['config'] = [] opts['config'] << Jekyll.sanitized_path(source, config['config']) if has_jekyll_config? opts['config'] << Site.custom_config(site_name, config) if Site.has_custom_config?(site_name, config) opts['config'].concat(Configuration[Configuration::DEFAULTS].config_files(clone_opts_args)) if clone_opts_args and clone_opts_args['config'] jekyll_config.merge(opts) end
sources_list()
click to toggle source
# File lib/mr_hyde.rb, line 136 def sources_list Site.sources_list end
sources_sites()
click to toggle source
# File lib/mr_hyde.rb, line 83 def sources_sites File.join config['sources_sites'] end
Private Class Methods
create_blank_site(path)
click to toggle source
# File lib/mr_hyde.rb, line 163 def create_blank_site(path) Dir.chdir(path) do FileUtils.mkdir %w(_layouts _includes _site) Dir.chdir(File.join('_site')) do FileUtils.touch 'index.html' end end MrHyde.logger.info "New Mr. Hyde Site installed in #{path}" end
create_sample_files(path)
click to toggle source
# File lib/mr_hyde.rb, line 150 def create_sample_files(path) FileUtils.cp_r site_template + '/.', path MrHyde.logger.info "New Mr. Hyde Site installed in #{path}" # Copying the original _config.yml from jekyll to mrhyde folder # jekyll_config = MrHyde::Extensions::New.default_config_file # FileUtils.copy_file(jekyll_config, File.join(path, File.basename(jekyll_config))) # Creating the default jekyll site in mrhyde Dir.chdir(path) do Site.create ['sample-site'], { 'force' => 'force' } Site.create ['sample-full-site'], { 'full' => 'full', 'force' => 'force' } end end
preserve_source_location?(path, opts)
click to toggle source
# File lib/mr_hyde.rb, line 146 def preserve_source_location?(path, opts) !opts["force"] && !Dir["#{path}/**/*"].empty? end
private_configuration(override = Hash.new, defaults)
click to toggle source
# File lib/mr_hyde.rb, line 177 def private_configuration(override = Hash.new, defaults) config = Configuration[defaults] override = Configuration[override].stringify_keys unless override.delete('skip_config_files') override['config'] ||= config['config'] config = config.read_config_files(config.config_files(override)) end # Merge DEFAULTS < _config.yml < override config = Jekyll::Utils.deep_merge_hashes(config, override).stringify_keys set_timezone(config['timezone']) if config['timezone'] config end
site_template()
click to toggle source
# File lib/mr_hyde.rb, line 173 def site_template File.expand_path("./site_template", File.dirname(__FILE__)) end