attractor 2.0.3 → 2.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +33 -6
  3. data/Rakefile +13 -13
  4. data/app/assets/javascripts/index.pack.js +1 -1
  5. data/app/assets/stylesheets/main.css +1 -1
  6. data/exe/attractor +1 -1
  7. data/lib/attractor.rb +29 -13
  8. data/lib/attractor.rb~ +44 -0
  9. data/lib/attractor/cache.rb +82 -0
  10. data/lib/attractor/cache.rb~ +67 -0
  11. data/lib/attractor/calculators/base_calculator.rb +38 -14
  12. data/lib/attractor/calculators/base_calculator.rb~ +64 -0
  13. data/lib/attractor/cli.rb +48 -44
  14. data/lib/attractor/cli.rb~ +84 -0
  15. data/lib/attractor/detectors/base_detector.rb~ +4 -0
  16. data/lib/attractor/duration_parser.rb +7 -5
  17. data/lib/attractor/duration_parser.rb~ +27 -0
  18. data/lib/attractor/gem_names.rb +3 -1
  19. data/lib/attractor/gem_names.rb~ +23 -0
  20. data/lib/attractor/registry_entry.rb +0 -1
  21. data/lib/attractor/registry_entry.rb~ +2 -0
  22. data/lib/attractor/reporters/base_reporter.rb +22 -14
  23. data/lib/attractor/reporters/base_reporter.rb~ +54 -0
  24. data/lib/attractor/reporters/console_reporter.rb +4 -4
  25. data/lib/attractor/reporters/console_reporter.rb~ +21 -0
  26. data/lib/attractor/reporters/html_reporter.rb +23 -25
  27. data/lib/attractor/reporters/html_reporter.rb~ +48 -0
  28. data/lib/attractor/reporters/sinatra_reporter.rb +18 -24
  29. data/lib/attractor/suggester.rb +3 -1
  30. data/lib/attractor/tmp/churn/9f86bc9b7ec6bf59cbf7a111ce8b1159ae128347.json +1 -0
  31. data/lib/attractor/value.rb +8 -4
  32. data/lib/attractor/value.rb~ +30 -0
  33. data/lib/attractor/version.rb +1 -1
  34. data/lib/attractor/watcher.rb +7 -3
  35. data/lib/attractor/watcher.rb~ +24 -0
  36. metadata +29 -31
  37. data/.babelrc +0 -4
  38. data/.eslintrc.json +0 -25
  39. data/.gitignore +0 -20
  40. data/.rubocop.yml +0 -2
  41. data/CHANGELOG.md +0 -99
  42. data/Gemfile +0 -4
  43. data/Guardfile +0 -27
  44. data/attractor.gemspec +0 -65
  45. data/bin/console +0 -14
  46. data/bin/setup +0 -8
  47. data/bin/standardize +0 -4
  48. data/bin/test +0 -6
  49. data/dist/calculator.bundle.js +0 -1
  50. data/lib/attractor/reporters/.keep +0 -0
  51. data/package-lock.json +0 -6906
  52. data/package.json +0 -53
  53. data/webpack.config.js +0 -23
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Attractor
4
+ # functionality for watching file system changes
5
+ class Watcher
6
+ def initialize(file_prefix, callback)
7
+ @file_prefix = file_prefix
8
+ @callback = callback
9
+ end
10
+
11
+ def watch
12
+ @callback.call
13
+
14
+ listener = Listen.to(@file_prefix, ignore: /^attractor_output/) do |modified, _added, _removed|
15
+ if modified
16
+ puts "#{modified.map(&:to_s).join(', ')} modified, recalculating..."
17
+ @callback.call
18
+ end
19
+ end
20
+ listener.start
21
+ sleep
22
+ end
23
+ end
24
+ end
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: 2.0.3
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Rubisch
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-16 00:00:00.000000000 Z
11
+ date: 2021-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: churn
@@ -154,30 +154,30 @@ dependencies:
154
154
  name: attractor-javascript
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - ">="
157
+ - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: '0'
159
+ version: 0.2.0
160
160
  type: :development
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
- - - ">="
164
+ - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: '0'
166
+ version: 0.2.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: attractor-ruby
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
- - - ">="
171
+ - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: '0'
173
+ version: 0.2.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
- - - ">="
178
+ - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: '0'
180
+ version: 0.2.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: autoprefixer-rails
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -358,13 +358,6 @@ executables:
358
358
  extensions: []
