mr_hyde 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|