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

Jekyll Configuration

# 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