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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +3 -3
  4. data/Rakefile +1 -0
  5. data/bin/mrhyde +56 -10
  6. data/lib/mr_hyde/commands/build.rb +3 -2
  7. data/lib/mr_hyde/commands/list.rb +41 -0
  8. data/lib/mr_hyde/commands/new.rb +3 -9
  9. data/lib/mr_hyde/commands/remove.rb +2 -2
  10. data/lib/mr_hyde/commands/serve.rb +26 -0
  11. data/lib/mr_hyde/configuration.rb +17 -5
  12. data/lib/mr_hyde/extensions/new.rb +54 -2
  13. data/lib/mr_hyde/jekyll_ext/converters/scss.rb +18 -0
  14. data/lib/mr_hyde/jekyll_ext/jekyll.rb +16 -0
  15. data/lib/mr_hyde/jekyll_ext/site.rb +47 -0
  16. data/lib/mr_hyde/jekyll_ext/tags/include.rb +23 -0
  17. data/lib/mr_hyde/site.rb +234 -0
  18. data/lib/mr_hyde/version.rb +1 -1
  19. data/lib/mr_hyde.rb +125 -24
  20. data/lib/site_template/_config.yml +14 -0
  21. data/lib/site_template/_mrhyde.yml +2 -11
  22. data/lib/site_template/sources/_assets/_sass/_base.scss +204 -0
  23. data/lib/site_template/sources/_assets/_sass/_functions.scss +11 -0
  24. data/lib/site_template/sources/_assets/_sass/_grid.scss +544 -0
  25. data/lib/site_template/sources/_assets/_sass/_layout.scss +241 -0
  26. data/lib/site_template/sources/_assets/_sass/_newbase.scss +488 -0
  27. data/lib/site_template/sources/_assets/_sass/_normalize.scss +424 -0
  28. data/lib/site_template/sources/_assets/_sass/_syntax-highlighting.scss +67 -0
  29. data/lib/site_template/sources/_includes/footer.html +58 -0
  30. data/lib/site_template/sources/_includes/head.html +12 -0
  31. data/lib/site_template/sources/_includes/header.html +31 -0
  32. data/lib/site_template/sources/_layouts/default.html +25 -0
  33. data/lib/site_template/sources/_layouts/page.html +14 -0
  34. data/lib/site_template/sources/_layouts/post.html +15 -0
  35. data/lib/site_template/sources/main_site/about.md +9 -0
  36. data/lib/site_template/sources/main_site/css/main.scss +55 -0
  37. data/lib/site_template/sources/main_site/css/normalize.css +427 -0
  38. data/lib/site_template/sources/main_site/index.md +17 -0
  39. data/lib/site_template/sources/main_site/js/main.coffee +27 -0
  40. data/lib/subsite_template/_config.yml +2 -0
  41. data/lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb +27 -0
  42. data/lib/subsite_template/about.md +9 -0
  43. data/lib/subsite_template/assets/dr_jekyll_and_mr_hyde_poster.png +0 -0
  44. data/lib/subsite_template/feed.xml +30 -0
  45. data/lib/subsite_template/index.html +26 -0
  46. data/resources/mrhyde-logo-red.png +0 -0
  47. data/resources/mrhyde-logo.png +0 -0
  48. data/spec/build_spec.rb +26 -27
  49. data/spec/list_spec.rb +37 -0
  50. data/spec/new_spec.rb +53 -25
  51. data/spec/rm_spec.rb +30 -31
  52. metadata +38 -8
  53. data/lib/mr_hyde/blog.rb +0 -146
  54. data/lib/mr_hyde/extensions/.new.rb.swp +0 -0
  55. data/lib/site_template/site/css/main.css +0 -0
  56. data/lib/site_template/site/index.html +0 -0
  57. data/test/blog_test.rb +0 -46
data/spec/build_spec.rb CHANGED
@@ -1,48 +1,47 @@
1
1
  require "minitest/autorun"
2
2
  require "minitest/pride"
3
- require "mr_hyde"
4
- require "mr_hyde/blog"
5
3
  require "fileutils"
4
+ require_relative "../lib/mr_hyde"
5
+ require_relative "../lib/mr_hyde/site"
6
6
 
7
- describe "MrHyde" do
7
+ describe "Checking if MrHyde can build sites" do
8
8
  before do
