mr_hyde 0.2.1 → 0.3.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile +0 -2
  4. data/README.md +7 -7
  5. data/Rakefile +25 -6
  6. data/lib/mr_hyde.rb +7 -15
  7. data/lib/mr_hyde/commands/remove.rb +2 -2
  8. data/lib/mr_hyde/configuration.rb +4 -13
  9. data/lib/mr_hyde/extensions/new.rb +3 -2
  10. data/lib/mr_hyde/jekyll_ext/converters/scss.rb +1 -1
  11. data/lib/mr_hyde/jekyll_ext/site.rb +1 -0
  12. data/lib/mr_hyde/jekyll_ext/tags/include.rb +2 -2
  13. data/lib/mr_hyde/site.rb +41 -42
  14. data/lib/mr_hyde/version.rb +1 -1
  15. data/lib/site_template/{sources/_assets → _assets}/_sass/_base.scss +0 -0
  16. data/lib/site_template/{sources/_assets → _assets}/_sass/_functions.scss +0 -0
  17. data/lib/site_template/{sources/_assets → _assets}/_sass/_grid.scss +0 -0
  18. data/lib/site_template/{sources/_assets → _assets}/_sass/_layout.scss +0 -0
  19. data/lib/site_template/{sources/_assets → _assets}/_sass/_newbase.scss +0 -0
  20. data/lib/site_template/{sources/_assets → _assets}/_sass/_normalize.scss +0 -0
  21. data/lib/site_template/{sources/_assets → _assets}/_sass/_syntax-highlighting.scss +0 -0
  22. data/lib/site_template/_config.yml +1 -1
  23. data/lib/site_template/{sources/_includes → _includes}/footer.html +0 -0
  24. data/lib/site_template/{sources/_includes → _includes}/head.html +0 -0
  25. data/lib/site_template/{sources/_includes → _includes}/header.html +0 -0
  26. data/lib/site_template/{sources/_layouts → _layouts}/default.html +0 -2
  27. data/lib/site_template/{sources/_layouts → _layouts}/page.html +0 -0
  28. data/lib/site_template/{sources/_layouts → _layouts}/post.html +0 -0
  29. data/lib/site_template/_mrhyde.yml +1 -1
  30. data/lib/site_template/_site/about.md +9 -0
  31. data/lib/site_template/{sources/main_site → _site}/css/main.scss +0 -0
  32. data/lib/site_template/{sources/main_site → _site}/css/normalize.css +0 -0
  33. data/lib/site_template/{sources/main_site → _site}/index.md +3 -1
  34. data/lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb +2 -2
  35. data/lib/subsite_template/about.md +1 -1
  36. data/mr_hyde.gemspec +7 -3
  37. data/spec/build_spec.rb +21 -4
  38. data/spec/list_spec.rb +0 -1
  39. data/spec/new_spec.rb +25 -17
  40. data/spec/rm_spec.rb +11 -12
  41. data/test/configuraton_test.rb +16 -0
  42. metadata +101 -32
  43. data/lib/site_template/sources/main_site/about.md +0 -9
  44. data/lib/site_template/sources/main_site/js/main.coffee +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d579e8f6091be07c9c6fd4ac4093a4b0f4996358
4
- data.tar.gz: 169be6e63526f66e802575c7985fe66d136500b9
3
+ metadata.gz: be4ff45145b0410676993b7b61ad2c16d57a359e
4
+ data.tar.gz: 9f39ac565f3179c71730618c3315ba210d2da606
5
5
  SHA512:
6
- metadata.gz: 4c216b1cbf271516184c0f09abac6a477524f86d96f2e1075395fb00126b9ba7d0042b677a3589d44faa937d33f84b0bf2c97536ad3b5f96fdd2025880545d92
7
- data.tar.gz: bd02909e7c8d1fa097775ef1cfa1300fa725725ee3c2e5d7299924f30ffdcad4cf19965d9f1c3882b17280609fc4e113508ce97d51d87074f2fc44d41309188b
6
+ metadata.gz: 582235b101b3d514d1c60e197d7b29a7e508d96fc1f646289b04265dd77651ba95e9736f4865f69652dc42aea8d0815856fa261771c5cc566099294931498d31
7
+ data.tar.gz: d0851cc6dabc5528c0f61b8c6f6ef1a8d0cf4d680901f2e0423dcb223107a25593249c481866454dad5135d364c140d2c4b257b5cacedc297c9267317f36b273
data/.gitignore CHANGED
@@ -14,3 +14,4 @@
14
14
  mkmf.log
15
15
  .sass-cache/
16
16
  .DS_Store
17
+ .byebug_history
data/Gemfile CHANGED
@@ -3,5 +3,3 @@ source 'https://rubygems.org'
3
3
  # Specify your gem's dependencies in mr_hyde.gemspec
4
4
  gemspec
5
5
 