359
359
  extra_rdoc_files: []
360
360
  files:
361
- - ".babelrc"
362
- - ".eslintrc.json"
363
- - ".gitignore"
364
- - ".rubocop.yml"
365
- - CHANGELOG.md
366
- - Gemfile
367
- - Guardfile
368
361
  - LICENSE
369
362
  - README.md
370
363
  - Rakefile
@@ -376,32 +369,37 @@ files:
376
369
  - app/assets/javascripts/index.pack.js
377
370
  - app/assets/stylesheets/main.css
378
371
  - app/views/index.html.erb
379
- - attractor.gemspec
380
- - bin/console
381
- - bin/setup
382
- - bin/standardize
383
- - bin/test
384
- - dist/calculator.bundle.js
385
372
  - exe/attractor
386
373
  - lib/attractor.rb
374
+ - lib/attractor.rb~
375
+ - lib/attractor/cache.rb
376
+ - lib/attractor/cache.rb~
387
377
  - lib/attractor/calculators/base_calculator.rb
378
+ - lib/attractor/calculators/base_calculator.rb~
388
379
  - lib/attractor/cli.rb
380
+ - lib/attractor/cli.rb~
389
381
  - lib/attractor/detectors/base_detector.rb
382
+ - lib/attractor/detectors/base_detector.rb~
390
383
  - lib/attractor/duration_parser.rb
384
+ - lib/attractor/duration_parser.rb~
391
385
  - lib/attractor/gem_names.rb
386
+ - lib/attractor/gem_names.rb~
392
387
  - lib/attractor/registry_entry.rb
393
- - lib/attractor/reporters/.keep
388
+ - lib/attractor/registry_entry.rb~
394
389
  - lib/attractor/reporters/base_reporter.rb
390
+ - lib/attractor/reporters/base_reporter.rb~
395
391
  - lib/attractor/reporters/console_reporter.rb
392
+ - lib/attractor/reporters/console_reporter.rb~
396
393
  - lib/attractor/reporters/html_reporter.rb
394
+ - lib/attractor/reporters/html_reporter.rb~
397
395
  - lib/attractor/reporters/sinatra_reporter.rb
398
396
  - lib/attractor/suggester.rb
397
+ - lib/attractor/tmp/churn/9f86bc9b7ec6bf59cbf7a111ce8b1159ae128347.json
399
398
  - lib/attractor/value.rb
399
+ - lib/attractor/value.rb~
400
400
  - lib/attractor/version.rb
401
401
  - lib/attractor/watcher.rb
402
- - package-lock.json
403
- - package.json
404
- - webpack.config.js
402
+ - lib/attractor/watcher.rb~
405
403
  homepage: https://github.com/julianrubisch/attractor
406
404
  licenses:
407
405
  - MIT
@@ -410,7 +408,7 @@ metadata:
410
408
  source_code_uri: https://github.com/julianrubisch/attractor
411
409
  bug_tracker_uri: https://github.com/julianrubisch/attractor/issues
412
410
  changelog_uri: https://github.com/julianrubisch/attractor/CHANGELOG.md
413
- post_install_message:
411
+ post_install_message:
414
412
  rdoc_options: []
415
413
  require_paths:
416
414
  - lib
@@ -425,8 +423,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
425
423
  - !ruby/object:Gem::Version
426
424
  version: '0'
427
425
  requirements: []
428
- rubygems_version: 3.1.2
429
- signing_key:
426
+ rubygems_version: 3.2.3
427
+ signing_key:
430
428
  specification_version: 4
431
429
  summary: Churn vs Complexity Chart Generator
432
430
  test_files: []