9
- @path = 'mthyde_build_test'
10
- MrHyde.create @path
9
+ @site_name = 'test'
10
+ @nested_site_name = 'nested_site'
11
+ @defaults = MrHyde::Configuration::DEFAULTS
12
+ @tmp_dir = Dir.mktmpdir('mrhyde_new_test')
13
+ Dir.chdir(@tmp_dir)
14
+ MrHyde.create @site_name
15
+ Dir.chdir(@site_name)
11
16
  end
12
17
 
13
18
  after do
14
- FileUtils.remove_dir(@path) if File.exist? @path
19
+ FileUtils.remove_dir(@site_name) if File.exist? @site_name
15
20
  end
16
21
 
17
22
  it "can build a single site" do
18
- Dir.chdir(File.join Dir.pwd, @path) do
19
- MrHyde::Blog.create 'site_test'
20
- MrHyde::Blog.build 'site_test'
21
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['destination'], 'site_test').must_be :==, true
22
- end
23
+ MrHyde::Site.create @nested_site_name
24
+ MrHyde::Site.build @nested_site_name
25
+ File.exist?(File.join @defaults['destination'], @nested_site_name).must_be :==, true
23
26
  end
24
27
 
25
28
  it "can build an array of sites" do
26
- Dir.chdir(File.join Dir.pwd, @path) do
27
- site_names = []
28
- 5.times { |i| site_names << "site_test_#{i}" }
29
- MrHyde::Blog.create site_names
30
- MrHyde::Blog.build site_names
31
- site_names.each do |bn|
32
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['destination'], bn).must_be :==, true
33
- end
29
+ site_names = []
30
+ 5.times { |i| site_names << "#{@nested_site_name}_#{i}" }
31
+ MrHyde::Site.create site_names
32
+ MrHyde::Site.build site_names
33
+ site_names.each do |sn|
34
+ File.exist?(File.join @defaults['destination'], sn).must_be :==, true
34
35
  end
35
36
  end
36
37
 
37
38
  it "can build all sites in sources path" do
38
- Dir.chdir(File.join Dir.pwd, @path) do
39
- site_names = []
40
- 5.times { |i| site_names << "blog_test_#{i}" }
41
- MrHyde::Blog.create site_names
42
- MrHyde::Blog.build [], { 'all' => 'all' }
43
- site_names.each do |bn|
44
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['destination'], bn).must_be :==, true
45
- end
39
+ site_names = []
40
+ 5.times { |i| site_names << "#{@nested_site_name}_#{i}" }
41
+ MrHyde::Site.create site_names
42
+ MrHyde::Site.build [], { 'all' => 'all' }
43
+ site_names.each do |sn|
44
+ File.exist?(File.join @defaults['destination'], sn).must_be :==, true
46
45
  end
47
46
  end
48
47
 
data/spec/list_spec.rb ADDED
@@ -0,0 +1,37 @@
1
+ require "minitest/autorun"
2
+ require "minitest/pride"
3
+ require "fileutils"
4
+ require_relative "../lib/mr_hyde"
5
+ require_relative "../lib/mr_hyde/site"
6
+
7
+ describe "Mr. Hyde Listing" do
8
+ before do
9
+ @site_name = 'test'
10
+ @nested_site_name = 'nested_site'
11
+ @defaults = MrHyde::Configuration::DEFAULTS
12
+ @tmp_dir = Dir.mktmpdir('mrhyde_new_test')
13
+ Dir.chdir(@tmp_dir)
14
+ MrHyde.create @site_name
15
+ Dir.chdir(@site_name)
16
+ end
17
+
18
+ after do
19
+ FileUtils.remove_dir(@site_name) if File.exist? @site_name
20
+ end
21
+
22
+ def fetch_entries(path)
23
+ entries = Dir.entries path
24
+ entries.reject{ |entry| entry == '.' or entry == '..' }
25
+ end
26
+
27
+ it "can list all sites in sources" do
28
+ MrHyde.sources_list.length.must_be :==, fetch_entries(MrHyde.sources_sites).length
29
+ end
30
+
31
+ it "can list all built sites" do
32
+ sources = MrHyde.sources_list
33
+ entries = MrHyde::Site.build [], { 'all' => true }
34
+ entries.select! { |entry| entry if sources.include? entry }
35
+ MrHyde.built_list.length.must_be :==, entries.length
36
+ end
37
+ end
data/spec/new_spec.rb CHANGED
@@ -1,53 +1,81 @@
1
1
  require "minitest/autorun"
