attractor 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +10 -0
- data/attractor.gemspec +2 -0
- data/lib/attractor/cli.rb +18 -0
- data/lib/attractor/reporter.rb +54 -4
- data/lib/attractor/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4f0de58545a6ef7aab553b1d35bf6141c89b0cabbb6941d8aaae17954123c318
|
|
4
|
+
data.tar.gz: 8d5cc1fa551799419a86ec11818f96d5dbcbe2f44d0bd5e4f2c2cb0c9f9525ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e69218d04e69b8ddb84d64c9032ce48285089d0e79d7c92e4513708cd3ec088c7d747dd955d2d53ea983a3b45d7ccca9aad29c449d1e25e2c608f9f3bcb6c65c
|
|
7
|
+
data.tar.gz: d273824cc41ecbc7560fe0c18b8765fe04bfad3df461d10bc3a7ab7803c02c6416d2025971d8237bcdaa53a428b6623f7e33d817593d9b38426ce053c035cb1b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
|
@@ -52,6 +52,16 @@ Generate a full report
|
|
|
52
52
|
$ --file_prefix|-p app/models
|
|
53
53
|
$ --watch|-w
|
|
54
54
|
|
|
55
|
+
Serve the output on http://localhost:7890
|
|
56
|
+
|
|
57
|
+
$ attractor serve
|
|
58
|
+
$ --file_prefix|-p app/models
|
|
59
|
+
$ --watch|-w
|
|
60
|
+
|
|
61
|
+
### Live Reloading
|
|
62
|
+
|
|
63
|
+
If you have `guard-livereload` (or a similar service) running on your project, you can leverage the hot reloading functionality by specifying `--watch|-w`. Attractor will then live-reload the browser window when a file watched by `guard-livereload` changes.
|
|
64
|
+
|
|
55
65
|
## Development
|
|
56
66
|
|
|
57
67
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/attractor.gemspec
CHANGED
|
@@ -38,6 +38,8 @@ Gem::Specification.new do |spec|
|
|
|
38
38
|
spec.add_dependency 'flog', '~> 4.0'
|
|
39
39
|
spec.add_dependency 'launchy'
|
|
40
40
|
spec.add_dependency 'listen', '~> 3.0'
|
|
41
|
+
spec.add_dependency 'rack'
|
|
42
|
+
spec.add_dependency 'rack-livereload'
|
|
41
43
|
spec.add_dependency 'thor'
|
|
42
44
|
spec.add_dependency 'tilt'
|
|
43
45
|
|
data/lib/attractor/cli.rb
CHANGED
|
@@ -36,5 +36,23 @@ module Attractor
|
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
|
+
|
|
40
|
+
desc 'serve', 'Serves the report on localhost'
|
|
41
|
+
option :format, aliases: :f, default: 'html'
|
|
42
|
+
option :file_prefix, aliases: :p
|
|
43
|
+
option :watch, aliases: :w, type: :boolean
|
|
44
|
+
def serve
|
|
45
|
+
if options[:watch]
|
|
46
|
+
puts 'Listening for file changes...'
|
|
47
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).watch
|
|
48
|
+
else
|
|
49
|
+
case options[:format]
|
|
50
|
+
when 'html'
|
|
51
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).report
|
|
52
|
+
else
|
|
53
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).report
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
39
57
|
end
|
|
40
58
|
end
|
data/lib/attractor/reporter.rb
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
require 'descriptive_statistics/safe'
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'launchy'
|
|
6
|
+
require 'rack'
|
|
7
|
+
require 'rack/livereload'
|
|
6
8
|
require 'tilt'
|
|
7
9
|
|
|
8
10
|
module Attractor
|
|
@@ -25,6 +27,14 @@ module Attractor
|
|
|
25
27
|
def report
|
|
26
28
|
@suggestions = @suggester.suggest
|
|
27
29
|
end
|
|
30
|
+
|
|
31
|
+
def render
|
|
32
|
+
'Attractor'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def serve
|
|
36
|
+
@suggestions = @suggester.suggest
|
|
37
|
+
end
|
|
28
38
|
end
|
|
29
39
|
|
|
30
40
|
# console reporter
|
|
@@ -51,15 +61,55 @@ module Attractor
|
|
|
51
61
|
super
|
|
52
62
|
|
|
53
63
|
puts 'Generating an HTML report'
|
|
54
|
-
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
|
55
|
-
output = template.render self
|
|
56
64
|
|
|
57
65
|
FileUtils.mkdir_p './attractor_output'
|
|
58
66
|
|
|
59
|
-
File.open('./attractor_output/index.html', 'w') { |file| file.write(
|
|
67
|
+
File.open('./attractor_output/index.html', 'w') { |file| file.write(render) }
|
|
60
68
|
puts "Generated HTML report at #{File.expand_path './attractor_output/index.html'}"
|
|
61
69
|
|
|
62
|
-
Launchy.open(File.expand_path
|
|
70
|
+
Launchy.open(File.expand_path('./attractor_output/index.html'))
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def render
|
|
74
|
+
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
|
75
|
+
template.render self
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# serving the HTML locally
|
|
80
|
+
class RackReporter < Reporter
|
|
81
|
+
def report
|
|
82
|
+
super
|
|
83
|
+
|
|
84
|
+
app = serve_via_rack
|
|
85
|
+
|
|
86
|
+
Rack::Handler::WEBrick.run app, Port: 7890
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def render
|
|
90
|
+
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
|
91
|
+
template.render self
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def watch
|
|
95
|
+
@suggestions = @suggester.suggest
|
|
96
|
+
|
|
97
|
+
app = serve_via_rack
|
|
98
|
+
|
|
99
|
+
Rack::Handler::WEBrick.run Rack::LiveReload.new(app), Port: 7890
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
private
|
|
103
|
+
|
|
104
|
+
def serve_via_rack
|
|
105
|
+
app = lambda do |_env|
|
|
106
|
+
[200, { 'Content-Type' => 'text/html' }, [render]]
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
puts 'Serving attractor at http://localhost:7890'
|
|
110
|
+
Launchy.open('http://localhost:7890')
|
|
111
|
+
|
|
112
|
+
app
|
|
63
113
|
end
|
|
64
114
|
end
|
|
65
115
|
end
|
data/lib/attractor/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: attractor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Julian Rubisch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-09-
|
|
11
|
+
date: 2019-09-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: churn
|
|
@@ -80,6 +80,34 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '3.0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rack
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :runtime
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
- !ruby/object:Gem::Dependency
|
|
98
|
+
name: rack-livereload
|
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
|
100
|
+
requirements:
|
|
101
|
+
- - ">="
|
|
102
|
+
- !ruby/object:Gem::Version
|
|
103
|
+
version: '0'
|
|
104
|
+
type: :runtime
|
|
105
|
+
prerelease: false
|
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
+
requirements:
|
|
108
|
+
- - ">="
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
83
111
|
- !ruby/object:Gem::Dependency
|
|
84
112
|
name: thor
|
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|