docwatch-bin 1.1.2 → 1.1.6
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/bin/docwatch +34 -33
- data/lib/docwatch/connection.rb +7 -5
- data/lib/docwatch/renderer/markdown.rb +2 -2
- data/lib/docwatch/renderer.rb +2 -3
- data/lib/docwatch/session.rb +17 -9
- data/lib/docwatch/version.rb +1 -1
- data/lib/docwatch/watcher.rb +1 -1
- data/lib/docwatch.rb +1 -1
- metadata +27 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fab5dc94d05d184be658795e8470af249f9fdb4f3e8c8e0f376bb194f456b26e
|
4
|
+
data.tar.gz: 444cb4d3d3259107828b72077c2d77850860b4b10926fe9f86fbecb23577af2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9424eccb478f69d96c2353088c998188593fcd25ac217e66fe0b705bfe3320aa3afe9bdcae1fcb198805d8526f1c2d88a5b098b586062733b38248b953982b0
|
7
|
+
data.tar.gz: 7c494c2bfef056300b98bb76320646d87e03c7fba80aac0426b14990d814b8d7f21549cae527543868c9c57ea0b6db7027592e822a2f5479308d95318220340a
|
data/bin/docwatch
CHANGED
@@ -2,6 +2,13 @@
|
|
2
2
|
require_relative '../lib/docwatch'
|
3
3
|
include Docwatch
|
4
4
|
|
5
|
+
Params = Struct.new(
|
6
|
+
:verbose,
|
7
|
+
:version,
|
8
|
+
:file_path,
|
9
|
+
keyword_init: true,
|
10
|
+
)
|
11
|
+
|
5
12
|
class Main
|
6
13
|
def initialize(opts)
|
7
14
|
@opts = opts
|
@@ -12,20 +19,19 @@ class Main
|
|
12
19
|
end
|
13
20
|
|
14
21
|
def params
|
15
|
-
@params ||=
|
22
|
+
@params ||= Params.new(
|
16
23
|
verbose: @opts['--verbose'],
|
17
24
|
version: @opts['--version'],
|
18
|
-
|
19
|
-
|
20
|
-
})
|
25
|
+
file_path: @opts['<file-path>'],
|
26
|
+
)
|
21
27
|
end
|
22
28
|
|
23
29
|
def port
|
24
|
-
|
30
|
+
if @opts['--port'] == 'random'
|
25
31
|
# TODO: check if this port is in use
|
26
|
-
|
32
|
+
@port ||= 10_000 + Random.random_number(50_000)
|
27
33
|
else
|
28
|
-
@opts['--port']
|
34
|
+
@port ||= @opts['--port']
|
29
35
|
end
|
30
36
|
end
|
31
37
|
|
@@ -37,11 +43,6 @@ class Main
|
|
37
43
|
true
|
38
44
|
end
|
39
45
|
|
40
|
-
def exit_usage
|
41
|
-
puts DOCS
|
42
|
-
exit 0
|
43
|
-
end
|
44
|
-
|
45
46
|
def exit_version
|
46
47
|
puts Docwatch::VERSION
|
47
48
|
exit 0
|
@@ -63,7 +64,6 @@ class Main
|
|
63
64
|
|
64
65
|
def run
|
65
66
|
exit_version if params.version
|
66
|
-
exit_usage if params.help
|
67
67
|
exit_invalid_file unless File.exist?(params.file_path)
|
68
68
|
exit_invalid_port unless port_valid
|
69
69
|
|
@@ -75,12 +75,12 @@ class Main
|
|
75
75
|
watcher = Watcher.new(params.file_path)
|
76
76
|
|
77
77
|
Thread.new do
|
78
|
-
while socket = server.accept
|
78
|
+
while (socket = server.accept)
|
79
79
|
Thread.new do
|
80
80
|
Connection.handle(
|
81
81
|
renderer,
|
82
82
|
watcher,
|
83
|
-
Session.new(socket, logger)
|
83
|
+
Session.new(socket, logger),
|
84
84
|
)
|
85
85
|
end
|
86
86
|
end
|
@@ -90,40 +90,41 @@ class Main
|
|
90
90
|
puts 'Press enter to open page in the default handler (xdg-open)'.green
|
91
91
|
|
92
92
|
begin
|
93
|
-
while
|
93
|
+
while $stdin.gets
|
94
94
|
system('xdg-open %s' % url)
|
95
95
|
end
|
96
|
-
rescue Interrupt
|
96
|
+
rescue Interrupt
|
97
97
|
puts
|
98
98
|
puts 'Bye'
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
-
|
104
|
-
|
103
|
+
usage = <<~EOF
|
104
|
+
Usage:
|
105
105
|
#{File.basename($0)} [options] <file-path>
|
106
|
+
#{File.basename($0)} ( --version | --help )
|
106
107
|
|
107
|
-
|
108
|
+
Options:
|
108
109
|
-p, --port=VALUE Listen port [default: 8888]
|
109
|
-
|
110
|
-
-
|
110
|
+
--verbose Be verbose
|
111
|
+
-v, --version Show version
|
111
112
|
-h, --help Show this help
|
112
113
|
|
113
|
-
|
114
|
-
markdown
|
115
|
-
html
|
114
|
+
Renderers:
|
115
|
+
markdown (.md)
|
116
|
+
html (.html)
|
116
117
|
|
117
|
-
If #{'--port'.bold} is #{'random'.bold} a random port will be chosen, otherwise
|
118
|
-
|
118
|
+
If #{'--port'.bold} is #{'random'.bold} a random port will be chosen, otherwise the specified
|
119
|
+
one will be used. The default is 8888.
|
119
120
|
|
120
|
-
In #{'--verbose'.bold} mode, incoming HTTP requests and file change event
|
121
|
-
|
121
|
+
In #{'--verbose'.bold} mode, incoming HTTP requests and file change event notifications will be
|
122
|
+
printed to standard output.
|
122
123
|
EOF
|
123
124
|
|
124
125
|
begin
|
125
|
-
Main.run(Docopt
|
126
|
-
rescue Docopt::Exit
|
127
|
-
puts
|
128
|
-
exit
|
126
|
+
Main.run(Docopt.docopt(usage))
|
127
|
+
rescue Docopt::Exit
|
128
|
+
puts usage
|
129
|
+
exit 2
|
129
130
|
end
|
data/lib/docwatch/connection.rb
CHANGED
@@ -12,11 +12,13 @@ module Docwatch
|
|
12
12
|
|
13
13
|
def handle
|
14
14
|
case @session.path
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
when '/'
|
16
|
+
@session.respond_with_html(@renderer.to_html)
|
17
|
+
when '/wait'
|
18
|
+
@watcher.wait
|
19
|
+
@session.respond_with_text('OK')
|
20
|
+
else
|
21
|
+
@session.respond_with_404
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
data/lib/docwatch/renderer.rb
CHANGED
@@ -10,6 +10,7 @@ module Docwatch
|
|
10
10
|
def self.by_filetype(file_path)
|
11
11
|
extname = File.extname(file_path)[1..]
|
12
12
|
return if extname.length == 0
|
13
|
+
|
13
14
|
@@extensions[extname.to_sym].first.new(file_path)
|
14
15
|
end
|
15
16
|
|
@@ -44,9 +45,7 @@ module Docwatch
|
|
44
45
|
|
45
46
|
protected
|
46
47
|
|
47
|
-
|
48
|
-
@file_path
|
49
|
-
end
|
48
|
+
attr_reader :file_path
|
50
49
|
|
51
50
|
def contents
|
52
51
|
File.read(@file_path)
|
data/lib/docwatch/session.rb
CHANGED
@@ -4,7 +4,7 @@ module Docwatch
|
|
4
4
|
@socket = socket
|
5
5
|
@logger = logger
|
6
6
|
|
7
|
-
logger.log
|
7
|
+
logger.log(first_request_line)
|
8
8
|
end
|
9
9
|
|
10
10
|
def close
|
@@ -12,22 +12,28 @@ module Docwatch
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def path
|
15
|
-
|
16
|
-
|
15
|
+
if first_request_line.nil? || first_request_line.length == 0
|
16
|
+
return
|
17
|
+
end
|
18
|
+
|
19
|
+
first_request_line.split[1]
|
17
20
|
end
|
18
21
|
|
19
22
|
def respond_with_text(str)
|
20
|
-
respond_with(str, 'text/plain')
|
23
|
+
respond_with(200, str, 'text/plain')
|
21
24
|
end
|
22
25
|
|
23
26
|
def respond_with_html(str)
|
24
|
-
respond_with(str, 'text/html')
|
27
|
+
respond_with(200, str, 'text/html')
|
28
|
+
end
|
29
|
+
|
30
|
+
def respond_with_404
|
31
|
+
respond_with(404, 'Not Found', 'text/html')
|
25
32
|
end
|
26
33
|
|
27
|
-
def respond_with(str, content_type)
|
28
|
-
println 'HTTP/1.1
|
34
|
+
def respond_with(code, str, content_type)
|
35
|
+
println 'HTTP/1.1 %d' % code
|
29
36
|
println 'Content-Type: %s; charset=utf8' % content_type
|
30
|
-
# println 'Connection: close'
|
31
37
|
println
|
32
38
|
println str
|
33
39
|
|
@@ -37,7 +43,9 @@ module Docwatch
|
|
37
43
|
private
|
38
44
|
|
39
45
|
def input_lines
|
40
|
-
@input_lines ||= @socket.recvmsg[0].lines
|
46
|
+
@input_lines ||= @socket.recvmsg[0].lines
|
47
|
+
rescue
|
48
|
+
[]
|
41
49
|
end
|
42
50
|
|
43
51
|
def first_request_line
|
data/lib/docwatch/version.rb
CHANGED
data/lib/docwatch/watcher.rb
CHANGED
data/lib/docwatch.rb
CHANGED
metadata
CHANGED
@@ -1,99 +1,99 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docwatch-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- crdx
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: colorize
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 0.8.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 0.8.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: docopt
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.6.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.6.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: nokogiri
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '1.10'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '1.10'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: redcarpet
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.5'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.5'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: require_all
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 0
|
75
|
+
version: '3.0'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 0
|
82
|
+
version: '3.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
89
|
+
version: '13.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
96
|
+
version: '13.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rspec
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,19 +109,19 @@ dependencies:
|
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '3.8'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: simplecov
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
117
|
+
version: '0'
|
118
118
|
type: :development
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
124
|
+
version: '0'
|
125
125
|
description:
|
126
126
|
email:
|
127
127
|
executables:
|
@@ -144,7 +144,8 @@ files:
|
|
144
144
|
homepage: https://github.com/crdx/docwatch
|
145
145
|
licenses:
|
146
146
|
- MIT
|
147
|
-
metadata:
|
147
|
+
metadata:
|
148
|
+
rubygems_mfa_required: 'true'
|
148
149
|
post_install_message:
|
149
150
|
rdoc_options: []
|
150
151
|
require_paths:
|
@@ -153,14 +154,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
154
|
requirements:
|
154
155
|
- - ">="
|
155
156
|
- !ruby/object:Gem::Version
|
156
|
-
version: '0'
|
157
|
+
version: '3.0'
|
157
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
158
159
|
requirements:
|
159
160
|
- - ">="
|
160
161
|
- !ruby/object:Gem::Version
|
161
162
|
version: '0'
|
162
163
|
requirements: []
|
163
|
-
rubygems_version: 3.2.
|
164
|
+
rubygems_version: 3.2.29
|
164
165
|
signing_key:
|
165
166
|
specification_version: 4
|
166
167
|
summary: Preview markdown documents in the browser with reload on change
|