2
2
  require "minitest/pride"
3
- require "mr_hyde"
4
- require "mr_hyde/blog"
5
3
  require "fileutils"
4
+ require_relative "../lib/mr_hyde"
5
+ require_relative "../lib/mr_hyde/site"
6
6
 
7
- describe "MrHyde" do
7
+ describe "Checking if mrhyde can create new sites" do
8
8
  before do
9
- #@path = Dir.mktmpdir('mrhyde_new_test')
10
- @path = 'mrhyde_new_test'
9
+ @tmp_dir = Dir.mktmpdir('mrhyde_new_test')
10
+ Dir.chdir(@tmp_dir)
11
+ @site_name = 'test'
12
+ @nested_site_name = 'nested_site'
13
+ @defaults = MrHyde::Configuration::DEFAULTS
11
14
  end
12
15
 
13
16
  after do
14
- FileUtils.remove_dir(@path) if File.exist? @path
17
+ FileUtils.remove_dir(@site_name) if File.exist? @site_name
15
18
  end
16
19
 
17
- it "creates a new MrHyde folder with the basics" do
18
- MrHyde.create @path
20
+ it "creates a new MrHyde folder" do
21
+ MrHyde.create @site_name
19
22
 
20
- File.exist?(@path).must_be :==, true
21
- File.exist?(File.join @path, MrHyde::Configuration::DEFAULTS['sources']).must_be :==, true
22
- File.exist?(File.join @path, MrHyde::Configuration::DEFAULTS['destination']).must_be :==, true
23
- File.exist?(File.join @path, MrHyde::Configuration::DEFAULTS['config']).must_be :==, true
24
- File.exist?(File.join @path, MrHyde::Configuration::DEFAULTS['jekyll_config']).must_be :==, true
23
+ File.exist?(@site_name).must_be :==, true
24
+ File.exist?(File.join @site_name, @defaults['sources']).must_be :==, true
25
+ File.exist?(File.join @site_name, @defaults['config']).must_be :==, true
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
25
33
  end
26
34
 
27
- it "cannot create over an existing project" do
28
- MrHyde.create @path
29
- lambda { MrHyde.create @path }.must_raise SystemExit
35
+ it "creates a new MrHyde blank folder" do
36
+ MrHyde.create @site_name, 'blank' => true
37
+
38
+ File.exist?(@site_name).must_be :==, true
39
+ File.exist?(File.join @site_name, @defaults['sources']).must_be :==, true
40
+ File.exist?(File.join @site_name, @defaults['config']).must_be :==, false
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
48
+ end
49
+
50
+ it "cannot create over an existing folder" do
51
+ MrHyde.create @site_name
52
+ lambda { MrHyde.create @site_name }.must_raise SystemExit
53
+ end
54
+
55
+ it "force create over an existing folder" do
56
+ MrHyde.create @site_name
57
+ lambda { MrHyde.create(@site_name, 'force' => true)}.must_be_silent
30
58
  end
31
59
 
32
- describe "creating new sites" do
60
+ describe "nested sites" do
33
61
  before do
34
- MrHyde.create @path
62
+ MrHyde.create @site_name
35
63
  end
36
64
 
37
65
  it "can create a single site" do
38
- Dir.chdir(File.join Dir.pwd, @path) do
39
- MrHyde::Blog.create 'site_test'
40
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['sources'], 'site_test').must_be :==, true
66
+ Dir.chdir(@site_name) do
67
+ MrHyde::Site.create @nested_site_name
68
+ File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], @nested_site_name).must_be :==, true
41
69
  end
42
70
  end
43
71
 
44
72
  it "can create an array of sites" do
45
- Dir.chdir(File.join Dir.pwd, @path) do
73
+ Dir.chdir(@site_name) do
46
74
  arr_blog_names = []
47
- 10.times { |i| arr_blog_names << "site_test_#{i}" }
48
- MrHyde::Blog.create arr_blog_names
75
+ 10.times { |i| arr_blog_names << "#{@nested_site_name}_#{i}" }
76
+ MrHyde::Site.create arr_blog_names
49
77
  arr_blog_names.each do |bn|
50
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['sources'], bn).must_be :==, true
78
+ File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], bn).must_be :==, true
51
79
  end
52
80
  end
53
81
  end
data/spec/rm_spec.rb CHANGED
@@ -1,75 +1,74 @@
1
1
  require "minitest/autorun"
