guard-jekyll-plus 1.0.0 → 1.1.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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- guard-jekyll-plus (1.0.0)
4
+ guard-jekyll-plus (1.1.0)
5
5
  guard (>= 1.1.0)
6
6
  jekyll (>= 1.0.0)
7
7
 
data/README.md CHANGED
@@ -4,8 +4,10 @@ A Guard plugin for smarter Jekyll watching.
4
4
 
5
5
  Features:
6
6
 
7
- - Changes to static files apply without triggering an unnecessary build.
8
- - Only template file changes trigger a Jekyll build.
7
+ - Changing static files won't trigger a jekyll build! Files are copied/removed instead.
8
+ - Batched processing! (Adding a directory of `n` files triggers a single build)
9
+ - Reads options from your YAML config file(s)
10
+ - Supports multiple config files (Jekyll 1.0)
9
11
 
10
12
  ## Installation
11
13
 
@@ -65,9 +67,10 @@ For the most part that's all you'll ever need to do. There are some things you c
65
67
  This guard has two configurations.
66
68
 
67
69
  | Config | Description | Default
68
- |:-------------|:-------------------------------------------------|:-------------------------------------------------------|
69
- | `extensions` | Array of file extensions to trigger Jekyll build | ['md','markdown','textile','html','haml','slim','xml'] |
70
- | `config` | Array of configuration files | ['_config.yml'] |
70
+ |:-------------|:-------------------------------------------------|:---------------------------------------------------------------------------|
71
+ | `extensions` | Array of file extensions to trigger Jekyll build | ['md', 'mkd', 'markdown', 'textile', 'html', 'haml', 'slim', 'xml', 'yml'] |
72
+ | `config` | Array of configuration files | ['_config.yml'] |
73
+ | `serve` | Use Jekyll's build in WEBrick server | false |
71
74
 
72
75
  **Note:** customizations to the `extensions` configuration are additive.
73
76
 
@@ -82,7 +85,7 @@ guard :jekyll, :extensions => ['txt'] do
82
85
  end
83
86
  ```
84
87
 
85
- Now Guard will be watching for changes to txt, md, markdown, textile, html, haml, slim, xml files. When these files change Guard will trigger a Jekyll build. Files
88
+ Now Guard will be watching for changes to txt, md, mkd, markdown, textile, html, haml, slim, xml, yml files. When these files change Guard will trigger a Jekyll build. Files
86
89
  which don't match these extensions will be simply copied over to the destination directory when a change occurs, or deleted if appropriate.
87
90
 
88
91
  ### Configuring Jekyll config file
@@ -1,5 +1,5 @@
1
1
  module Guard
2
2
  class JekyllVersion
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
data/lib/guard/jekyll.rb CHANGED
@@ -9,17 +9,19 @@ module Guard
9
9
  def initialize (watchers=[], options={})
10
10
  super
11
11
 
12
- default_extensions = ['md','markdown','textile','html','haml','slim','xml','yml']
12
+ default_extensions = ['md','mkd','markdown','textile','html','haml','slim','xml','yml']
13
13
 
14
14
  @options = {
15
15
  :extensions => [],
16
- :config => ['_config.yml']
16
+ :config => ['_config.yml'],
17
+ :serve => false
17
18
  }.merge(options)
18
19
 
19
- config = jekyll_config(@options)
20
- @site = ::Jekyll::Site.new config
21
- @source = local_path config['source']
22
- @destination = local_path config['destination']
20
+ @pid = nil
21
+ @config = jekyll_config(@options)
22
+ @site = ::Jekyll::Site.new @config
23
+ @source = local_path @config['source']
24
+ @destination = local_path @config['destination']
23
25
 
24
26
  extensions = @options[:extensions].concat(default_extensions).flatten.uniq
25
27
  # Convert array of extensions into a regex for matching file extensions eg, /\.md$|\.markdown$|\.html$/i
@@ -27,14 +29,26 @@ module Guard
27
29
 
28
30
  end
29
31
 
30
- # Calls #run_all if the :all_on_start option is present.
31
32
  def start
32
- UI.info 'Guard::Jekyll is watching for file changes'
33
- build
33
+
34
+ if @options[:serve]
35
+ start_server
36
+
37
+ UI.info "Guard::Jekyll is watching files and serving at #{@config['host']}:#{@config['port']}#{@config['baseurl']}".bold
38
+ else
39
+ build
40
+ UI.info "Guard::Jekyll is watching".bold
41
+ end
34
42
  end
35
43
 
36
- def reload
37
- build
44
+ def restart
45
+ stop if alive?
46
+ start
47
+ end
48
+
49
+
50
+ def stop
51
+ stop_server
38
52
  end
39
53
 
40
54
  def run_all
@@ -67,7 +81,7 @@ module Guard
67
81
  throw :task_has_failed
68
82
  end
69
83
  end
70
-
84
+
71
85
  # Copy static files to destination directory
72
86
  #
73
87
  def copy(file)
@@ -155,6 +169,40 @@ module Guard
155
169
  end
156
170
  end
157
171
 
172
+ def server
173
+ proc{ Process.spawn "jekyll server --config #{@options[:config].join(',')}" }
174
+ end
175
+
176
+ def kill
177
+ proc{|pid| Process.kill("QUIT", pid)}
178
+ end
179
+
180
+ def start_server
181
+ return @pid if alive?
182
+ @pid = instance_eval &server
183
+ end
184
+
185
+ def stop_server
186
+ if alive?
187
+ instance_eval do
188
+ kill.call(@pid)
189
+ @pid = nil
190
+ end
191
+ end
192
+ end
193
+
194
+ def alive?
195
+ return false unless @pid
196
+
197
+ begin
198
+ Process.getpgid(@pid)
199
+ true
200
+ rescue Errno::ESRCH => e
201
+ false
202
+ end
203
+ end
204
+
205
+
158
206
  end
159
207
  end
160
208
 
data/test/Guardfile CHANGED
@@ -1,8 +1,11 @@
1
1
  # A sample Guardfile
2
2
  # More info at https://github.com/guard/guard#readme
3
3
  #
4
+ require 'guard/guard'
5
+ require 'jekyll'
4
6
 
5
- guard :jekyll do
7
+ guard :jekyll, :config => ['_config.yml', '_override.yml'], :serve => true do
6
8
  watch /.*/
7
9
  ignore /^_site/
8
10
  end
11
+
data/test/_config.yml CHANGED
@@ -1,2 +1,3 @@
1
1
  name: Your New Jekyll Site
2
2
  pygments: true
3
+ port: 4567
@@ -0,0 +1,2 @@
1
+ port: 3500
2
+ baseurl: dang
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guard-jekyll-plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -67,6 +67,7 @@ files:
67
67
  - test/_config.yml
68
68
  - test/_layouts/default.html
69
69
  - test/_layouts/post.html
70
+ - test/_override.yml
70
71
  - test/_posts/2013-07-08-welcome-to-jekyll.markdown
71
72
  - test/css/main.css
72
73
  - test/css/syntax.css