devcenter 1.1.0 → 1.1.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
- metadata.gz: d352eb839a6897d9f77d7a6c92e087226d4ebf52
4
- data.tar.gz: e422574c967cb28606b259c0c0f279b0d4af6da4
3
+ metadata.gz: 7a1de6c52f42b4388b5cc465df6e2125d5979299
4
+ data.tar.gz: 93ea202ebe6e5542b6915c3652f055792c5a019f
5
5
  !binary "U0hBNTEy":
6
- metadata.gz: 8364d4972ab68c3391e8fded0f65d240af897d61e274aeb4443c1a4de8f31a9ccdfc29a47fc7cf1693d8ccdf3ef0a67d403bcae418f7f3f60cc1e4fb9d8b15e4
7
- data.tar.gz: 33ebc9d225132cdcfbc795f28f26c136b15a0c79c8d70b4c36bd243d0c7a7adb4d91603b1731a7b5d1b3ea61dc9104f1c31e39898c6a4da554697b6bed024bce
6
+ metadata.gz: 3a080acfe9a2fdc6fbc5697f4c260011feee27b5508afb1b2b800a67c7eaf7d33f3a30e509795b68446620bdf49f51af433f3767445f7b5bfe183071b2f58384
7
+ data.tar.gz: da72b5fac7361fde1ac96b761a9d1bcfd930197d8803915ee5e6fac644192526ec6ea6921e3b95e4a89ca2d1aa4633acc9efeb7771cee5c08dfb096e14dae080
@@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
16
16
  gem.executables = %w{ devcenter }
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = %w{ lib }
19
- gem.add_runtime_dependency('listen', '~> 0.7.2')
19
+ gem.add_runtime_dependency('listen', '~> 1.3.1')
20
20
  gem.add_runtime_dependency('commander', '~> 4.1.3')
21
21
  gem.add_runtime_dependency('json', '~>1.7.6')
22
22
  gem.add_runtime_dependency('excon', '~>0.15.4')
@@ -4,33 +4,69 @@ require_relative 'previewer/web_server'
4
4
  require_relative 'previewer/file_listener'
5
5
 
6
6
  module Devcenter::Previewer
7
-
8
7
  extend self
9
8
 
10
9
  def preview(slug, md_path, host, port)
11
- server = WebServer.new(host, port, WebApp)
12
- file_listener_callback = Proc.new do |modified, added, removed|
13
- modified.each{ |f| Devcenter::Logger.log "File modified: #{f}" }
14
- WebApp.send_server_event
10
+ Runner.new(slug, md_path, host, port).run
11
+ end
12
+
13
+ class Runner
14
+ attr_reader :slug, :md_path, :host, :port, :url
15
+
16
+ def initialize(slug, md_path, host, port)
17
+ @slug = slug
18
+ @md_path = md_path
19
+ @host = host
20
+ @port = port
21
+ @url = "http://#{@host}:#{@port}/#{@slug}"
22
+ @listener = init_listener
23
+ @server = init_server
24
+ end
25
+
26
+ def run
27
+ start
28
+ @running = true
29
+ [:INT, :TERM].each do |signal|
30
+ trap(signal) do
31
+ stop
32
+ exit
33
+ end
34
+ end
35
+ sleep 1 while running?
36
+ end
37
+
38
+ private
39
+
40
+ def running?
41
+ @running
15
42
  end
16
43
 
17
- listener = FileListener.new(md_path, file_listener_callback)
44
+ def init_server
45
+ WebServer.new(host, port, WebApp)
46
+ end
18
47
 
19
- [:INT, :TERM].each do |signal|
20
- trap(signal) do
21
- listener.stop
22
- server.stop
23
- say "\nPreview finished."
24
- exit
48
+ def init_listener
49
+ file_listener_callback = Proc.new do |modified, added, removed|
50
+ modified.each{ |f| Devcenter::Logger.log "File modified: #{f}" }
51
+ WebApp.send_server_event
25
52
  end
53
+ FileListener.new(md_path, file_listener_callback)
26
54
  end
27
- listener.start
28
- url = "http://#{host}:#{port}/#{slug}"
29
- say "\nLive preview for #{slug} available in #{url}"
30
- say "It will refresh when you save #{md_path}"
31
- say "Press Ctrl+C to exit...\n"
32
- Launchy.open(url)
33
- server.start
34
- end
35
55
 
56
+ def start
57
+ @server.start
58
+ @listener.start
59
+ say "\nLive preview for #{slug} available in #{url}"
60
+ say "It will refresh when you save #{md_path}"
61
+ say "Press Ctrl+C to exit...\n"
62
+ Launchy.open(url)
63
+ end
64
+
65
+ def stop
66
+ @server.stop
67
+ @listener.stop
68
+ say "\nPreview finished."
69
+ @running = false
70
+ end
71
+ end
36
72
  end
@@ -6,7 +6,7 @@ module Devcenter::Previewer
6
6
  def initialize(file_path, callback)
7
7
  dir = File.dirname(file_path)
8
8
  basename = File.basename(file_path)
9
- @listener = Listen.to(dir, force_polling: true)
9
+ @listener = Listen.to(dir)
10
10
  @listener.filter(%r{#{basename}})
11
11
  @listener.change(&callback)
12
12
  end
@@ -16,7 +16,7 @@ module Devcenter::Previewer
16
16
  end
17
17
 
18
18
  def stop
19
- @listener.stop
19
+ @listener.stop rescue ThreadError
20
20
  Thread.kill(@thread)
21
21
  end
22
22
  end
@@ -10,11 +10,12 @@ module Devcenter::Previewer
10
10
  end
11
11
 
12
12
  def start
13
- @server.start
13
+ @thread = Thread.new { @server.start }
14
14
  end
15
15
 
16
16
  def stop
17
17
  @server.stop
18
+ Thread.kill(@thread)
18
19
  end
19
20
  end
20
21
 
@@ -1,3 +1,3 @@
1
1
  module Devcenter
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devcenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raul Murciano
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-01-25 00:00:00.000000000 Z
12
+ date: 2014-01-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: listen
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ~>
19
19
  - !ruby/object:Gem::Version
20
- version: 0.7.2
20
+ version: 1.3.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ~>
26
26
  - !ruby/object:Gem::Version
27
- version: 0.7.2
27
+ version: 1.3.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: commander
30
30
  requirement: !ruby/object:Gem::Requirement