mr_hyde 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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