6
- gem 'jekyll', '2.5.3'
7
- gem 'mercenary', '0.3.5'
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  <img src="https://raw.githubusercontent.com/emoriarty/mr_hyde/master/resources/mrhyde-logo.png" alt="Mr.Hyde logo" height="100"/>
2
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.
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 parent site and other nested sites with its own assets.
4
4
 
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.
5
+ All this works thanks to [Jekyll](http://jekyllrb.com) tool, in fact Mr. Hyde wraps Jekyll so if you know Jekyll there is no much to learn about Mr. Hyde.
6
6
 
7
- The current version is based on [Jekyll 2.5.3](https://github.com/jekyll/jekyll/tree/v2.5.3).
7
+ The current version is based on [Jekyll 3.1.1](https://github.com/jekyll/jekyll/tree/v3.1.1).
8
8
 
9
9
  ## Installation
10
10
 
@@ -28,15 +28,15 @@ $ gem install mr_hyde
28
28
 
29
29
  ## Usage
30
30
 
31
- In order to use Mr. Hyde the first thing you must do is creating the Mr. Hyde rootl folder with the next command:
31
+ In order to use Mr. Hyde the first thing you must do is creating the Mr. Hyde root folder using the next command:
32
32
 
33
33
  ```bash
34
- $ mrhyde new [PATH]
34
+ $ mrhyde new [NAME]
35
35
  ```
36
36
 
37
- The previuos command creates the basic structure folder in the passed in PATH or in the same folder if no PATH given.
37
+ The previuos command creates the basic structure folder within the new folder NAME, in case the name is not provided then the same folder will be used.
38
38
 
39
- Once created get in the Mr. Hyde root folder and you can execute the next commands:
39
+ Once created cd the Mr. Hyde root folder (or the same if no NAME was given) and you can execute the next commands:
40
40
 
41
41
  ```bash
42
42
  $ cd PATH
data/Rakefile CHANGED
@@ -4,10 +4,29 @@ require "rake/testtask"
4
4
  ENV["JEKYLL_LOG_LEVEL"] = "error"
5
5
  ENV["MRHYDE_LOG_LEVEL"] = "error"
6
6
 
7
- Rake::TestTask.new do |t|
8
- t.libs.push "lib"
9
- t.test_files = FileList["spec/*_spec.rb"]
10
- #t.test_files = FileList["test/*_test.rb"]
11
- #t.pattern = "test/*_test.rb"
12
- t.verbose = true
7
+ task :test_task do
8
+ Rake::TestTask.new do |t|
9
+ t.libs.push "lib"
10
+ t.test_files = FileList["spec/*_spec.rb"]
11
+ #t.pattern = "test/*_test.rb"
12
+ #t.verbose = true
13
+ end
14
+ end
15
+
16
+ task :unit_task do
17
+ Rake::TestTask.new("unit") do |t|
18
+ t.libs.push "lib"
19
+ t.test_files = FileList["test/*_test.rb"]
20
+ end
21
+ end
22
+
23
+
24
+ task :test do
25
+ Rake::Task["unit_task"].clear
26
+ Rake::Task["test_task"].invoke
27
+ end
28
+
29
+ task :unit do
30
+ Rake::Task["test_task"].clear
31
+ Rake::Task["unit_task"].invoke
13
32
  end
data/lib/mr_hyde.rb CHANGED
@@ -43,7 +43,7 @@ module MrHyde
43
43
 
44
44
  # Jekyll per site configuration
45
45
  # This method gets the config files which must be read from jekyll.
46
- # _config.yml < sources/sites/site/_config.yml < override
46
+ # _config.yml < sites/site/_config.yml < override
47
47
  #
48
48
  def site_configuration(site_name = nil)
49
49
  jekyll_config = jekyll_defaults(site_name)
@@ -66,23 +66,19 @@ module MrHyde
66
66
  'source' => File.join(MrHyde.sources_sites, site_name) }
67
67
  else
68
68
  site_name = config['mainsite']
69
- { 'source' => File.join(sources, site_name),
69
+ { 'source' => File.join(site_name),
70
70
  'destination' => File.join(MrHyde.destination) }
71
71
  end
72
72
 
73
- conf.merge({ 'layouts' => File.join(MrHyde.sources, config['layouts']) })
73
+ conf.merge({ 'layouts_dir' => File.join(config['layouts_dir']) })
74
74
  end
75
75
 
76
76
  def has_jekyll_config?
77
77
  File.exist? File.expand_path(File.join(source, @config['jekyll_config']))
78
78
  end
79
-
80
- def sources
81
- config['sources']
82
- end
83
79
 
84
80
  def sources_sites
85
- File.join config['sources'], config['sources_sites']
81
+ File.join config['sources_sites']
86
82
  end
87
83
 
88
84
  def destination
@@ -90,7 +86,7 @@ module MrHyde
90
86
  end
91
87
 
92
88
  def main_site
93
- File.join source, sources, config['mainsite']
89
+ File.join source, config['mainsite']
94
90
  end
95
91
 
96
92
  # Public: Fetch the logger instance for this Jekyll process.
@@ -156,7 +152,6 @@ module MrHyde
156
152
  # FileUtils.copy_file(jekyll_config, File.join(path, File.basename(jekyll_config)))
157
153
  # Creating the default jekyll site in mrhyde
158
154
  Dir.chdir(path) do
159
- FileUtils.mkdir(%w(sources)) unless File.exist? 'sources'
160
155
  Site.create ['sample-site'], { 'force' => 'force' }
161
156
  Site.create ['sample-full-site'], { 'full' => 'full', 'force' => 'force' }
162
157
  end
@@ -164,11 +159,8 @@ module MrHyde
164
159
 
165
160
  def create_blank_site(path)
166
161
  Dir.chdir(path) do
167
- FileUtils.mkdir('sources')
168
- Dir.chdir('sources') do
169
- FileUtils.mkdir %w(_layouts _includes main_site)
170
- end
171
- Dir.chdir(File.join('sources', 'main_site')) do
162
+ FileUtils.mkdir %w(_layouts _includes _site)
163
+ Dir.chdir(File.join('_site')) do
172
164
  FileUtils.touch 'index.html'
173
165
  end
174
166
  end
@@ -6,8 +6,8 @@ module MrHyde
6
6
  class Remove < MrHyde::Command
7
7
  class << self
8
8
  def process(args, opts = {})
9
- if args.length == 0
10
- MrHyde.logger.warn("A site name must be typed. You can see a list of nested sites using the 'list' command.")
9
+ if args.length == 0 and not opts['all']
10
+ MrHyde.logger.warn("A site name must be typed. You can see a list of nested sites using the 'list' command.")
11
11
  else
12
12
  Site.remove args, opts
13
13
  end
@@ -3,25 +3,16 @@ require "jekyll/configuration"
3
3
  module MrHyde
4
4
 
5
5
  class Configuration < Jekyll::Configuration
6
-
7
- DEFAULTS = {
6
+ DEFAULTS.merge!({
8
7
  # Places
9
8
  'source' => Dir.pwd,
10
- 'sources' => 'sources',
11
- 'sources_sites' => '_sites',
12
9
  'destination' => 'site',
13
- 'layouts' => '_layouts',
14
- 'includes' => '_includes',
10
+ 'sources_sites' => '_sites',
15
11
  'config' => '_mrhyde.yml',
16
12
  'jekyll_config' => '_config.yml',
17
13
  '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' => ''
24
- }
14
+ 'mainsite' => '_site'
15
+ })
25
16
 
26
17
  def read_config_files(files)
27
18
  configuration = clone
@@ -28,6 +28,7 @@ module MrHyde
28
28
 
29
29
  if options["blank"]
30
30
  create_blank_site new_site_path, options
31
+ Jekyll.logger.info "New jekyll site installed in #{new_site_path}."
31
32
  elsif options["full"]
32
33
  create_independant_sample_files args, options
33
34
  else
@@ -36,9 +37,9 @@ module MrHyde
36
37
  File.open(File.expand_path(initialized_post_name, new_site_path), "w") do |f|
37
38
  f.write(scaffold_post_content)
38
39
  end
40
+ Jekyll.logger.info "New jekyll site installed in #{new_site_path}."
39
41
  end
40
42
 
41
- Jekyll.logger.info "New jekyll site installed in #{new_site_path}."
42
43
  end
43
44
 
44
45
  def create_blank_site(path, opts)
@@ -69,7 +70,7 @@ module MrHyde
69
70
  def scaffold_path
70
71
  "_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb"
71
72
  end
72
- end
73
+ end
73
74
  end
74
75
  end
75
76
  end
@@ -9,7 +9,7 @@ module Converters
9
9
 
10
10
  def sass_load_paths
11
11
  paths = pristine_sass_load_paths
12
- common_assets = Jekyll.sanitized_path(File.join(MrHyde.sources, MrHyde.config['assets']), sass_dir)
12
+ common_assets = Jekyll.sanitized_path(File.join(MrHyde.config['assets']), sass_dir)
13
13
  paths << common_assets if File.directory? common_assets
14
14
 
15
15
  paths
@@ -32,6 +32,7 @@ class Site
32
32
  unless site_names.empty?
33
33
  sites_payload = site_names.map do |site_name|
34
34
  opts = MrHyde.site_configuration(site_name)
35
+ opts['quiet'] = true
35
36
  opts = Jekyll.configuration(opts)
36
37
  site = Site.new opts
37
38
 
@@ -7,14 +7,14 @@ module Tags
7
7
  class IncludeTag
8
8
  =begin
9
9
  def tag_includes_dir
10
- File.join MrHyde.sources, MrHyde.config['includes']
10
+ File.join MrHyde.config['includes']
11
11
  =end
12
12
 
13
13
  def resolved_includes_dir(context)
14
14
  path = File.join(File.realpath(context.registers[:site].source), @includes_dir)
15
15
 
16
16
  unless File.directory? path
17
- path = File.join(File.realpath(MrHyde.source), MrHyde.sources, @includes_dir)
17
+ path = File.join(File.realpath(MrHyde.source), @includes_dir)
18
18
  end
19
19
 
20
20
  path
data/lib/mr_hyde/site.rb CHANGED
@@ -9,7 +9,7 @@ module MrHyde
9
9
  def init(args, opts)
10
10
  opts = MrHyde.configuration(opts)
11
11
  @source = if opts['main']
12
- File.join MrHyde.source, MrHyde.sources
12
+ File.join MrHyde.source
13
13
  else
14
14
  File.join MrHyde.source, MrHyde.sources_sites
15
15
  end
@@ -55,20 +55,17 @@ module MrHyde
55
55
  # 'all' => 'all' Removes all built sites
56
56
  # 'full' => 'full' Removes built and source site/s
57
57
  #
58
- def remove(args, opts = {})
58
+ def remove(args = nil, opts = {})
59
59
  init(args, opts)
60
60
 
61
- if opts['all']
61
+ if not args.nil? and not args.empty?
62
+ remove_sites args, opts
63
+ elsif opts['all']
62
64
  list(MrHyde.sources_sites).each do |sm|
63
65
  remove_site sm, opts
64
66
  end
65
- elsif args.kind_of? Array
66
- args.each do |sm|
67
- remove_site sm, opts
68
- end
69
- else
70
- remove_site args, opts
71
67
  end
68
+ build
72
69
  rescue Exception => e
73
70
  MrHyde.logger.error "cannot remove the site: #{e}"
74
71
  end
@@ -83,35 +80,21 @@ module MrHyde
83
80
  # Hash
84
81
  # 'all' => 'all' Builds all built sites
85
82
  #
86
- def build(args, opts = {})
83
+ def build(args = nil, opts = {})
87
84
  init(args, opts)
88
85
 
89
- unless opts.delete('main')
90
- # If there is no main site then it is built
91
- build_main_site(opts) unless File.exist? MrHyde.destination
86
+ # If there is no destinarion folder then will be created
87
+ mk_destination(opts) unless File.exist? MrHyde.destination
92
88
 
93
- if opts["all"]
94
- build_sites sources_list, opts
95
- elsif args.kind_of? Array
96
- build_sites args, opts
97
- elsif args.kind_of? String
98
- build_site args, opts
99
- end
100
- else
101
- if opts["all"]
102
- build_main_site(opts)
103
- build_sites sources_list, opts
104
- else
105
- # Fetching the list of built sites to rebuild again once the main site has been built
106
- if File.exist? MrHyde.destination
107
- nested_sites = built_list
108
- build_main_site(opts)
109
- build_sites nested_sites, opts
110
- else
111
- build_main_site(opts)
112
- end
113
- end
89
+ if not args.nil? and not args.empty?
90
+ build_sites args, opts
91
+ elsif opts["all"]
92
+ # Build all sites and after build/rebuild the main site
93
+ # so all global variables referent to nested site will be loaded
94
+ build_sites sources_list, opts
114
95
  end
96
+ # By default the main site is built
97
+ build_main_site(opts)
115
98
  rescue Exception => e
116
99
  MrHyde.logger.error "cannot build site: #{e}"
117
100
  MrHyde.logger.error e.backtrace
@@ -171,7 +154,7 @@ module MrHyde
171
154
  end
172
155
 
173
156
  def is_main?(name)
174
- File.directory? File.join(MrHyde.sources, name)
157
+ File.directory? File.join(name)
175
158
  end
176
159
 
177
160
  private
@@ -179,24 +162,29 @@ module MrHyde
179
162
  def create_site(args, opts = {})
180
163
  begin
181
164
  if args.kind_of? Array
182
- args.each do |name|
183
- raise() if is_main(args)
184
- end
165
+ args.each{ |name| raise() if is_main(name) }
185
166
  else
186
167
  raise() if is_main?(args)
187
168
  end
188
- rescue Exception => e
169
+ rescue
189
170
  raise ArgumentError, 'The site\'s name cannot be the same than the main site name'
190
171
  end
191
172
 
192
173
  MrHyde::Extensions::New.process [File.join(MrHyde.sources_sites, args)], opts
193
- MrHyde.logger.info "New #{args} created in #{MrHyde.sources_sites}"
194
174
  exist? args, opts
195
175
  end
196
176
 
177
+ def remove_sites(args, opts = {})
178
+ args = [args] if args.kind_of? String
179
+
180
+ args.each do |sm|
181
+ remove_site sm, opts
182
+ end
183
+ end
184
+
197
185
  def remove_site(name, opts = {})
198
- # OBSOLOTE
199
- # This checking is not mandatory, never can be removed form here the main site
186
+ # OBSOLETE
187
+ # This checking is not mandatory, never can be removed from here the main site
200
188
  if is_main?(name)
201
189
  MrHyde.logger.warning "Cannot remove main site: #{name}"
202
190
  return
@@ -213,6 +201,8 @@ module MrHyde
213
201
  end
214
202
 
215
203
  def build_sites(site_names, opts)
204
+ site_names = [site_names] if site_names.kind_of? String
205
+
216
206
  site_names.each do |sn|
217
207
  begin
218
208
  build_site(sn, opts)
@@ -231,9 +221,18 @@ module MrHyde
231
221
 
232
222
  def build_main_site(opts)
233
223
  conf = MrHyde.main_site_configuration
224
+ keep_built_sites conf
234
225
  Jekyll::Commands::Build.process conf
235
226
  end
236
227
 
228
+ def keep_built_sites(conf)
229
+ conf['keep_files'] = built_list
230
+ end
231
+
232
+ def mk_destination(opts)
233
+ conf = MrHyde.main_site_configuration
234
+ Dir.mkdir conf["destination"]
235
+ end
237
236
 
238
237
  def check_site(site_name, method, message)
239
238
  if not send(method, site_name)
@@ -1,3 +1,3 @@
1
1
  module MrHyde
2
- VERSION = "0.2.1"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -8,7 +8,7 @@ description: > # this means to ignore newlines until "baseurl:"
8
8
  line in _config.yml. It will appear in your document head meta (for
9
9
  Google search results) and in your feed.xml site description.
10
10
  baseurl: "" # the subpath of your site, e.g. /blog/
11
- mainsite: "main_site" # this is the name of the root default site, where all sites will be nested
11
+ mainsite: "_site" # this is the name of the root default site, where all sites will be nested
12
12
  url: "http://yourdomain.com" # the base hostname & protocol for your site
13
13
  twitter_username: mrhyderb
14
14
  github_username: mrhyde
@@ -18,8 +18,6 @@
18
18
  </section>
19
19
 
20
20
  {% include footer.html %}
21
-
22
- <script src="/js/main.js"></script>
23
21
  </body>
24
22
 
25
23
  </html>
@@ -1,2 +1,2 @@
1
1
  # Mr. Hyde settings
2
- mainsite: "main_site" # this is the name of the root default site, where all sites will be nested
2
+ mainsite: "_site" # this is the name of the root default site, where all sites will be nested
@@ -0,0 +1,9 @@
1
+ ---
2
+ layout: page
3
+ title: About
4
+ permalink: /about/
5
+ id: about
6
+ ---
7
+
8
+ This is the base Mr. Hyde theme. You can customize it modifying the styles assets include in `root-folder/_assets/_sass` or just include you css files in the sites folder of your Mr. Hyde project and reference them in your html header.
9
+
@@ -5,7 +5,9 @@ permalink: /
5
5
  id: home
6
6
  ---
7
7
 
8
- Welcome to your first Mr. Hyde site. This page is a sample that is created by default when you make a new Mr. Hyde site, you can use it as a scaffold for your site or creqte a blank one. You can find this file in `root-folder/sources/welcome/index.html`. Below you can see a list of sample subsites created at the same time than the parent, click on them to know more about subsites. All sites are created using [Jekyll](http://jekyllrb.com) including the main site. You can read more about Mr. Hyde usage documentation at [Mr. Hyde wiki](https://github.com/emoriarty/mr_hyde/wiki).
8
+ Welcome to your first Mr. Hyde site. This page is a sample created by default when you make a new Mr. Hyde site, you can use it as a scaffold for your site or create a blank one (look options). You can find this file in `root-folder/site/index.html` but if you like to modify this file then open `root-folder/_site/index.md`.
9
+ Below you can see a list of sample subsites, click on them to know more about subsites.
10
+ All sites are created using [Jekyll](http://jekyllrb.com) including the main site. You can read more about Mr. Hyde usage documentation at [Mr. Hyde wiki](https://github.com/emoriarty/mr_hyde/wiki).
9
11
 
10
12
  You can find the source code for the Mr. Hyde at: <a href="https://github.com/emoriarty/mr_hyde/">https://github.com/emoriarty/mr_hyde</a>.
11
13
 
@@ -1,12 +1,12 @@
1
1
  ---
2
2
  layout: post
3
3
  title: "Welcome to Mr. Hyde!"
4
- date: <%= Time.now.strftime('%Y-%m-%d %H:%M:%S') %>
4
+ date: <%= Time.now.strftime('%Y-%m-%d %H:%M:%S %z') %>
5
5
  categories: mrhyde jekyll update
6
6
  ---
7
7
  ![Dr. Jekyll and Mr. Hyde]({{ site.baseurl }}/assets/dr_jekyll_and_mr_hyde_poster.jpg)
8
8
 
9
- You’ll find this post in your `sources/_sites/sample-site/_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `mrhyde build`, which build your site, and after `mrhyde serve`, which launches a web server.
9
+ You’ll find this post in your `root-folder/_sites/sample-site/_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `mrhyde build`, which build your site, and after `mrhyde serve`, which launches a web server.
10
10
 
11
11
  To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
12
12
 
@@ -5,5 +5,5 @@ permalink: /about/
5
5
  id: about
6
6
  ---
7
7
 
8
- This is the base Mr. Hyde theme. You can customize it modifying the styles assets include in `sources/_assets/_sass` or just include you css files in the sites folder of your Mr. Hyde project and reference them in your html header.
8
+ This is the base Mr. Hyde theme. You can customize it modifying the styles assets include in `root-fodler/_assets/_sass` or just include you css files in the sites folder of your Mr. Hyde project and reference them in your html header.
9
9
 
data/mr_hyde.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["enrique.arias.cervero@gmail.com"]
11
11
  spec.summary = %q{Mr. Hyde lets you generate and manage as many sites as you want.}
12
12
  spec.description = %q{Mr. Hyde lets you generate and manage as many sites as you want, something similar like Medium. It's based on Jekyll.}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/emoriarty/mr_hyde"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -20,7 +20,11 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "minitest", "~> 5.4", ">= 5.4.3"
23
+ spec.add_development_dependency "minitest", "~> 5.8", ">= 5.8.4"
24
+ spec.add_development_dependency "minitest-reporters", "~> 1.1", ">= 1.1.7"
25
+ spec.add_development_dependency "pry"
26
+ spec.add_development_dependency "byebug", "~> 8.2.2"
24
27
 
25
- spec.add_runtime_dependency "jekyll", "~> 2.5", "2.5.3"
28
+ spec.add_runtime_dependency "jekyll", "~> 3.1", ">=3.1.1"
29
+ spec.add_runtime_dependency "mercenary", "~> 0.3", ">=0.3.5"
26
30
  end
data/spec/build_spec.rb CHANGED
@@ -1,10 +1,12 @@
1
1
  require "minitest/autorun"
2
- require "minitest/pride"
2
+ require "minitest/reporters"
3
3
  require "fileutils"
4
4
  require_relative "../lib/mr_hyde"
5
5
  require_relative "../lib/mr_hyde/site"
6
6
 
7
- describe "Checking if MrHyde can build sites" do
7
+ Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new, Minitest::Reporters::ProgressReporter.new]
8
+
9
+ describe "Checking MrHyde build command" do
8
10
  before do
9
11
  @site_name = 'test'
10
12
  @nested_site_name = 'nested_site'
@@ -19,6 +21,11 @@ describe "Checking if MrHyde can build sites" do
19
21
  FileUtils.remove_dir(@site_name) if File.exist? @site_name
20
22
  end
21
23
 
24
+ it "can build the default site (main)" do
25
+ MrHyde::Site.build
26
+ File.exist?(@defaults['destination']).must_be :==, true
27
+ end
28
+
22
29
  it "can build a single site" do
23
30
  MrHyde::Site.create @nested_site_name
24
31
  MrHyde::Site.build @nested_site_name
@@ -35,14 +42,24 @@ describe "Checking if MrHyde can build sites" do
35
42
  end
36
43
  end
37
44
 
38
- it "can build all sites in sources path" do
45
+ it "can build all nested sites with --all option" do
39
46
  site_names = []
40
47
  5.times { |i| site_names << "#{@nested_site_name}_#{i}" }
41
48
  MrHyde::Site.create site_names
42
- MrHyde::Site.build [], { 'all' => 'all' }
49
+ MrHyde::Site.build [], { 'all' => true }
43
50
  site_names.each do |sn|
44
51
  File.exist?(File.join @defaults['destination'], sn).must_be :==, true
45
52
  end
46
53
  end
47
54
 
55
+ describe "building posts" do
56
+ it "all sites build a post within mrhyde or jekyll dir" do
57
+ MrHyde::Site.build nil, {'all' => true}
58
+ MrHyde::Site.built_list.each do |ns|
59
+ (File.exist?(File.join @defaults['destination'], ns, 'mrhyde') ||
60
+ File.exist?(File.join @defaults['destination'], ns, 'jekyll')).must_be :==, true
61
+ end
62
+ end
63
+ end
64
+
48
65
  end
data/spec/list_spec.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require "minitest/autorun"
2
- require "minitest/pride"
3
2
  require "fileutils"
4
3
  require_relative "../lib/mr_hyde"
5
4
  require_relative "../lib/mr_hyde/site"
data/spec/new_spec.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "minitest/autorun"
2
- require "minitest/pride"
2
+ require "minitest/reporters"
3
3
  require "fileutils"
4
4
  require_relative "../lib/mr_hyde"
5
5
  require_relative "../lib/mr_hyde/site"
@@ -21,30 +21,30 @@ describe "Checking if mrhyde can create new sites" do
21
21
  MrHyde.create @site_name
22
22
 
23
23
  File.exist?(@site_name).must_be :==, true
24
- File.exist?(File.join @site_name, @defaults['sources']).must_be :==, true
24
+ File.exist?(File.join @site_name).must_be :==, true
25
25
  File.exist?(File.join @site_name, @defaults['config']).must_be :==, true
26
26
  File.exist?(File.join @site_name, @defaults['jekyll_config']).must_be :==, true
27
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['layouts']).must_be :==, true
28
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['includes']).must_be :==, true
29
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['assets']).must_be :==, true
30
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['mainsite']).must_be :==, true
31
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['sources_sites']).must_be :==, true
32
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['mainsite'], 'index.md').must_be :==, true
27
+ File.exist?(File.join @site_name, @defaults['layouts_dir']).must_be :==, true
28
+ File.exist?(File.join @site_name, @defaults['includes_dir']).must_be :==, true
29
+ File.exist?(File.join @site_name, @defaults['assets']).must_be :==, true
30
+ File.exist?(File.join @site_name, @defaults['mainsite']).must_be :==, true
31
+ File.exist?(File.join @site_name, @defaults['sources_sites']).must_be :==, true
32
+ File.exist?(File.join @site_name, @defaults['mainsite'], 'index.md').must_be :==, true
33
33
  end
34
34
 
35
35
  it "creates a new MrHyde blank folder" do
36
36
  MrHyde.create @site_name, 'blank' => true
37
37
 
38
38
  File.exist?(@site_name).must_be :==, true
39
- File.exist?(File.join @site_name, @defaults['sources']).must_be :==, true
39
+ File.exist?(File.join @site_name).must_be :==, true
40
40
  File.exist?(File.join @site_name, @defaults['config']).must_be :==, false
41
41
  File.exist?(File.join @site_name, @defaults['jekyll_config']).must_be :==, false
42
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['layouts']).must_be :==, true
43
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['includes']).must_be :==, true
44
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['assets']).must_be :==, false
45
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['mainsite']).must_be :==, true
46
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['sources_sites']).must_be :==, false
47
- File.exist?(File.join @site_name, @defaults['sources'], @defaults['mainsite'], 'index.html').must_be :==, true
42
+ File.exist?(File.join @site_name, @defaults['layouts_dir']).must_be :==, true
43
+ File.exist?(File.join @site_name, @defaults['includes_dir']).must_be :==, true
44
+ File.exist?(File.join @site_name, @defaults['assets']).must_be :==, false
45
+ File.exist?(File.join @site_name, @defaults['mainsite']).must_be :==, true
46
+ File.exist?(File.join @site_name, @defaults['sources_sites']).must_be :==, false
47
+ File.exist?(File.join @site_name, @defaults['mainsite'], 'index.html').must_be :==, true
48
48
  end
49
49
 
50
50
  it "cannot create over an existing folder" do
@@ -57,6 +57,14 @@ describe "Checking if mrhyde can create new sites" do
57
57
  lambda { MrHyde.create(@site_name, 'force' => true)}.must_be_silent
58
58
  end
59
59
 
60
+ describe "sample files" do
61
+ it "are generated" do
62
+ MrHyde.create @site_name
63
+ File.exist?(File.join @site_name, @defaults['sources_sites'], 'sample-site').must_be :==, true
64
+ File.exist?(File.join @site_name, @defaults['sources_sites'], 'sample-full-site').must_be :==, true
65
+ end
66
+ end
67
+
60
68
  describe "nested sites" do
61
69
  before do
62
70
  MrHyde.create @site_name
@@ -65,7 +73,7 @@ describe "Checking if mrhyde can create new sites" do
65
73
  it "can create a single site" do
66
74
  Dir.chdir(@site_name) do
67
75
  MrHyde::Site.create @nested_site_name
68
- File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], @nested_site_name).must_be :==, true
76
+ File.exist?(File.join @defaults['sources_sites'], @nested_site_name).must_be :==, true
69
77
  end
70
78
  end
71
79
 
@@ -75,7 +83,7 @@ describe "Checking if mrhyde can create new sites" do
75
83
  10.times { |i| arr_blog_names << "#{@nested_site_name}_#{i}" }
76
84
  MrHyde::Site.create arr_blog_names
77
85
  arr_blog_names.each do |bn|
78
- File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], bn).must_be :==, true
86
+ File.exist?(File.join @defaults['sources_sites'], bn).must_be :==, true
79
87
  end
80
88
  end
81
89
  end
data/spec/rm_spec.rb CHANGED
@@ -1,10 +1,9 @@
1
1
  require "minitest/autorun"
2
- require "minitest/pride"
3
2
  require "fileutils"
4
3
  require_relative "../lib/mr_hyde"
5
4
  require_relative "../lib/mr_hyde/site"
6
5
 
7
- describe "MrHyde" do
6
+ describe "Checking is Mr. Hyde remove command" do
8
7
  before do
9
8
  @tmp_dir = Dir.mktmpdir('mrhyde_new_test')
10
9
  @site_name = 'test'
@@ -32,7 +31,7 @@ describe "MrHyde" do
32
31
 
33
32
  def remove_site(site, opts = {})
34
33
  create_build_remove site, opts
35
- File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], site).must_be :==, (opts['full'] ? false : true)
34
+ File.exist?(File.join @defaults['sources_sites'], site).must_be :==, (opts['full'] ? false : true)
36
35
  File.exist?(File.join @defaults['destination'], site).must_be :==, false
37
36
  end
38
37
 
@@ -42,7 +41,7 @@ describe "MrHyde" do
42
41
 
43
42
  create_build_remove site_names, opts
44
43
  site_names.each do |sn|
45
- File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], sn).must_be :==, (opts['full'] ? false : true)
44
+ File.exist?(File.join @defaults['sources_sites'], sn).must_be :==, (opts['full'] ? false : true)
46
45
  File.exist?(File.join @defaults['destination'], sn).must_be :==, false
47
46
  end
48
47
  end
@@ -56,19 +55,19 @@ describe "MrHyde" do
56
55
  remove_sites @nested_site_name, 5
57
56
  end
58
57
 
59
- it "can remove all built sites" do
60
- remove_sites @nested_site_name, 5, { 'all' => 'all' }
58
+ it "can remove all built sites with option --all" do
59
+ remove_sites @nested_site_name, 5, { 'all' => true }
61
60
  end
62
61
 
63
- it "can remove a site completely" do
64
- remove_site @nested_site_name, { 'full' => 'full' }
62
+ it "can remove a site completely with option --full" do
63
+ remove_site @nested_site_name, { 'full' => true }
65
64
  end
66
65
 
67
- it "can remove a list of sites completely" do
68
- remove_sites @nested_site_name, 5, { 'full' => 'full' }
66
+ it "can remove a list of sites completely with option --full" do
67
+ remove_sites @nested_site_name, 5, { 'full' => true }
69
68
  end
70
69
 
71
- it "can remove all sites completely" do
72
- remove_sites @nested_site_name, 5, { 'all' => 'all', 'full' => 'full' }
70
+ it "can remove all sites completely (--all and --full)" do
71
+ remove_sites @nested_site_name, 5, { 'all' => true, 'full' => true }
73
72
  end
74
73
  end
@@ -0,0 +1,16 @@
1
+ require "minitest/autorun"
2
+ require "minitest/reporters"
3
+ require "jekyll"
4
+ require_relative "../lib/mr_hyde"
5
+
6
+ Minitest::Reporters.use!
7
+
8
+ class TestConfiguration < Minitest::Test
9
+ def setup
10
+ @jekyll_config = Jekyll::Configuration::DEFAULTS
11
+ @mrhyde_config = MrHyde::Configuration::JEKYLL_DEFAULTS
12
+ end
13
+
14
+ def test_that_if_configuration_defaults_ids_match
15
+ end
16
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_hyde
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Enrique Arias Cervero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-24 00:00:00.000000000 Z
11
+ date: 2016-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,40 +44,108 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '5.4'
47
+ version: '5.8'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 5.4.3
50
+ version: 5.8.4
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - "~>"
56
56
  - !ruby/object:Gem::Version
57
- version: '5.4'
57
+ version: '5.8'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 5.4.3
60
+ version: 5.8.4
61
+ - !ruby/object:Gem::Dependency
62
+ name: minitest-reporters
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.1.7
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.1'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.1.7
81
+ - !ruby/object:Gem::Dependency
82
+ name: pry
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: byebug
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - "~>"
100
+ - !ruby/object:Gem::Version
101
+ version: 8.2.2
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - "~>"
107
+ - !ruby/object:Gem::Version
108
+ version: 8.2.2
61
109
  - !ruby/object:Gem::Dependency
62
110
  name: jekyll
63
111
  requirement: !ruby/object:Gem::Requirement
64
112
  requirements:
65
113
  - - "~>"
66
114
  - !ruby/object:Gem::Version
67
- version: '2.5'
68
- - - '='
115
+ version: '3.1'
116
+ - - ">="
69
117
  - !ruby/object:Gem::Version
70
- version: 2.5.3
118
+ version: 3.1.1
71
119
  type: :runtime
72
120
  prerelease: false
73
121
  version_requirements: !ruby/object:Gem::Requirement
74
122
  requirements:
75
123
  - - "~>"
76
124
  - !ruby/object:Gem::Version
77
- version: '2.5'
78
- - - '='
125
+ version: '3.1'
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ version: 3.1.1
129
+ - !ruby/object:Gem::Dependency
130
+ name: mercenary
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '0.3'
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: 0.3.5
139
+ type: :runtime
140
+ prerelease: false
141
+ version_requirements: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.3'
146
+ - - ">="
79
147
  - !ruby/object:Gem::Version
80
- version: 2.5.3
148
+ version: 0.3.5
81
149
  description: Mr. Hyde lets you generate and manage as many sites as you want, something
82
150
  similar like Medium. It's based on Jekyll.
83
151
  email:
@@ -109,26 +177,25 @@ files:
109
177
  - lib/mr_hyde/jekyll_ext/tags/include.rb
110
178
  - lib/mr_hyde/site.rb
111
179
  - lib/mr_hyde/version.rb
180
+ - lib/site_template/_assets/_sass/_base.scss
181
+ - lib/site_template/_assets/_sass/_functions.scss
182
+ - lib/site_template/_assets/_sass/_grid.scss
183
+ - lib/site_template/_assets/_sass/_layout.scss
184
+ - lib/site_template/_assets/_sass/_newbase.scss
185
+ - lib/site_template/_assets/_sass/_normalize.scss
186
+ - lib/site_template/_assets/_sass/_syntax-highlighting.scss
112
187
  - lib/site_template/_config.yml
188
+ - lib/site_template/_includes/footer.html
189
+ - lib/site_template/_includes/head.html
190
+ - lib/site_template/_includes/header.html
191
+ - lib/site_template/_layouts/default.html
192
+ - lib/site_template/_layouts/page.html
193
+ - lib/site_template/_layouts/post.html
113
194
  - lib/site_template/_mrhyde.yml
114
- - lib/site_template/sources/_assets/_sass/_base.scss
115
- - lib/site_template/sources/_assets/_sass/_functions.scss
116
- - lib/site_template/sources/_assets/_sass/_grid.scss
117
- - lib/site_template/sources/_assets/_sass/_layout.scss
118
- - lib/site_template/sources/_assets/_sass/_newbase.scss
119
- - lib/site_template/sources/_assets/_sass/_normalize.scss
120
- - lib/site_template/sources/_assets/_sass/_syntax-highlighting.scss
121
- - lib/site_template/sources/_includes/footer.html
122
- - lib/site_template/sources/_includes/head.html
123
- - lib/site_template/sources/_includes/header.html
124
- - lib/site_template/sources/_layouts/default.html
125
- - lib/site_template/sources/_layouts/page.html
126
- - lib/site_template/sources/_layouts/post.html
127
- - lib/site_template/sources/main_site/about.md
128
- - lib/site_template/sources/main_site/css/main.scss
129
- - lib/site_template/sources/main_site/css/normalize.css
130
- - lib/site_template/sources/main_site/index.md
131
- - lib/site_template/sources/main_site/js/main.coffee
195
+ - lib/site_template/_site/about.md
196
+ - lib/site_template/_site/css/main.scss
197
+ - lib/site_template/_site/css/normalize.css
198
+ - lib/site_template/_site/index.md
132
199
  - lib/subsite_template/_config.yml
133
200
  - lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb
134
201
  - lib/subsite_template/about.md
@@ -142,7 +209,8 @@ files:
142
209
  - spec/list_spec.rb
143
210
  - spec/new_spec.rb
144
211
  - spec/rm_spec.rb
145
- homepage: ''
212
+ - test/configuraton_test.rb
213
+ homepage: https://github.com/emoriarty/mr_hyde
146
214
  licenses:
147
215
  - MIT
148
216
  metadata: {}
@@ -162,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
230
  version: '0'
163
231
  requirements: []
164
232
  rubyforge_project:
165
- rubygems_version: 2.4.5
233
+ rubygems_version: 2.5.2
166
234
  signing_key:
167
235
  specification_version: 4
168
236
  summary: Mr. Hyde lets you generate and manage as many sites as you want.
@@ -171,3 +239,4 @@ test_files:
171
239
  - spec/list_spec.rb
172
240
  - spec/new_spec.rb
173
241
  - spec/rm_spec.rb
242
+ - test/configuraton_test.rb
@@ -1,9 +0,0 @@
1
- ---
2
- layout: page
3
- title: About
4
- permalink: /about/
5
- id: about
6
- ---
7
-
8
- This is the base Mr. Hyde theme. You can customize it modifying the styles assets include in `sources/_assets/_sass` or just include you css files in the sites folder of your Mr. Hyde project and reference them in your html header.
9
-
@@ -1,27 +0,0 @@
1
- ---
2
- ---
3
- setCurrentPage = ->
4
- pathname = document.location.pathname
5
- currentLink = undefined
6
- baseurl = document.querySelector('[data-baseurl]').getAttribute('data-baseurl')
7
- cleanBaseUrl = pathname.replace(baseurl, '')
8
- if cleanBaseUrl == '/'
9
- currentLink = document.getElementById('home')
10
- else
11
- navLinks = document.querySelectorAll('.main-navigation ul li')
12
- i = 0
13
- while i < navLinks.length
14
- navLink = navLinks[i]
15
- regexp = new RegExp('/' + navLink.id + '/')
16
- matchResult = cleanBaseUrl.match(regexp)
17
- if matchResult and matchResult.length > 0
18
- currentLink = navLink
19
- i++
20
- currentLink.classList.add 'current-menu-item'
21
- return
22
-
23
- init = ->
24
- setCurrentPage()
25
- return
26
-
27
- window.addEventListener 'DOMContentLoaded', init