data/.babelrc DELETED
@@ -1,4 +0,0 @@
1
- {
2
- "presets": ["@babel/preset-env", "@babel/preset-react"],
3
- "plugins": ["@babel/plugin-transform-runtime"]
4
- }
data/.eslintrc.json DELETED
@@ -1,25 +0,0 @@
1
- {
2
- "rules": {},
3
- "env": {
4
- "es6": true,
5
- "browser": true
6
- },
7
- "parserOptions": {
8
- "ecmaVersion": 2018,
9
- "sourceType": "module",
10
- "ecmaFeatures": {
11
- "jsx": true
12
- }
13
- },
14
- "extends": [
15
- "eslint:recommended",
16
- "plugin:prettier/recommended"
17
- ],
18
- "globals": {
19
- "Atomics": "readonly",
20
- "SharedArrayBuffer": "readonly"
21
- },
22
- "plugins": [
23
- "react"
24
- ]
25
- }
data/.gitignore DELETED
@@ -1,20 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /_yardoc/
4
- /coverage/
5
- /doc/
6
- /pkg/
7
- /spec/reports/
8
- /tmp/
9
- /attractor_output/
10
- /vendor/
11
- **/node_modules/
12
-
13
- # rspec failure tracking
14
- .rspec_status
15
-
16
- *.swp
17
- Gemfile.lock
18
-
19
- *~
20
- \#*\#
data/.rubocop.yml DELETED
@@ -1,2 +0,0 @@
1
- Metrics/LineLength:
2
- Max: 120
data/CHANGELOG.md DELETED
@@ -1,99 +0,0 @@
1
- ## RELEASE 2.0.3
2
-
3
- * ENHANCEMENT: fetch from relative path, prepare for attractor-rails
4
-
5
- ## RELEASE 2.0.2
6
-
7
- * FIX: Require forwardable
8
-
9
- ## RELEASE 2.0.1
10
-
11
- * ENHANCEMENT: Add CLI option to Output gem version
12
-
13
- ## RELEASE 2.0.0
14
-
15
- * BREAKING: Move to a plug-in architecture, see README
16
-
17
- ## RELEASE 1.2.0
18
-
19
- * FEATURE: Backport React to static output
20
-
21
- ## RELEASE 1.1.1
22
-
23
- * ENHANCEMENT: `--minimum_churn` and `--start_ago` CLI options
24
-
25
- ## RELEASE 1.1.0
26
-
27
- * FEATURE: Auto-detect ruby and js projects
28
-
29
- ## RELEASE 1.0.2
30
-
31
- * ENHANCEMENT: make launching of browser optional
32
-
33
- ## RELEASE 1.0.1
34
-
35
- * FIX: fix sinatra reporter
36
-
37
- ## RELEASE 1.0.0
38
-
39
- * BREAKING: Add Javascript / ES6 support via typhonjs-escomplex
40
-
41
- ## RELEASE 0.6.1
42
-
43
- * ENHANCEMENT: add histogram for complexity/churn only measurements
44
-
45
- ## RELEASE 0.6.0
46
-
47
- * FEATURE: Add treemap visualization
48
-
49
- ## RELEASE 0.5.1
50
-
51
- * ENHANCEMENT: Make filenames in graph optional
52
-
53
- ## RELEASE 0.5.0
54
-
55
- * FEATURE: display additional information (method teardown, git file history) when you click on a data point
56
-
57
- ## RELEASE 0.4.3
58
-
59
- * ENHANCEMENT: Client side filtering of data points via text input
60
-
61
- ## RELEASE 0.4.2
62
-
63
- * ENHANCEMENT: Axis labels
64
-
65
- ## RELEASE 0.4.1
66
-
67
- * FIX: fix a bug where the regression would show NaN values
68
-
69
- ## RELEASE 0.4.0
70
-
71
- * FEATURE: Specify suggestion threshold and regression type via UI
72
-
73
- ## RELEASE 0.3.4
74
-
75
- * ENHANCEMENT: let's not depend on an internet connection
76
-
77
- ## RELEASE 0.3.3
78
-
79
- * ENHANCEMENT: use sinatra to serve values and suggestions asynchronously
80
-
81
- ## RELEASE 0.3.2
82
-
83
- * ENHANCEMENT: logo
84
-
85
- ## RELEASE 0.3.1
86
-
87
- * ENHANCEMENT: make an actual UI
88
-
89
- ## RELEASE 0.3.0
90
-
91
- * FEATURE: Rack live reload
92
-
93
- ## RELEASE 0.2.1
94
-
95
- * ENHANCEMENT: automatically open browser window
96
-
97
- ## RELEASE 0.2.0
98
-
99
- * FEATURE: add file watching functionality
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- # Specify your gem's dependencies in attractor.gemspec
4
- gemspec
data/Guardfile DELETED
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # A sample Guardfile
4
- # More info at https://github.com/guard/guard#readme
5
-
6
- ## Uncomment and set this to only include directories you want to watch
7
- # directories %w(app lib config test spec features) \
8
- # .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
9
-
10
- ## Note: if you are using the `directories` clause above and you are not
11
- ## watching the project directory ('.'), then you will want to move
12
- ## the Guardfile to a watched dir and symlink it back, e.g.
13
- #
14
- # $ mkdir config
15
- # $ mv Guardfile config/
16
- # $ ln -s config/Guardfile .
17
- #
18
- # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
19
-
20
- # guard 'rake', task: 'assets' do
21
- # watch(%r{^app/.+\.scss})
22
- # end
23
-
24
- guard 'rake', task: 'install' do
25
- watch(%r{^lib/.+\.rb})
26
- watch(%r{^src/.+\.(scss|jsx?)$})
27
- end
data/attractor.gemspec DELETED
@@ -1,65 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'attractor/version'
6
-
7
- Gem::Specification.new do |spec|
8
- spec.name = 'attractor'
9
- spec.version = Attractor::VERSION
10
- spec.authors = ['Julian Rubisch']
11
- spec.email = ['julian@julianrubisch.at']
12
-
13
- spec.summary = 'Churn vs Complexity Chart Generator'
14
- spec.description = <<-DESCRIPTION
15
- Many authors (Michael Feathers, Sandi Metz) have shown that an evaluation of
16
- churn vs complexity of files in software projects provide a valuable metric
17
- towards code quality. This is another take on the matter, for ruby code, using the
18
- `churn` and `flog` projects.
19
- DESCRIPTION
20
- spec.homepage = 'https://github.com/julianrubisch/attractor'
21
- spec.licenses = ['MIT']
22
-
23
- spec.metadata['homepage_uri'] = spec.homepage
24
- spec.metadata['source_code_uri'] = 'https://github.com/julianrubisch/attractor'
25
- spec.metadata['bug_tracker_uri'] = "#{spec.homepage}/issues"
26
- spec.metadata['changelog_uri'] = 'https://github.com/julianrubisch/attractor/CHANGELOG.md'
27
-
28
- # Specify which files should be added to the gem when it is released.
29
- # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
30
- spec.files = Dir.chdir(File.expand_path(__dir__)) do
31
- `git ls-files -z`.split("\x0").reject do |f|
32
- f.match(%r{^(src|tmp|test|spec|features|\.github)/}) ||
33
- %w[.all-contributorsrc .rspec .rspec_status .travis.yml].include?(f)
34
- end
35
- end
36
- spec.bindir = 'exe'
37
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
38
- spec.require_paths = ['lib']
39
-
40
- spec.add_dependency 'churn', '>= 1.0.4'
41
- spec.add_dependency 'descriptive_statistics'
42
- spec.add_dependency 'flog', '~> 4.0'
43
- spec.add_dependency 'launchy'
44
- spec.add_dependency 'listen', '~> 3.0'
45
- spec.add_dependency 'rack-livereload'
46
- spec.add_dependency 'sinatra'
47
- spec.add_dependency 'thor'
48
- spec.add_dependency 'tilt'
49
-
50
- spec.add_development_dependency 'aruba'
51
- spec.add_development_dependency 'attractor-javascript'
52
- spec.add_development_dependency 'attractor-ruby'
53
- spec.add_development_dependency 'autoprefixer-rails'
54
- spec.add_development_dependency 'bootstrap', '~> 4.3.1'
55
- spec.add_development_dependency 'bundler', '~> 2.0'
56
- spec.add_development_dependency 'cucumber'
57
- spec.add_development_dependency 'guard'
58
- spec.add_development_dependency 'guard-rake'
59
- spec.add_development_dependency 'pry'
60
- spec.add_development_dependency 'rake', '~> 10.0'
61
- spec.add_development_dependency 'rspec', '~> 3.0'
62
- spec.add_development_dependency 'sassc'
63
- spec.add_development_dependency 'standard'
64
- spec.add_development_dependency 'structured_changelog'
65
- end
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "attractor"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here