attractor 2.0.0 → 2.0.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 699413053fc8137c150694aa57bc7f4b4ed4c51c2f65d7e3af4549d15d33d274
4
- data.tar.gz: f630cd630d43770d34fd1afbffbb717deef4c76942f38917bdf811d8082f33f2
3
+ metadata.gz: 87ed2febd5e08be404f8589b1f6da07779ce7cef6730395df2bc6940f6b60864
4
+ data.tar.gz: ac539bf8bab537ae633934f985b1df1223e8a4b3ee783a08c21cd609086d1448
5
5
  SHA512:
6
- metadata.gz: 0d52ffc4e2b05bcc970cc6f9555baeebbee6dc9dde9de83cb0ce15a0a9e8359a5f7d204d3afe5001110d9936c988f0349703fca5d666577be38c3473e3e6cef2
7
- data.tar.gz: '088f7c37f1e2769f15c439a295b3e2bb12ee6c1c1b6c2e2ee34dd8920d3a65e9a994509a23adb50c12da5fbb07ec07f94afd5b2d34dc2e6b7709ba65ee746e5b'
6
+ metadata.gz: c46f972f805ed3a86da19a5fbccadd774d65b50f919f1d31d48ac5b0b2393282e332cb513d9c451c61f5e12c962d8923f2ab5133e43706a93811e2ada47dfecd
7
+ data.tar.gz: 00ca0589082b0ffd7a094beca428d7129cfc05f12b6fd988c013279f3bc7a43d1345c154d5ebc77d4de503481d46c0f0d7e042e1bed84998c6bf5a4b1855c563
@@ -1,3 +1,7 @@
1
+ ## RELEASE 2.0.1
2
+
3
+ * ENHANCEMENT: Add CLI option to Output gem version
4
+
1
5
  ## RELEASE 2.0.0
2
6
 
3
7
  * BREAKING: Move to a plug-in architecture, see README
data/README.md CHANGED
@@ -1,77 +1,157 @@
1
- # Attractor ![build status](https://travis-ci.org/julianrubisch/attractor.svg?branch=master) <img src="https://user-images.githubusercontent.com/4352208/65411858-3dc84200-ddee-11e9-99b6-c9cdbeb533c5.png" width="32">
1
+ <!-- MARKDOWN LINKS & IMAGES -->
2
+ <!-- Shields -->
3
+ [forks-shield]: https://img.shields.io/github/forks/julianrubisch/attractor.svg?style=flat-square
4
+ [forks-url]: https://github.com/julianrubisch/attractor/network/members
5
+ [stars-shield]: https://img.shields.io/github/stars/julianrubisch/attractor.svg?style=flat-square
6
+ [stars-url]: https://github.com/julianrubisch/attractor/stargazers
7
+ [issues-shield]: https://img.shields.io/github/issues/julianrubisch/attractor.svg?style=flat-square
8
+ [issues-url]: https://github.com/julianrubisch/attractor/issues
9
+ [license-shield]: https://img.shields.io/github/license/julianrubisch/attractor.svg?style=flat-square
10
+ [license-url]: https://github.com/julianrubisch/attractor/blob/master/LICENSE
11
+ [build-status]: https://travis-ci.org/julianrubisch/attractor.svg?branch=master
12
+ [twitter-shield]: https://img.shields.io/twitter/follow/AttractorGem?style=social
13
+ [ruby-tests-action-shield]: https://github.com/julianrubisch/attractor/workflows/Ruby%20Tests/badge.svg
14
+ <!-- Media -->
15
+ [demo-gif]: https://user-images.githubusercontent.com/4352208/67033292-b41e4280-f115-11e9-8c91-81b3bea4451c.gif
16
+ [logo-source]: https://thenounproject.com/term/black-hole/1043893
17
+ <!-- References -->
18
+ [medium-article]: https://medium.com/better-programming/why-i-made-my-own-code-quality-tool-c44b40ceaafd
19
+ [sandi-metz-article]: https://www.sandimetz.com/blog/2017/9/13/breaking-up-the-behemoth
20
+ [michael-feathers-article]: https://www.agileconnection.com/article/getting-empirical-about-refactoring
21
+ [bundler]: https://bundler.io
22
+ [rack-livereload]: https://github.com/johnbintz/rack-livereload
23
+ [guard-livereload]: https://github.com/guard/guard-livereload
24
+ [attractor-action]: https://github.com/julianrubisch/attractor-action
25
+ [attractor-action-marketplace]: https://github.com/marketplace/actions/attractor-action
26
+ [repo]: https://github.com/julianrubisch/attractor
27
+
28
+ <!-- PROJECT LOGO -->
29
+ <br />
30
+ <div align="center">
31
+ <a href="https://github.com/julianrubisch/attractor">
32
+ <img src="https://user-images.githubusercontent.com/4352208/65411858-3dc84200-ddee-11e9-99b6-c9cdbeb533c5.png" alt="Logo" width="80" height="80">
33
+ </a>
34
+ <h2 align="center">Attractor</h2>
35
+ <p align="center">A code complexity metrics visualization and exploration tool for Ruby and JavaScript</p>
36
+
37
+ ---
38
+
39
+ <!-- PROJECT SHIELDS -->
40
+ ![Build Status][build-status]
41
+ ![Ruby Tests Action Status][ruby-tests-action-shield]
42
+ [![Forks][forks-shield]][forks-url]
43
+ [![Stargazers][stars-shield]][stars-url]
44
+ [![Issues][issues-shield]][issues-url]
45
+ [![MIT License][license-shield]][license-url]
2
46
  <!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