2
2
  require "minitest/pride"
3
- require "mr_hyde"
4
- require "mr_hyde/blog"
5
3
  require "fileutils"
4
+ require_relative "../lib/mr_hyde"
5
+ require_relative "../lib/mr_hyde/site"
6
6
 
7
7
  describe "MrHyde" do
8
8
  before do
9
- #@path = Dir.mktmpdir('mrhyde_new_test')
10
- @path = 'mrhyde_new_test'
11
- @site = 'site_test'
12
- MrHyde.create @path
9
+ @tmp_dir = Dir.mktmpdir('mrhyde_new_test')
10
+ @site_name = 'test'
11
+ @nested_site_name = 'nested_site'
12
+ @defaults = MrHyde::Configuration::DEFAULTS
13
+ Dir.chdir(@tmp_dir)
14
+ MrHyde.create @site_name
15
+ Dir.chdir(@site_name)
13
16
  end
14
17
 
15
18
  after do
16
- FileUtils.remove_dir(@path) if File.exist? @path
19
+ FileUtils.remove_dir(@tmp_dir) if File.exist? @tmp_dir
17
20
  end
18
21
 
19
22
  # Helpers
20
23
  def create_build_remove(site, opts = {})
21
- MrHyde::Blog.create site
22
- MrHyde::Blog.build site
24
+ MrHyde::Site.create site
25
+ MrHyde::Site.build site
23
26
  if opts['all']
24
- MrHyde::Blog.remove [], opts
27
+ MrHyde::Site.remove [], opts
25
28
  else
26
- MrHyde::Blog.remove site, opts
29
+ MrHyde::Site.remove site, opts
27
30
  end
28
31
  end
29
32
 
30
- def remove_site(path, site, opts = {})
31
- Dir.chdir(File.join Dir.pwd, path) do
32
- create_build_remove site, opts
33
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['sources'], site).must_be :==, (opts['full'] ? false : true)
34
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['destination'], site).must_be :==, false
35
- end
33
+ def remove_site(site, opts = {})
34
+ create_build_remove site, opts
35
+ File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], site).must_be :==, (opts['full'] ? false : true)
36
+ File.exist?(File.join @defaults['destination'], site).must_be :==, false
36
37
  end
37
38
 
38
- def remove_sites(path, sites_number, opts = {})
39
+ def remove_sites(name, sites_number, opts = {})
39
40
  site_names = []
40
- sites_number.times { |i| site_names << "site_test_#{i}" }
41
+ sites_number.times { |i| site_names << "#{name}_#{i}" }
41
42
 
42
- Dir.chdir(File.join Dir.pwd, path) do
43
- create_build_remove site_names, opts
44
- site_names.each do |sn|
45
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['sources'], sn).must_be :==, (opts['full'] ? false : true)
46
- File.exist?(File.join MrHyde::Configuration::DEFAULTS['destination'], sn).must_be :==, false
47
- end
43
+ create_build_remove site_names, opts
44
+ site_names.each do |sn|
45
+ File.exist?(File.join @defaults['sources'], @defaults['sources_sites'], sn).must_be :==, (opts['full'] ? false : true)
46
+ File.exist?(File.join @defaults['destination'], sn).must_be :==, false
48
47
  end
49
48
  end
50
49
 
51
50
  # Specs
52
51
  it "can remove a built site" do
53
- remove_site @path, @site
52
+ remove_site @nested_site_name
54
53
  end
55
54
 
56
55
  it "can remove a list of built sites" do
57
- remove_sites @path, 5
56
+ remove_sites @nested_site_name, 5
58
57
  end
59
58
 
60
59
  it "can remove all built sites" do
61
- remove_sites @path, 5, { 'all' => 'all' }
60
+ remove_sites @nested_site_name, 5, { 'all' => 'all' }
62
61
  end
63
62
 
64
63
  it "can remove a site completely" do
65
- remove_site @path, @site, { 'full' => 'full' }
64
+ remove_site @nested_site_name, { 'full' => 'full' }
66
65
  end
67
66
 
68
67
  it "can remove a list of sites completely" do
69
- remove_sites @path, 5, { 'full' => 'full' }
68
+ remove_sites @nested_site_name, 5, { 'full' => 'full' }
70
69
  end
71
70
 
72
71
  it "can remove all sites completely" do
73
- remove_sites @path, 5, { 'all' => 'all', 'full' => 'full' }
72
+ remove_sites @nested_site_name, 5, { 'all' => 'all', 'full' => 'full' }
74
73
  end
