kdwatch 0.4.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -7
- data/bin/kds +54 -0
- data/bin/kdwatch +34 -2
- data/kdwatch.gemspec +1 -1
- data/lib/kdwatch/version.rb +1 -1
- data/lib/kdwatch-app.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec097b76b694691e1a066ec87c23ebe004f085940b5ce222e1ec8b383f7cbbd8
|
4
|
+
data.tar.gz: 3f3b1dff065d860cc01a8a7e6598013faa679aeb9c0206dffd17a0dd85b9a6c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f105edcc85863d728f629c9b49fae44343b67e7f98af8943a1f22202b0f7ff4f88ad347a9a69b77672539dad159ab2ba0c51f08877a1a18e429794c365b764b7
|
7
|
+
data.tar.gz: 17801699b473113c2b66b8aedf3ac5c15ee124d05a460a25b9023409130aed0c703dac48c831404f410eb53d9be148e64d4ca8566d52e2ddad716d8e6bc06e79
|
data/README.md
CHANGED
@@ -51,9 +51,11 @@ There can only be one kdwatch active on each host and port. You will
|
|
51
51
|
need to specify a different port (or host!) to run more than one
|
52
52
|
kdwatch at the same time.
|
53
53
|
|
54
|
-
* `-p port` to select a port number
|
55
|
-
* `-1` to `6` as a shortcut for `-p 7991`
|
54
|
+
* `-p port` to select a specific port number
|
55
|
+
* `-1` to `6` as a shortcut for `-p 7991` to `-p 7996` (must be last
|
56
56
|
option because of an idiosyncrasy of the optionparser library)
|
57
|
+
* if no port number is given, `kdwatch` will hunt for a port number
|
58
|
+
that doesn't have a listener, starting with 7991.
|
57
59
|
|
58
60
|
kdwatch has two flags to simplify handling servers that might be
|
59
61
|
accumulating on one host/port:
|
@@ -64,18 +66,19 @@ accumulating on one host/port:
|
|
64
66
|
So the most likely use is going to be:
|
65
67
|
|
66
68
|
```
|
67
|
-
kdwatch
|
69
|
+
kdwatch
|
68
70
|
```
|
69
71
|
|
70
|
-
|
72
|
+
to start a new server on a new port number.
|
73
|
+
|
74
|
+
These tend to accumulate a bit, so sometimes you'll want to replace an
|
75
|
+
existing one (here: port number 7992):
|
71
76
|
|
72
77
|
```
|
73
78
|
kdwatch -r2
|
74
79
|
```
|
75
80
|
|
76
|
-
|
77
|
-
|
78
|
-
or, if your drafts are weirdly named or you need to select one out of
|
81
|
+
If your drafts are weirdly named or you need to select one out of
|
79
82
|
many
|
80
83
|
|
81
84
|
```
|
data/bin/kds
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'socket'
|
3
|
+
require 'uri'
|
4
|
+
require 'open-uri'
|
5
|
+
require 'optparse'
|
6
|
+
|
7
|
+
KDWATCH_VERSION=Gem.loaded_specs["kdwatch"].version rescue "unknown-version"
|
8
|
+
|
9
|
+
loport = 7991
|
10
|
+
hiport = 7999
|
11
|
+
match = nil
|
12
|
+
|
13
|
+
op = OptionParser.new do |opts|
|
14
|
+
opts.banner = <<BANNER
|
15
|
+
Usage: kds [options] [match...]
|
16
|
+
Version: #{KDWATCH_VERSION} (from kdwatch)
|
17
|
+
BANNER
|
18
|
+
opts.on("-v", "--version", "Show version and exit") do |v|
|
19
|
+
puts "kds, from kdwatch #{KDWATCH_VERSION}"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
opts.on("-h", "--help", "Show option summary and exit") do |v|
|
23
|
+
puts opts
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
opts.on("-fNUM", "--from=NUM", Integer, "Search from port number") do |v|
|
27
|
+
loport = v
|
28
|
+
end
|
29
|
+
opts.on("-tNUM", "--to=NUM", Integer, "Search to port number") do |v|
|
30
|
+
hiport = v
|
31
|
+
end
|
32
|
+
end
|
33
|
+
op.parse!
|
34
|
+
|
35
|
+
if ARGV.size != 0
|
36
|
+
match = ARGV.join(" ")
|
37
|
+
end
|
38
|
+
|
39
|
+
(loport..hiport).each do |p|
|
40
|
+
url = "http://127.0.0.1:#{p}"
|
41
|
+
URI(url).open do |f|
|
42
|
+
s = f.readpartial(40000)
|
43
|
+
sc = s.scan(/id="title".*?<|Internal server error/)
|
44
|
+
sc.each do |scl|
|
45
|
+
scl.sub!(/id="title">/, "")
|
46
|
+
scl.chomp!('<')
|
47
|
+
puts "#{url} #{scl}"
|
48
|
+
if match && scl.downcase.include?(match.downcase)
|
49
|
+
spawn("open #{url} || xdg-open #{url} || echo @@@ Please open #{url}")
|
50
|
+
end
|
51
|
+
break
|
52
|
+
end
|
53
|
+
end rescue nil
|
54
|
+
end
|
data/bin/kdwatch
CHANGED
@@ -6,11 +6,24 @@ ENV["KRAMDOWN_PERSISTENT"]="yes"
|
|
6
6
|
|
7
7
|
require 'optparse'
|
8
8
|
require 'ostruct'
|
9
|
+
require 'socket'
|
9
10
|
|
10
11
|
require_relative "../lib/kdwatch/version"
|
11
12
|
|
12
13
|
KDWATCH_PORT = 7991 # currently unregistered...
|
13
14
|
|
15
|
+
def socket_is_free(host, port, uri)
|
16
|
+
begin
|
17
|
+
TCPSocket.new(host, port, connect_timeout: 1)
|
18
|
+
rescue Errno::ECONNREFUSED => e
|
19
|
+
return true
|
20
|
+
rescue => e
|
21
|
+
warn "*** #{uri} -- #{e.inspect}"
|
22
|
+
return nil # break, but don't use
|
23
|
+
end
|
24
|
+
return false
|
25
|
+
end
|
26
|
+
|
14
27
|
options = OpenStruct.new
|
15
28
|
|
16
29
|
op = OptionParser.new do |opts|
|
@@ -30,7 +43,7 @@ BANNER
|
|
30
43
|
opts.on("-r", "--[no-]replace", "Replace existing server")
|
31
44
|
opts.on("-oNAME", "--host=NAME", String, "Server host (127.0.0.1)")
|
32
45
|
opts.on("-i", "--internet", 'Abbr. "on the Internet" (host = "::")')
|
33
|
-
opts.on("-pNUM", "--port=NUM", Integer, "Port number (#{KDWATCH_PORT})")
|
46
|
+
opts.on("-pNUM", "--port=NUM", Integer, "Port number (#{KDWATCH_PORT}...)")
|
34
47
|
opts.on("-[1-6]", "--[1-6]", Integer, "Abbr. port number (#{KDWATCH_PORT/10}x), must be last")
|
35
48
|
end
|
36
49
|
begin
|
@@ -52,7 +65,26 @@ if short_port = options[""]
|
|
52
65
|
warn "** overriding port #{options.port} with #{port}" if options.port
|
53
66
|
options.port = port
|
54
67
|
else
|
55
|
-
options.port
|
68
|
+
unless options.port
|
69
|
+
port = KDWATCH_PORT
|
70
|
+
host = options.host
|
71
|
+
host = "[#{host}]" if host =~ /:/
|
72
|
+
uri = nil
|
73
|
+
found = false
|
74
|
+
100.times do
|
75
|
+
uri = "http://#{host}:#{port}"
|
76
|
+
# warn "Trying URI #{uri}"
|
77
|
+
found = socket_is_free(options.host, port, uri)
|
78
|
+
break unless found == false
|
79
|
+
port += 1
|
80
|
+
end
|
81
|
+
unless found
|
82
|
+
warn "*** Cannot find port number available to serve from!"
|
83
|
+
exit 1
|
84
|
+
end
|
85
|
+
warn "*** Using URI: #{uri}"
|
86
|
+
options.port = port
|
87
|
+
end
|
56
88
|
end
|
57
89
|
|
58
90
|
# p options
|
data/kdwatch.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
24
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
|
25
25
|
end
|
26
|
-
spec.executables = ['kdwatch']
|
26
|
+
spec.executables = ['kdwatch', 'kds']
|
27
27
|
spec.require_paths = ["lib"]
|
28
28
|
|
29
29
|
spec.add_dependency "bundler", '~> 2.2'
|
data/lib/kdwatch/version.rb
CHANGED
data/lib/kdwatch-app.rb
CHANGED
@@ -9,7 +9,7 @@ require "rack-livereload"
|
|
9
9
|
require "guard"
|
10
10
|
require "sinatra"
|
11
11
|
require "kramdown-rfc2629"
|
12
|
-
ENV["KDRFC_PREPEND"] = "time"
|
12
|
+
ENV["KDRFC_PREPEND"] = "time" if system("time", "true", err: "/dev/null")
|
13
13
|
require "kramdown-rfc/kdrfc-processor"
|
14
14
|
require "net/http/persistent"
|
15
15
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kdwatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Carsten Bormann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-06-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -127,6 +127,7 @@ email:
|
|
127
127
|
- cabo@tzi.org
|
128
128
|
executables:
|
129
129
|
- kdwatch
|
130
|
+
- kds
|
130
131
|
extensions: []
|
131
132
|
extra_rdoc_files: []
|
132
133
|
files:
|
@@ -134,6 +135,7 @@ files:
|
|
134
135
|
- Gemfile
|
135
136
|
- LICENSE.txt
|
136
137
|
- README.md
|
138
|
+
- bin/kds
|
137
139
|
- bin/kdwatch
|
138
140
|
- kdwatch.gemspec
|
139
141
|
- lib/kdwatch-app.rb
|
@@ -157,7 +159,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
157
159
|
- !ruby/object:Gem::Version
|
158
160
|
version: '0'
|
159
161
|
requirements: []
|
160
|
-
rubygems_version: 3.
|
162
|
+
rubygems_version: 3.3.11
|
161
163
|
signing_key:
|
162
164
|
specification_version: 4
|
163
165
|
summary: 'kdwatch: open auto-reloaded HTML for kramdown-rfc in a browser.'
|