mr_hyde 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -3
- data/Rakefile +1 -0
- data/bin/mrhyde +56 -10
- data/lib/mr_hyde/commands/build.rb +3 -2
- data/lib/mr_hyde/commands/list.rb +41 -0
- data/lib/mr_hyde/commands/new.rb +3 -9
- data/lib/mr_hyde/commands/remove.rb +2 -2
- data/lib/mr_hyde/commands/serve.rb +26 -0
- data/lib/mr_hyde/configuration.rb +17 -5
- data/lib/mr_hyde/extensions/new.rb +54 -2
- data/lib/mr_hyde/jekyll_ext/converters/scss.rb +18 -0
- data/lib/mr_hyde/jekyll_ext/jekyll.rb +16 -0
- data/lib/mr_hyde/jekyll_ext/site.rb +47 -0
- data/lib/mr_hyde/jekyll_ext/tags/include.rb +23 -0
- data/lib/mr_hyde/site.rb +234 -0
- data/lib/mr_hyde/version.rb +1 -1
- data/lib/mr_hyde.rb +125 -24
- data/lib/site_template/_config.yml +14 -0
- data/lib/site_template/_mrhyde.yml +2 -11
- data/lib/site_template/sources/_assets/_sass/_base.scss +204 -0
- data/lib/site_template/sources/_assets/_sass/_functions.scss +11 -0
- data/lib/site_template/sources/_assets/_sass/_grid.scss +544 -0
- data/lib/site_template/sources/_assets/_sass/_layout.scss +241 -0
- data/lib/site_template/sources/_assets/_sass/_newbase.scss +488 -0
- data/lib/site_template/sources/_assets/_sass/_normalize.scss +424 -0
- data/lib/site_template/sources/_assets/_sass/_syntax-highlighting.scss +67 -0
- data/lib/site_template/sources/_includes/footer.html +58 -0
- data/lib/site_template/sources/_includes/head.html +12 -0
- data/lib/site_template/sources/_includes/header.html +31 -0
- data/lib/site_template/sources/_layouts/default.html +25 -0
- data/lib/site_template/sources/_layouts/page.html +14 -0
- data/lib/site_template/sources/_layouts/post.html +15 -0
- data/lib/site_template/sources/main_site/about.md +9 -0
- data/lib/site_template/sources/main_site/css/main.scss +55 -0
- data/lib/site_template/sources/main_site/css/normalize.css +427 -0
- data/lib/site_template/sources/main_site/index.md +17 -0
- data/lib/site_template/sources/main_site/js/main.coffee +27 -0
- data/lib/subsite_template/_config.yml +2 -0
- data/lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb +27 -0
- data/lib/subsite_template/about.md +9 -0
- data/lib/subsite_template/assets/dr_jekyll_and_mr_hyde_poster.png +0 -0
- data/lib/subsite_template/feed.xml +30 -0
- data/lib/subsite_template/index.html +26 -0
- data/resources/mrhyde-logo-red.png +0 -0
- data/resources/mrhyde-logo.png +0 -0
- data/spec/build_spec.rb +26 -27
- data/spec/list_spec.rb +37 -0
- data/spec/new_spec.rb +53 -25
- data/spec/rm_spec.rb +30 -31
- metadata +38 -8
- data/lib/mr_hyde/blog.rb +0 -146
- data/lib/mr_hyde/extensions/.new.rb.swp +0 -0
- data/lib/site_template/site/css/main.css +0 -0
- data/lib/site_template/site/index.html +0 -0
- data/test/blog_test.rb +0 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 608e05d085560eb38898a27c5ffcef2dc1220c96
|
4
|
+
data.tar.gz: 98c227e6bec0118e0c7fa15bb5cbb474ba752262
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e8b2dc18dd88fd38cc98a20bbc75d4a769c970e3b14038e1739d814a03b14c11d1427b592a7a8efc10deab4cd740f27ab2a5962b36b238255dee02751effd4c
|
7
|
+
data.tar.gz: 9df017b5e3c7c9dc2b0c83c3bc964c0d62d67d76f5ba368d24615f224893662c4bc813594948c550a6f93dbfd06864563e74c291a80067c62bbb2c7037051761
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
+
<img src="https://raw.githubusercontent.com/emoriarty/mr_hyde/master/resources/mrhyde-logo.png" alt="Mr.Hyde logo" height="100"/>
|
1
2
|
# MrHyde
|
3
|
+
Mr. Hyde lets you generate and manage as many static sites as you like, all nested from a parent site, for example, you can have several nested sites sharing the same assets than the parent site and other nested sites with its own assets.
|
2
4
|
|
3
|
-
Mr. Hyde
|
4
|
-
|
5
|
-
It's based on [Jekyll](https://github.com/jekyll/jekyll), in fact Mr. Hyde wraps Jekyll to give you the possibilty of managing many sites.
|
5
|
+
All this work thanks to [Jekyll](http://jekyllrb.com) in fact Mr. Hyde wraps Jekyll so if you know Jekyll there is no much to learn about Mr. Hyde.
|
6
6
|
|
7
7
|
The current version is based on [Jekyll 2.5.3](https://github.com/jekyll/jekyll/tree/v2.5.3).
|
8
8
|
|
data/Rakefile
CHANGED
data/bin/mrhyde
CHANGED
@@ -8,6 +8,9 @@ require 'io/console'
|
|
8
8
|
require 'mercenary'
|
9
9
|
require 'mr_hyde'
|
10
10
|
require 'mr_hyde/commands/remove'
|
11
|
+
require 'mr_hyde/commands/serve'
|
12
|
+
require 'mr_hyde/commands/list'
|
13
|
+
|
11
14
|
|
12
15
|
Mercenary.program(:mrhyde) do |p|
|
13
16
|
p.version MrHyde::VERSION
|
@@ -15,9 +18,10 @@ Mercenary.program(:mrhyde) do |p|
|
|
15
18
|
p.syntax "mrhyde <subcommand>"
|
16
19
|
|
17
20
|
p.command(:new) do |c|
|
18
|
-
c.syntax "new
|
19
|
-
c.description "Creates a new Mr. Hyde site scaffold in path"
|
20
|
-
c.option "force", "--force", "Force creation even if PATH already exists"
|
21
|
+
c.syntax "new [PATH]"
|
22
|
+
c.description "Creates a new Mr. Hyde site scaffold in path or current path."
|
23
|
+
c.option "force", "--force", "Force creation even if PATH already exists."
|
24
|
+
c.option "blank", "--blank", "Creates scaffolding but with empty files."
|
21
25
|
|
22
26
|
c.action do |args, options|
|
23
27
|
MrHyde::Commands::New.process(args, options)
|
@@ -33,7 +37,7 @@ Mercenary.program(:mrhyde) do |p|
|
|
33
37
|
snew.description "Creates a new Jekyll site or sites"
|
34
38
|
|
35
39
|
snew.option "force", "--force", "Force creation even if PATH already exists"
|
36
|
-
snew.option "blank", "--blank", "Creates scaffolding
|
40
|
+
snew.option "blank", "--blank", "Creates scaffolding with empty files and no nested site"
|
37
41
|
|
38
42
|
snew.action do |args, options|
|
39
43
|
MrHyde::Commands::New.process({ :type => :site, :args => args }, options)
|
@@ -46,9 +50,9 @@ Mercenary.program(:mrhyde) do |p|
|
|
46
50
|
|
47
51
|
srm.alias(:rm)
|
48
52
|
|
49
|
-
srm.option "force", "--force", "Don't ask for remove blog"
|
50
|
-
srm.option "all", "--all", "Remove all built sites.
|
51
|
-
srm.option "full", "--full", "Remove all built and
|
53
|
+
#srm.option "force", "--force", "Don't ask for remove blog"
|
54
|
+
srm.option "all", "--all", "Remove all built sites."
|
55
|
+
srm.option "full", "--full", "Remove all built and source site/s. This option can be used with the rest of options."
|
52
56
|
|
53
57
|
srm.action do |args, options|
|
54
58
|
MrHyde::Commands::Remove.process(args, options)
|
@@ -57,17 +61,59 @@ Mercenary.program(:mrhyde) do |p|
|
|
57
61
|
|
58
62
|
site.command(:build) do |sbuild|
|
59
63
|
sbuild.syntax "build name[ name ... n] "
|
60
|
-
sbuild.description "Build the named
|
64
|
+
sbuild.description "Build the named site or sites. By default if no name is indicated then all sites will be build."
|
61
65
|
|
62
|
-
sbuild.option "all", "--all", "Build all
|
66
|
+
sbuild.option "all", "--all", "Build all nested sites"
|
63
67
|
|
64
68
|
sbuild.action do |args, options|
|
65
69
|
MrHyde::Commands::Build.process args, options
|
66
70
|
end
|
67
71
|
end
|
68
|
-
|
69
72
|
end
|
73
|
+
|
74
|
+
p.command(:serve) do |serve|
|
75
|
+
serve.syntax "serve [options]"
|
76
|
+
serve.description "Serve your site locally"
|
77
|
+
serve.alias :server
|
78
|
+
|
79
|
+
serve.option 'detach', '-B', '--detach', 'Run the server in the background (detach)'
|
80
|
+
serve.option 'port', '-P', '--port [PORT]', 'Port to listen on'
|
81
|
+
serve.option 'host', '-H', '--host [HOST]', 'Host to bind to'
|
82
|
+
serve.option 'baseurl', '-b', '--baseurl [URL]', 'Base URL'
|
83
|
+
serve.option 'skip_initial_build', '--skip-initial-build', 'Skips the initial site build which occurs before the server is started.'
|
84
|
+
|
85
|
+
serve.action do |args, options|
|
86
|
+
options["serving"] = true
|
87
|
+
options["watch"] = true unless options.key?("watch")
|
88
|
+
MrHyde::Commands::Build.process(options['all'] = 'all') if options['build']
|
89
|
+
MrHyde::Commands::Serve.process(options)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
p.command(:build) do |build|
|
95
|
+
build.syntax "build"
|
96
|
+
build.description "Build the main site"
|
97
|
+
|
98
|
+
build.option "full", "--full", "Builds main site and nested sites."
|
99
|
+
|
100
|
+
build.action do |args, options|
|
101
|
+
options['main'] = true
|
102
|
+
MrHyde::Commands::Build.process args, options
|
103
|
+
end
|
104
|
+
end
|
70
105
|
|
106
|
+
p.command(:list) do |list|
|
107
|
+
list.syntax "list"
|
108
|
+
list.description "Shows a list of all sites within sources."
|
109
|
+
|
110
|
+
list.option "built", "--built", "Shows a list of built sites."
|
111
|
+
|
112
|
+
list.action do |args, options|
|
113
|
+
MrHyde::Commands::List.process options
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
71
117
|
p.action do |args, options|
|
72
118
|
if args.empty?
|
73
119
|
puts p
|
@@ -4,7 +4,7 @@ require "mr_hyde"
|
|
4
4
|
require "mr_hyde/configuration"
|
5
5
|
require "mr_hyde/extensions/new"
|
6
6
|
require "mr_hyde/command"
|
7
|
-
require "mr_hyde/
|
7
|
+
require "mr_hyde/site"
|
8
8
|
|
9
9
|
module MrHyde
|
10
10
|
module Commands
|
@@ -12,7 +12,8 @@ module MrHyde
|
|
12
12
|
class << self
|
13
13
|
# Options
|
14
14
|
def process(args, opts = {})
|
15
|
-
MrHyde::
|
15
|
+
MrHyde::Site.build args, opts
|
16
|
+
MrHyde.logger.info "Built process is fisished, you can look the result in '#{MrHyde.destination}' folder"
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require "mr_hyde/command"
|
2
|
+
require "mr_hyde/site"
|
3
|
+
|
4
|
+
module MrHyde
|
5
|
+
module Commands
|
6
|
+
class List < MrHyde::Command
|
7
|
+
class << self
|
8
|
+
|
9
|
+
def process(opts)
|
10
|
+
MrHyde.configuration
|
11
|
+
|
12
|
+
if opts['built']
|
13
|
+
show_built_sites
|
14
|
+
else
|
15
|
+
show_sources_sites
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def show_built_sites
|
20
|
+
if File.exist? MrHyde.destination
|
21
|
+
show_list "Built sites (#{MrHyde.destination})", Site.built_list
|
22
|
+
else
|
23
|
+
MrHyde.logger.warn "Still there is not a built site"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def show_sources_sites
|
28
|
+
show_list "Source Sites (#{MrHyde.sources_sites})", Site.sources_list
|
29
|
+
end
|
30
|
+
|
31
|
+
def show_list(title, list)
|
32
|
+
MrHyde.logger.info "#{title}\n#{'-' * title.length}"
|
33
|
+
list.each do |site|
|
34
|
+
MrHyde.logger.info site
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/mr_hyde/commands/new.rb
CHANGED
@@ -6,18 +6,13 @@ require "mr_hyde"
|
|
6
6
|
require "mr_hyde/configuration"
|
7
7
|
require "mr_hyde/extensions/new"
|
8
8
|
require "mr_hyde/command"
|
9
|
-
require "mr_hyde/
|
9
|
+
require "mr_hyde/site"
|
10
10
|
|
11
11
|
module MrHyde
|
12
12
|
module Commands
|
13
13
|
class New < MrHyde::Command
|
14
14
|
class << self
|
15
|
-
|
16
|
-
# :type => what type of element we want to create [:blog|:site]
|
17
|
-
# by default it creates a new MrHyde site
|
18
|
-
# if :type is :blog then
|
19
|
-
# :name => blog's name
|
20
|
-
#
|
15
|
+
|
21
16
|
def process(args, opts = {})
|
22
17
|
case args.delete(:type)
|
23
18
|
when :site then new_site(args[:args], opts)
|
@@ -29,13 +24,12 @@ module MrHyde
|
|
29
24
|
|
30
25
|
def scaffold(args, opts)
|
31
26
|
new_site_path = MrHyde.create args, opts
|
32
|
-
MrHyde.logger.info "New Mr. Hyde Site installed in #{new_site_path}"
|
33
27
|
rescue SystemExit => se
|
34
28
|
MrHyde.logger.abort_with "Conflict:", se.message
|
35
29
|
end
|
36
30
|
|
37
31
|
def new_site(args, opts)
|
38
|
-
|
32
|
+
Site.create(args, opts)
|
39
33
|
end
|
40
34
|
end
|
41
35
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require "mr_hyde/command"
|
2
|
-
require "mr_hyde/
|
2
|
+
require "mr_hyde/site"
|
3
3
|
|
4
4
|
module MrHyde
|
5
5
|
module Commands
|
6
6
|
class Remove < MrHyde::Command
|
7
7
|
class << self
|
8
8
|
def process(args, opts = {})
|
9
|
-
|
9
|
+
Site.remove args, opts
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
|
3
|
+
require "jekyll"
|
4
|
+
require "jekyll/stevenson"
|
5
|
+
require "jekyll/commands/serve"
|
6
|
+
|
7
|
+
require "mr_hyde"
|
8
|
+
require "mr_hyde/configuration"
|
9
|
+
|
10
|
+
module MrHyde
|
11
|
+
module Commands
|
12
|
+
class Serve < MrHyde::Command
|
13
|
+
class << self
|
14
|
+
def process(opts = {})
|
15
|
+
opts = MrHyde.configuration(opts)
|
16
|
+
unless File.exist? MrHyde.destination
|
17
|
+
MrHyde.logger.abort_with "Cannot start server: There is no built content"
|
18
|
+
end
|
19
|
+
ENV['JEKYLL_LOG_LEVEL'] = 'info'
|
20
|
+
Jekyll.logger = Stevenson.new
|
21
|
+
Jekyll::Commands::Serve.process opts
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -5,12 +5,24 @@ module MrHyde
|
|
5
5
|
class Configuration < Jekyll::Configuration
|
6
6
|
|
7
7
|
DEFAULTS = {
|
8
|
-
|
9
|
-
'
|
10
|
-
'
|
11
|
-
'
|
8
|
+
# Places
|
9
|
+
'source' => Dir.pwd,
|
10
|
+
'sources' => 'sources',
|
11
|
+
'sources_sites' => '_sites',
|
12
|
+
'destination' => 'site',
|
13
|
+
'layouts' => '_layouts',
|
14
|
+
'includes' => '_includes',
|
15
|
+
'config' => '_mrhyde.yml',
|
16
|
+
'jekyll_config' => '_config.yml',
|
17
|
+
'assets' => '_assets',
|
18
|
+
'mainsite' => 'main_site',
|
19
|
+
# Serving
|
20
|
+
'detach' => false, # default to not detaching the server
|
21
|
+
'port' => '4000',
|
22
|
+
'host' => '127.0.0.1',
|
23
|
+
'baseurl' => ''
|
12
24
|
}
|
13
|
-
|
25
|
+
|
14
26
|
def read_config_files(files)
|
15
27
|
configuration = clone
|
16
28
|
|
@@ -5,6 +5,10 @@ module MrHyde
|
|
5
5
|
module Extensions
|
6
6
|
class New < Jekyll::Commands::New
|
7
7
|
class << self
|
8
|
+
def subsite_template
|
9
|
+
File.expand_path "../../subsite_template", File.dirname(__FILE__)
|
10
|
+
end
|
11
|
+
|
8
12
|
def template
|
9
13
|
site_template
|
10
14
|
end
|
@@ -13,10 +17,58 @@ module MrHyde
|
|
13
17
|
File.join template, '_config.yml'
|
14
18
|
end
|
15
19
|
|
16
|
-
def
|
17
|
-
|
20
|
+
def process(args, options = {})
|
21
|
+
raise ArgumentError.new('You must specify a path.') if args.empty?
|
22
|
+
|
23
|
+
new_site_path = File.expand_path(args.join(" "), Dir.pwd)
|
24
|
+
FileUtils.mkdir_p new_site_path
|
25
|
+
if preserve_source_location?(new_site_path, options)
|
26
|
+
Jekyll.logger.abort_with "Conflict:", "#{new_site_path} exists and is not empty."
|
27
|
+
end
|
28
|
+
|
29
|
+
if options["blank"]
|
30
|
+
create_blank_site new_site_path, options
|
31
|
+
elsif options["full"]
|
32
|
+
create_independant_sample_files args, options
|
33
|
+
else
|
34
|
+
create_sample_files new_site_path, options
|
35
|
+
|
36
|
+
File.open(File.expand_path(initialized_post_name, new_site_path), "w") do |f|
|
37
|
+
f.write(scaffold_post_content)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Jekyll.logger.info "New jekyll site installed in #{new_site_path}."
|
42
|
+
end
|
43
|
+
|
44
|
+
def create_blank_site(path, opts)
|
45
|
+
Dir.chdir(path) do
|
46
|
+
FileUtils.mkdir(%w(_posts _drafts))
|
47
|
+
FileUtils.touch("index.html")
|
48
|
+
end
|
18
49
|
end
|
19
50
|
|
51
|
+
def create_sample_files(path, opts)
|
52
|
+
FileUtils.cp_r subsite_template + '/.', path
|
53
|
+
FileUtils.cp_r subsite_template + '/_posts', path
|
54
|
+
FileUtils.rm File.expand_path(scaffold_path, path)
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_independant_sample_files(args, opts)
|
58
|
+
Jekyll::Commands::New.process args, opts
|
59
|
+
end
|
60
|
+
|
61
|
+
def scaffold_post_content
|
62
|
+
ERB.new(File.read(File.expand_path(scaffold_path, subsite_template))).result
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialized_post_name
|
66
|
+
"_posts/#{Time.now.strftime('%Y-%m-%d')}-welcome-to-mr-hyde.markdown"
|
67
|
+
end
|
68
|
+
|
69
|
+
def scaffold_path
|
70
|
+
"_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb"
|
71
|
+
end
|
20
72
|
end
|
21
73
|
end
|
22
74
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'jekyll/converters/scss'
|
2
|
+
require 'mr_hyde'
|
3
|
+
|
4
|
+
include Jekyll
|
5
|
+
|
6
|
+
module Converters
|
7
|
+
class Scss
|
8
|
+
alias_method :pristine_sass_load_paths, :sass_load_paths
|
9
|
+
|
10
|
+
def sass_load_paths
|
11
|
+
paths = pristine_sass_load_paths
|
12
|
+
common_assets = Jekyll.sanitized_path(File.join(MrHyde.sources, MrHyde.config['assets']), sass_dir)
|
13
|
+
paths << common_assets if File.directory? common_assets
|
14
|
+
|
15
|
+
paths
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'jekyll'
|
2
|
+
require 'mr_hyde'
|
3
|
+
|
4
|
+
module Jekyll
|
5
|
+
class << self
|
6
|
+
|
7
|
+
def logger
|
8
|
+
@logger ||= LogAdapter.new(Stevenson.new, (ENV['JEKYLL_LOG_LEVEL'] || :error).to_sym)
|
9
|
+
end
|
10
|
+
|
11
|
+
def logger=(writer)
|
12
|
+
@logger = LogAdapter.new(writer, (ENV['JEKYLL_LOG_LEVEL'] || :error).to_sym)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'jekyll/site'
|
2
|
+
require 'mr_hyde'
|
3
|
+
|
4
|
+
include Jekyll
|
5
|
+
|
6
|
+
class Site
|
7
|
+
alias_method :pristine_site_payload, :site_payload
|
8
|
+
|
9
|
+
# First try to find the file referenced in the jekyll folder (by default _config.yml),
|
10
|
+
# in case is not there, then try to find it in the mrhyde folder (by default _config.yml)
|
11
|
+
def in_source_dir(*paths)
|
12
|
+
file_path = paths.reduce(source) do |base, path|
|
13
|
+
Jekyll.sanitized_path(base, path)
|
14
|
+
end
|
15
|
+
unless File.exist? file_path
|
16
|
+
file_path = paths.reduce(MrHyde.source) do |base, path|
|
17
|
+
Jekyll.sanitized_path(base, path)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
file_path
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
# This patching ensures that if the site is the main, then adds to the payload
|
25
|
+
# the sites value containing the sites payloads info within sources sites.
|
26
|
+
def site_payload
|
27
|
+
payload = pristine_site_payload
|
28
|
+
|
29
|
+
if source == MrHyde.main_site
|
30
|
+
site_names = MrHyde.built_list
|
31
|
+
|
32
|
+
unless site_names.empty?
|
33
|
+
sites_payload = site_names.map do |site_name|
|
34
|
+
opts = MrHyde.site_configuration(site_name)
|
35
|
+
opts = Jekyll.configuration(opts)
|
36
|
+
site = Site.new opts
|
37
|
+
|
38
|
+
Utils.deep_merge_hashes site.site_payload['site'], { 'name' => site_name }
|
39
|
+
end
|
40
|
+
payload['site'] = Utils.deep_merge_hashes(payload['site'], { 'sites' => sites_payload })
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
payload
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'jekyll/tags/include'
|
2
|
+
require 'mr_hyde'
|
3
|
+
|
4
|
+
include Jekyll
|
5
|
+
|
6
|
+
module Tags
|
7
|
+
class IncludeTag
|
8
|
+
=begin
|
9
|
+
def tag_includes_dir
|
10
|
+
File.join MrHyde.sources, MrHyde.config['includes']
|
11
|
+
=end
|
12
|
+
|
13
|
+
def resolved_includes_dir(context)
|
14
|
+
path = File.join(File.realpath(context.registers[:site].source), @includes_dir)
|
15
|
+
|
16
|
+
unless File.directory? path
|
17
|
+
path = File.join(File.realpath(MrHyde.source), MrHyde.sources, @includes_dir)
|
18
|
+
end
|
19
|
+
|
20
|
+
path
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|