75
74
  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.1.0
4
+ version: 0.2.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-10 00:00:00.000000000 Z
11
+ date: 2015-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,23 +95,53 @@ files:
95
95
  - Rakefile
96
96
  - bin/mrhyde
97
97
  - lib/mr_hyde.rb
98
- - lib/mr_hyde/blog.rb
99
98
  - lib/mr_hyde/command.rb
100
99
  - lib/mr_hyde/commands/build.rb
100
+ - lib/mr_hyde/commands/list.rb
101
101
  - lib/mr_hyde/commands/new.rb
102
102
  - lib/mr_hyde/commands/remove.rb
103
+ - lib/mr_hyde/commands/serve.rb
103
104
  - lib/mr_hyde/configuration.rb
104
- - lib/mr_hyde/extensions/.new.rb.swp
105
105
  - lib/mr_hyde/extensions/new.rb
106
+ - lib/mr_hyde/jekyll_ext/converters/scss.rb
107
+ - lib/mr_hyde/jekyll_ext/jekyll.rb
108
+ - lib/mr_hyde/jekyll_ext/site.rb
109
+ - lib/mr_hyde/jekyll_ext/tags/include.rb
110
+ - lib/mr_hyde/site.rb
106
111
  - lib/mr_hyde/version.rb
112
+ - lib/site_template/_config.yml
107
113
  - lib/site_template/_mrhyde.yml
108
- - lib/site_template/site/css/main.css
109
- - lib/site_template/site/index.html
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
132
+ - lib/subsite_template/_config.yml
133
+ - lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb
134
+ - lib/subsite_template/about.md
135
+ - lib/subsite_template/assets/dr_jekyll_and_mr_hyde_poster.png
136
+ - lib/subsite_template/feed.xml
137
+ - lib/subsite_template/index.html
110
138
  - mr_hyde.gemspec
139
+ - resources/mrhyde-logo-red.png
140
+ - resources/mrhyde-logo.png
111
141
  - spec/build_spec.rb
142
+ - spec/list_spec.rb
112
143
  - spec/new_spec.rb
113
144
  - spec/rm_spec.rb
114
- - test/blog_test.rb
115
145
  homepage: ''
116
146
  licenses:
117
147
  - MIT
@@ -138,6 +168,6 @@ specification_version: 4
138
168
  summary: Mr. Hyde lets you generate and manage as many sites as you want.
139
169
  test_files:
140
170
  - spec/build_spec.rb
171
+ - spec/list_spec.rb
141
172
  - spec/new_spec.rb
142
173
  - spec/rm_spec.rb
