mr_hyde 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -3
- data/Rakefile +1 -0
- data/bin/mrhyde +56 -10
- data/lib/mr_hyde/commands/build.rb +3 -2
- data/lib/mr_hyde/commands/list.rb +41 -0
- data/lib/mr_hyde/commands/new.rb +3 -9
- data/lib/mr_hyde/commands/remove.rb +2 -2
- data/lib/mr_hyde/commands/serve.rb +26 -0
- data/lib/mr_hyde/configuration.rb +17 -5
- data/lib/mr_hyde/extensions/new.rb +54 -2
- data/lib/mr_hyde/jekyll_ext/converters/scss.rb +18 -0
- data/lib/mr_hyde/jekyll_ext/jekyll.rb +16 -0
- data/lib/mr_hyde/jekyll_ext/site.rb +47 -0
- data/lib/mr_hyde/jekyll_ext/tags/include.rb +23 -0
- data/lib/mr_hyde/site.rb +234 -0
- data/lib/mr_hyde/version.rb +1 -1
- data/lib/mr_hyde.rb +125 -24
- data/lib/site_template/_config.yml +14 -0
- data/lib/site_template/_mrhyde.yml +2 -11
- data/lib/site_template/sources/_assets/_sass/_base.scss +204 -0
- data/lib/site_template/sources/_assets/_sass/_functions.scss +11 -0
- data/lib/site_template/sources/_assets/_sass/_grid.scss +544 -0
- data/lib/site_template/sources/_assets/_sass/_layout.scss +241 -0
- data/lib/site_template/sources/_assets/_sass/_newbase.scss +488 -0
- data/lib/site_template/sources/_assets/_sass/_normalize.scss +424 -0
- data/lib/site_template/sources/_assets/_sass/_syntax-highlighting.scss +67 -0
- data/lib/site_template/sources/_includes/footer.html +58 -0
- data/lib/site_template/sources/_includes/head.html +12 -0
- data/lib/site_template/sources/_includes/header.html +31 -0
- data/lib/site_template/sources/_layouts/default.html +25 -0
- data/lib/site_template/sources/_layouts/page.html +14 -0
- data/lib/site_template/sources/_layouts/post.html +15 -0
- data/lib/site_template/sources/main_site/about.md +9 -0
- data/lib/site_template/sources/main_site/css/main.scss +55 -0
- data/lib/site_template/sources/main_site/css/normalize.css +427 -0
- data/lib/site_template/sources/main_site/index.md +17 -0
- data/lib/site_template/sources/main_site/js/main.coffee +27 -0
- data/lib/subsite_template/_config.yml +2 -0
- data/lib/subsite_template/_posts/0000-00-00-welcome-to-mr-hyde.markdown.erb +27 -0
- data/lib/subsite_template/about.md +9 -0
- data/lib/subsite_template/assets/dr_jekyll_and_mr_hyde_poster.png +0 -0
- data/lib/subsite_template/feed.xml +30 -0
- data/lib/subsite_template/index.html +26 -0
- data/resources/mrhyde-logo-red.png +0 -0
- data/resources/mrhyde-logo.png +0 -0
- data/spec/build_spec.rb +26 -27
- data/spec/list_spec.rb +37 -0
- data/spec/new_spec.rb +53 -25
- data/spec/rm_spec.rb +30 -31
- metadata +38 -8
- data/lib/mr_hyde/blog.rb +0 -146
- data/lib/mr_hyde/extensions/.new.rb.swp +0 -0
- data/lib/site_template/site/css/main.css +0 -0
- data/lib/site_template/site/index.html +0 -0
- data/test/blog_test.rb +0 -46
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
|
-
@
|
10
|
-
|
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(@
|
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
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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 "
|
7
|
+
describe "Checking if mrhyde can create new sites" do
|
8
8
|
before do
|
9
|
-
|
10
|
-
@
|
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(@
|
17
|
+
FileUtils.remove_dir(@site_name) if File.exist? @site_name
|
15
18
|
end
|
16
19
|
|
17
|
-
it "creates a new MrHyde folder
|
18
|
-
MrHyde.create @
|
20
|
+
it "creates a new MrHyde folder" do
|
21
|
+
MrHyde.create @site_name
|
19
22
|
|
20
|
-
File.exist?(@
|
21
|
-
File.exist?(File.join @
|
22
|
-
File.exist?(File.join @
|
23
|
-
File.exist?(File.join @
|
24
|
-
File.exist?(File.join @
|
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 "
|
28
|
-
MrHyde.create @
|
29
|
-
|
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 "
|
60
|
+
describe "nested sites" do
|
33
61
|
before do
|
34
|
-
MrHyde.create @
|
62
|
+
MrHyde.create @site_name
|
35
63
|
end
|
36
64
|
|
37
65
|
it "can create a single site" do
|
38
|
-
Dir.chdir(
|
39
|
-
MrHyde::
|
40
|
-
File.exist?(File.join
|
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(
|
73
|
+
Dir.chdir(@site_name) do
|
46
74
|
arr_blog_names = []
|
47
|
-
10.times { |i| arr_blog_names << "
|
48
|
-
MrHyde::
|
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
|
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
|
-
|
10
|
-
@
|
11
|
-
@
|
12
|
-
MrHyde
|
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(@
|
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::
|
22
|
-
MrHyde::
|
24
|
+
MrHyde::Site.create site
|
25
|
+
MrHyde::Site.build site
|
23
26
|
if opts['all']
|
24
|
-
MrHyde::
|
27
|
+
MrHyde::Site.remove [], opts
|
25
28
|
else
|
26
|
-
MrHyde::
|
29
|
+
MrHyde::Site.remove site, opts
|
27
30
|
end
|
28
31
|
end
|
29
32
|
|
30
|
-
def remove_site(
|
31
|
-
|
32
|
-
|
33
|
-
|
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(
|
39
|
+
def remove_sites(name, sites_number, opts = {})
|
39
40
|
site_names = []
|
40
|
-
sites_number.times { |i| site_names << "
|
41
|
+
sites_number.times { |i| site_names << "#{name}_#{i}" }
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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 @
|
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 @
|
56
|
+
remove_sites @nested_site_name, 5
|
58
57
|
end
|
59
58
|
|
60
59
|
it "can remove all built sites" do
|
61
|
-
remove_sites @
|
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 @
|
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 @
|
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 @
|
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.
|
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-
|
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/
|
109
|
-
- lib/site_template/
|
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
|