devcenter 0.0.2 → 0.0.3

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/lib/devcenter.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require_relative '../vendor/sinatra/lib/sinatra'
2
2
  require_relative 'devcenter/version'
3
+ require_relative 'devcenter/logger'
3
4
  require_relative 'devcenter/helpers'
4
5
  require_relative 'devcenter/previewer'
5
6
  require_relative 'devcenter/coderay_extensions'
data/lib/devcenter/cli.rb CHANGED
@@ -13,7 +13,10 @@ command :open do |c|
13
13
  c.summary = 'Open the article with the given slug in the default browser'
14
14
  c.description = c.summary
15
15
  c.example 'devcenter open process-model', 'Opens https://devcenter.heroku.com/articles/process-model in the default browser'
16
+ c.option '--debug', 'Output internal log to help debugging'
16
17
  c.action do |args, options|
18
+ options.default :debug => false
19
+ Devcenter::Logger.active = options.debug
17
20
  Devcenter::Commands::Open.run(args[0])
18
21
  end
19
22
  end
@@ -24,8 +27,10 @@ command :pull do |c|
24
27
  c.description = c.summary
25
28
  c.example 'devcenter pull process-model', 'Saves the content of the article with the "process-model" slug to a local process-model.md file in the current directory'
26
29
  c.option '--force', 'Skip confirmation and overwrite existing local file'
30
+ c.option '--debug', 'Output internal log to help debugging'
27
31
  c.action do |args, options|
28
- options.default :force => false
32
+ options.default :force => false, :debug => false
33
+ Devcenter::Logger.active = options.debug
29
34
  Devcenter::Commands::Pull.run(args[0], options.force)
30
35
  end
31
36
  end
@@ -38,8 +43,10 @@ command :preview do |c|
38
43
 
39
44
  c.option '--host HOST', String, 'Host where the preview will be available'
40
45
  c.option '--port PORT_NUMBER', Integer, 'Port where the preview will be available'
46
+ c.option '--debug', 'Output internal log to help debugging'
41
47
  c.action do |args, options|
42
- options.default :host => '127.0.0.1', :port => 3000
48
+ options.default :host => '127.0.0.1', :port => 3000, :debug => false
49
+ Devcenter::Logger.active = options.debug
43
50
  Devcenter::Commands::Preview.run(args[0], options.host, options.port)
44
51
  end
45
52
  end
@@ -7,6 +7,7 @@ module Devcenter::Commands
7
7
 
8
8
  class Base
9
9
 
10
+ include Devcenter::Logger
10
11
  include Devcenter::Helpers
11
12
 
12
13
  def self.run(*args)
@@ -43,5 +44,6 @@ module Devcenter::Commands
43
44
  say message.join("\n")
44
45
  exit
45
46
  end
47
+
46
48
  end
47
49
  end
@@ -15,14 +15,13 @@ module Devcenter::Commands
15
15
 
16
16
  def run
17
17
  url = article_url(@slug)
18
+ log "Connecting to #{url}"
18
19
  head = Excon.head(url)
19
20
  case head.status
20
21
  when 200
21
- say("Opening #{@slug} docs")
22
+ log "Page found, opening"
22
23
  launchy = Launchy.open(url)
23
- if launchy.respond_to?(:join)
24
- launchy.join
25
- end
24
+ launchy.join if launchy.respond_to?(:join)
26
25
  when 301, 302
27
26
  say "Redirected to #{head.headers['Location']}"
28
27
  when 404
@@ -0,0 +1,17 @@
1
+ module Devcenter::Logger
2
+
3
+ extend self
4
+
5
+ def self.active=(bool)
6
+ @@active = bool
7
+ end
8
+
9
+ def self.active?
10
+ !!@@active
11
+ end
12
+
13
+ def log(str)
14
+ puts "devcenter gem: #{str}" if Devcenter::Logger.active?
15
+ end
16
+
17
+ end
@@ -11,6 +11,7 @@ module Devcenter::Previewer
11
11
  def preview(slug, md_path, host, port)
12
12
  server = WebServer.new(host, port, WebApp, true)
13
13
  file_listener_callback = Proc.new do |modified, added, removed|
14
+ modified.each{ |f| Devcenter::Logger.log "File modified: #{f}" }
14
15
  WebApp.send_server_event
15
16
  end
16
17
 
@@ -2,6 +2,8 @@ module Devcenter::Previewer
2
2
 
3
3
  class WebApp < Sinatra::Base
4
4
 
5
+ include Devcenter::Logger
6
+
5
7
  set :logging, false
6
8
  set connections: []
7
9
  set :public_folder, File.dirname(__FILE__)
@@ -17,17 +19,34 @@ module Devcenter::Previewer
17
19
  get '/stream', provides: 'text/event-stream' do
18
20
  stream :keep_open do |conn|
19
21
  settings.connections << conn
20
- conn.callback { settings.connections.delete(conn) } # connection closed properly
21
- conn.errback do # connection closed due to an error
22
+ log "New incoming connection (#{settings.connections.size} open)"
23
+
24
+ # refresh connection before browser times out
25
+ EventMachine::PeriodicTimer.new(20) do
26
+ log "Refreshing connection"
27
+ conn << ":refreshing \n\n"
28
+ end
29
+
30
+ conn.callback do
31
+ settings.connections.delete(conn)
32
+ log "Connection closed locally (#{settings.connections.size} open)"
33
+ end
34
+
35
+ conn.errback do
22
36
  conn.close
23
37
  settings.connections.delete(conn)
38
+ settings.connections.delete(conn)
39
+ log "Connection closed externally (#{settings.connections.size} open)"
24
40
  end
25
41
  end
26
42
  end
27
43
 
28
44
  get '/:slug' do
45
+ log "Local article requested: #{params[:slug]}"
29
46
  src_path = File.join(Dir.pwd, "#{params[:slug]}.md")
47
+ log "Parsing"
30
48
  @article = parse_article(src_path)
49
+ log "Serving"
31
50
  erb :article
32
51
  end
33
52
 
@@ -45,6 +64,7 @@ module Devcenter::Previewer
45
64
  end
46
65
 
47
66
  def self.send_server_event
67
+ Devcenter::Logger.log "Serving server side event to #{settings.connections.size} connections"
48
68
  settings.connections.each do |conn|
49
69
  conn << "data: reload\n\n"
50
70
  end
@@ -1,3 +1,3 @@
1
1
  module Devcenter
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
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: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -228,6 +228,7 @@ files:
228
228
  - lib/devcenter/commands/pull.rb
229
229
  - lib/devcenter/helpers.rb
230
230
  - lib/devcenter/layout.html
231
+ - lib/devcenter/logger.rb
231
232
  - lib/devcenter/md_parser.rb
232
233
  - lib/devcenter/previewer.rb
233
234
  - lib/devcenter/previewer/assets/images/public/article-icon-large.png