3
47
  [![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)
4
48
  <!-- ALL-CONTRIBUTORS-BADGE:END -->
49
+ <a href="https://www.patreon.com/user?u=24747270"><img src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" alt="Become a Patron!" width="160" /></a>
50
+ </div>
5
51
 
6
- ![attractor_v0 6 1](https://user-images.githubusercontent.com/4352208/67033292-b41e4280-f115-11e9-8c91-81b3bea4451c.gif)
52
+ <!-- GIF -->
53
+ ![attractor_v0 6 1][demo-gif]
7
54
 
8
- Many authors ([Michael Feathers](https://www.agileconnection.com/article/getting-empirical-about-refactoring), [Sandi Metz](https://www.sandimetz.com/blog/2017/9/13/breaking-up-the-behemoth)) have shown that an evaluation of churn vs complexity of files in software projects provide a valuable metric towards code quality. This is another take on the matter, for ruby code, using the `churn` and `flog` projects.
55
+ ## Table of Contents
9
56
 
10
- Here's an [article on medium](https://medium.com/better-programming/why-i-made-my-own-code-quality-tool-c44b40ceaafd) explaining the approach in greater detail.
57
+ - [Table of Contents](#table-of-contents)
58
+ - [Introduction](#introduction)
59
+ - [Installation](#installation)
60
+ - [Usage](#usage)
61
+ - [Live Reloading](#live-reloading)
62
+ - [CI Usage](#ci-usage)
63
+ - [Github Action](#github-action)
64
+ - [Gitlab Example](#gitlab-example)
65
+ - [CLI Commands and Options](#cli-commands-and-options)
66
+ - [Development](#development)
67
+ - [Contributing](#contributing)
68
+ - [Logo Attribution](#logo-attribution)
69
+ - [Contributors ✨](#contributors-%e2%9c%a8)
11
70
 
12
- ## Table of Contents
71
+ ## Introduction
13
72
 
14
- * [Installation](#installation)
15
- * [Usage](#usage)
16
- + [Live Reloading](#live-reloading)
17
- * [CI Usage](#ci-usage)
18
- + [Github Action](#github-action)
19
- + [Gitlab Example](#gitlab-example)
20
- * [CLI Commands and Options](#cli-commands-and-options)
21
- * [Development](#development)
22
- * [Contributing](#contributing)
23
- * [Social](#social)
24
- * [Logo Attribution](#logo-attribution)
73
+ Many authors ([Michael Feathers][michael-feathers-article], [Sandi Metz][sandi-metz-article] have shown that an evaluation of churn vs complexity of files in software projects provide a valuable metric towards code quality. This is another take on the matter, for ruby code, using the `churn` and `flog` projects.
74
+
75
+ Here's an [article on medium][medium-article] explaining the approach in greater detail.
25
76
 
26
77
  ## Installation
27
78
 
28
- Add this line to your application's Gemfile:
79
+ Attractor's installation is standard for a Ruby gem:
80
+
81
+ ```sh
82
+ gem install attractor
83
+ ```
84
+
85
+ You'll also want to install some plugins to go along with the main gem:
86
+
87
+ ```sh
88
+ gem install attractor-ruby # https://github.com/julianrubisch/attractor-ruby
89
+ gem install attractor-javascript # https://github.com/julianrubisch/attractor-javascript
90
+ ```
91
+
92
+ You will most likely want to install Attractor using [Bundler][bundler]:
29
93
 
30
94
  ```ruby
31
95
  gem 'attractor'
96
+ gem 'attractor-ruby'
97
+ gem 'attractor-javascript'
32
98
  ```
33
99
 
34
100
  And then execute:
35
101
 
36
- $ bundle
37
-
38
- Or install it yourself as:
39
-
40
- $ gem install attractor
102
+ ```sh
103
+ bundle
104
+ ```
41
105
 
42
106
  ## Usage
43
107
 
44
- To create a HTML report in `attractor_output/index.html`, try
45
-
46
- $ attractor report
108
+ To create a HTML report in `attractor_output/index.html`:
109
+
110
+ ```sh
111
+ attractor report
112
+ ```
47
113
 
48
114
  If you'd like to specify a directory, use the file prefix option:
49
115
 
50
- $ attractor report --file_prefix app/models
116
+ ```sh
117
+ attractor report --file_prefix app/models
118
+ ```
51
119
 
52
120
  Or shorter:
53
121
 
54
- $ attractor report -p app/models
122
+ ```sh
123
+ attractor report -p app/models
124
+ ```
55
125
 
56
- Check javascript:
126
+ Check JavaScript:
57
127
 
58
- $ attractor report -p app/javascript -t js
128
+ ```sh
129
+ attractor report -p app/javascript -t js
130
+ ```
59
131
 
60
132
  Watch for file changes:
61
133
 
62
- $ attractor report -p app/models --watch
134
+ ```sh
135
+ attractor report -p app/models --watch
136
+ ```
137
+
138
+ Serve at `http://localhost:7890`:
63
139
 
64
- Serve at http://localhost:7890:
140
+ ```sh
141
+ attractor serve -p app/models
142
+ ```
65
143
 
66
- $ attractor serve -p app/models
144
+ Enable [rack-livereload][rack-livereload]:
67
145
 
68
- Enable rack-livereload:
146
+ ```sh
147
+ attractor serve -p app/models --watch
148
+ ```
69
149
 
70
- $ attractor serve -p app/models --watch
150
+ _Make sure you prefix these commands with `bundle exec` if you are using Bundler._
71
151
 
72
152
  ### Live Reloading
73
153
 
74
- 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.
154
+ If you have [guard-livereload][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.
75
155
 
76
156
  ## CI Usage
77
157
 
@@ -79,7 +159,9 @@ To use this CLI in a CI environment, use the `--ci` option, which will suppress
79
159
 
80
160
  ### Github Action
81
161
 
82
- There is a dedicated [Github Action](https://github.com/julianrubisch/attractor-action) that will compile Attractor's output. Here's the action on the [Marketplace](https://github.com/marketplace/actions/attractor-action).
162
+ There is a dedicated [Github Action][attractor-action] that will compile Attractor's output.
163
+
164
+ You can quickly integrate it into your action's workflow by grabbing it on the [Marketplace][attractor-action-marketplace].
83
165
 
84
166
  ### Gitlab Example
85
167
 
@@ -98,56 +180,57 @@ attractor:
98
180
  - attractor_output
99
181
  ```
100
182
 
101
- Alternatively,
102
-
103
183
  ## CLI Commands and Options
104
184
 
105
185
  Print a simple output to console:
106
186
 
107
- $ attractor calc
108
- $ --file_prefix|-p app/models
109
- $ --type|-t rb|js
110
- $ --watch|-w
111
- $ --start_ago|-s (e.g. 5y, 3m, 7w)
112
- $ --minimum_churn|-c (minimum times a file must have changed to be processed)
187
+ ```sh
188
+ attractor calc
189
+ --file_prefix|-p app/models
190
+ --type|-t rb|js
191
+ --watch|-w
192
+ --start_ago|-s (e.g. 5y, 3m, 7w)
193
+ --minimum_churn|-c (minimum times a file must have changed to be processed)
194
+ ```
113
195
 
114
196
  Generate a full report
115
197
 
116
- $ attractor report
117
- $ --file_prefix|-p app/models
118
- $ --type|-t rb|js
119
- $ --watch|-w
120
- $ --no-open-browser|--ci
121
- $ --start_ago|-s (e.g. 5y, 3m, 7w)
122
- $ --minimum_churn|-c (minimum times a file must have changed to be processed)
198
+ ```sh
199
+ attractor report
200
+ --file_prefix|-p app/models
201
+ --type|-t rb|js
202
+ --watch|-w
203
+ --no-open-browser|--ci
204
+ --start_ago|-s (e.g. 5y, 3m, 7w)
205
+ --minimum_churn|-c (minimum times a file must have changed to be processed)
206
+ ```
123
207
 
124
- Serve the output on http://localhost:7890
208
+ Serve the output on `http://localhost:7890`
125
209
 
126
- $ attractor serve
127
- $ --file_prefix|-p app/models
128
- $ --watch|-w
129
- $ --no-open-browser|--ci
130
- $ --start_ago|-s (e.g. 5y, 3m, 7w)
131
- $ --minimum_churn|-c (minimum times a file must have changed to be processed)
210
+ ```sh
211
+ attractor serve
212
+ --file_prefix|-p app/models
213
+ --watch|-w
214
+ --no-open-browser|--ci
215
+ --start_ago|-s (e.g. 5y, 3m, 7w)
216
+ --minimum_churn|-c (minimum times a file must have changed to be processed)
217
+ ```
132
218
 
133
219
  ## Development
134
220
 
135
- 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.
221
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
222
+
223
+ To run all tests, run `bin/test`. You can run the specs by themselves with `bundle exec rspec`, and the cucumber features with `bundle exec cucumber`.
136
224
 
137
225
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
138
226
 
139
227
  ## Contributing
140
228
 
141
- Bug reports and pull requests are welcome on GitHub at https://github.com/julianrubisch/attractor.
142
-
143
- ## Social
144
-
145
- [Twitter](https://twitter.com/AttractorGem)
146
-
147
- [Patreon](https://www.patreon.com/user?u=24747270)
229
+ Bug reports and pull requests are welcome on [GitHub][repo].
148
230
 
149
231
  ## Logo Attribution
150
- [Black Hole by Eynav Raphael from the Noun Project](https://thenounproject.com/term/black-hole/1043893)
232
+
233
+ [Black Hole by Eynav Raphael from the Noun Project][logo-source]
151
234
 
152
235
  ## Contributors ✨
153
236
 
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env bash
2
+
3
+ echo "== Running Specs =="
4
+ bundle exec rspec
5
+ echo "== Running Cucumber Features =="
6
+ bundle exec cucumber
@@ -17,6 +17,14 @@ module Attractor
17
17
  [:no_open_browser, type: :boolean],
18
18
  [:ci, type: :boolean]]
19
19
 
20
+ desc "version", "Prints Attractor's version information"
21
+ map %w(-v --version) => :version
22
+ def version
23
+ puts "Attractor version #{Attractor::VERSION}"
24
+ rescue RuntimeError => e
25
+ puts "Runtime error: #{e.message}"
26
+ end
27
+
20
28
  desc 'calc', 'Calculates churn and complexity for all ruby files in current directory'
21
29
  shared_options.each do |shared_option|
22
30
  option(*shared_option)
@@ -1,3 +1,3 @@
1
1
  module Attractor
2
- VERSION = "2.0.0"
2
+ VERSION = "2.0.1"
3
3
  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.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julian Rubisch
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-06 00:00:00.000000000 Z
11
+ date: 2020-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: churn
@@ -379,6 +379,7 @@ files:
379
379
  - attractor.gemspec
380
380
  - bin/console
381
381
  - bin/setup
382
+ - bin/test
382
383
  - dist/calculator.bundle.js
383
384
  - exe/attractor
384
385
  - lib/attractor.rb