143
- - test/blog_test.rb
data/lib/mr_hyde/blog.rb DELETED
@@ -1,146 +0,0 @@
1
- require "jekyll"
2
- require "fileutils"
3
- require "mr_hyde"
4
- require "mr_hyde/configuration"
5
-
6
- # TODO: The site place must be taken from the default config or the one provided by user
7
- module MrHyde
8
- class Blog
9
-
10
- class << self
11
- # Creates the directory and necessary files for the blog
12
- # args
13
- # :name
14
- # String => creates the concrete blog
15
- # Array[String] => creates the correspondings blog names
16
- # Returns
17
- # boolean
18
- def create(args, opts = {})
19
- opts = MrHyde.configuration(opts)
20
-
21
- if args.kind_of? Array and not args.empty?
22
- args.each do |bn|
23
- begin
24
- create_blog(bn, opts)
25
- rescue Exception => e
26
- raise e unless e.class == SystemExit
27
- end
28
- end
29
- elsif args.kind_of? String
30
- create_blog args, opts
31
- end
32
- rescue Exception => e
33
- MrHyde.logger.error "cannot create blog: #{e}"
34
- end
35
-
36
- # Removes the blog directory
37
- # Params:
38
- # Hash[:path] (String)
39
- # Returns
40
- # boolean
41
- def remove(args, opts = {})
42
- opts = MrHyde.configuration(opts)
43
-
44
- if opts['all']
45
- list(opts['sources']).each do |sm|
46
- remove_blog sm, opts
47
- end
48
- elsif args.kind_of? Array
49
- args.each do |sm|
50
- remove_blog sm, opts
51
- end
52
- else
53
- remove_blog args, opts
54
- end
55
- rescue Exception => e
56
- MrHyde.logger.error "cannot remove the blog: #{e}"
57
- end
58
-
59
- # Builds the blog
60
- # Params:
61
- # :name
62
- # String => builds the concrete blog
63
- # Array[String] => builds the correspondings blog names
64
- # empty => It builds all blogs
65
- # Returns
66
- # boolean
67
- def build(args, opts = {})
68
- args = [args] if args.kind_of? String
69
- opts = MrHyde.configuration(opts)
70
-
71
- if opts["all"]
72
- build_blogs list(opts['sources']), opts
73
- elsif args.kind_of? Array
74
- build_blogs args, opts
75
- elsif args.kind_of? String
76
- build_blog args
77
- end
78
- rescue Exception => e
79
- MrHyde.logger.error "cannot build site: #{e}"
80
- MrHyde.logger.error e.backtrace
81
- end
82
-
83
- def list(path)
84
- entries = Dir.entries(path)
85
- entries.reject! { |item| item == '.' or item == '..' }
86
- entries
87
- end
88
-
89
- def exist?(name, opts)
90
- File.exist? File.join(opts['sources'], name)
91
- end
92
-
93
- def built?(name, opts)
94
- File.exist? File.join(opts['destination'], name)
95
- end
96
-
97
- private
98
-
99
- def create_blog(args, opts = {})
100
- Jekyll::Commands::New.process [File.join(opts['sources'], args)], opts
101
- exist? args, opts
102
- end
103
-
104
- def remove_blog(name, opts = {})
105
- if opts['full'] and File.exist? File.join(opts['sources'], name)
106
- FileUtils.remove_dir File.join(opts['sources'], name)
107
- MrHyde.logger.info "#{name} removed from #{opts['sources']}"
108
- end
109
- if File.exist? File.join(opts['destination'], name)
110
- FileUtils.remove_dir File.join(opts['destination'], name)
111
- MrHyde.logger.info "#{name} removed from #{opts['destination']}"
112
- end
113
- end
114
-
115
- def build_blogs(site_names, opts)
116
- site_names.each do |sn|
117
- begin
118
- build_blog(sn, opts)
119
- rescue Exception => e
120
- MrHyde.logger.error e
121
- end
122
- end
123
- end
124
-
125
- def build_blog(name, opts)
126
- Jekyll::Commands::Build.process 'source' => File.join(opts['sources'], name),
127
- 'destination' => File.join(opts['destination'], name)
128
- built? name, opts
129
- end
130
-
131
- def site?
132
- File.exist? MrHyde.configuration.root
133
- end
134
-
135
- def check_blog(blog_name, method, message)
136
- if not send(method, blog_name)
137
- MrHyde.logger.debug message
138
- return false
139
- end
140
- true
141
- end
142
-
143
- end
144
-
145
- end
146
- end
Binary file
File without changes
File without changes
data/test/blog_test.rb DELETED
@@ -1,46 +0,0 @@
1
- require "mr_hyde"
2
- require "mr_hyde/blog"
3
- require "minitest/autorun"
4
- require "minitest/unit"
5
- require "minitest/pride"
6
-
7
- require "fileutils"
8
-
9
- class TestBlog < Minitest::Test
10
- def setup
11
- @tmp_dir = File.join(File.expand_path(File.dirname(__FILE__)), 'tmp')
12
- @blog_dir = 'test_blog'
13
- MrHyde.configure do |config|
14
- config.root_path = @tmp_dir
15
- end
16
- MrHyde::Blog.create name: @blog_dir
17
- end
18
-
19
- def teardown
20
- FileUtils.remove_dir @tmp_dir
21
- end
22
-
23
- def test_create
24
- assert File.exist?(File.join MrHyde.configuration.source_path, @blog_dir)
25
- end
26
-
27
- def test_remove
28
- MrHyde::Blog.remove name: @blog_dir
29
- assert !Dir.entries(MrHyde.configuration.source_path).include?(@blog_dir)
30
- end
31
-
32
- def test_build
33
- MrHyde::Blog.build name: @blog_dir
34
- assert File.exist?(File.join MrHyde.configuration.destination_path, @blog_dir)
35
- end
36
-
37
- def test_exists
38
- assert MrHyde::Blog.exist? @blog_dir
39
- end
40
-
41
- def test_is_build
42
- MrHyde::Blog.build name: @blog_dir
43
- assert MrHyde::Blog.built? @blog_dir
44
- end
45
-
46
- end