rfix 1.0.7.pre.61 → 1.0.7.pre.65

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f0ca636e0b0fdf5b52df3d8fdf1a0c6e5598e1099ea2827783f392d859554b02
4
- data.tar.gz: b2fcdef1b9427af6c957bc8660217a58ffbe113ac6f61b10d90c25d66db65cd9
3
+ metadata.gz: ab51832758a2766094d61f5568dccf230cecd9ffe2527c0b90c574ac75a8243e
4
+ data.tar.gz: 0466e6aee2a5a63fdfff88038ad159c6e08b964f32576618a24574f3ded57429
5
5
  SHA512:
6
- metadata.gz: 423bb5ff85314b5f962fd577d8edbf60190015ba16b45f2580867551fe84dd31c3464dd2e7c24789db67cda3db9810cd4fa268359112c3b6fed4a1a4576fd810
7
- data.tar.gz: 26da76674da91b00c261a3d55d88d07ae6650665168cbe4963d7abf1ba3385f670569175e5360b62cdd38e1204187c11a7a307c17446b615c649faf2286ab3bb
6
+ metadata.gz: 2c2d60ae33674c5aa8ece23e46b69a82dc51b554cc3b11d9d4b4c597e6eab54a855851414d8f7f3dcd825fb18f4e107f8dcd60e12504bb4e8a3428e9d70c2bee
7
+ data.tar.gz: 125bd91a63181e343f0bc888f9e418ccaf125059aebcc88062e2f8f676feaf2621fa310bb98890542690d6c9cb65793764ce250a6638f760d0a0ad8386fcdb88
@@ -1,4 +1,11 @@
1
1
  language: ruby
2
+ cache:
3
+ bundler: true
4
+ directories:
5
+ - $HOME/.rvm
6
+ - $HOME/Library/Caches/Homebrew
7
+ before_cache:
8
+ - brew cleanup
2
9
  rvm:
3
10
  - 2.5.0
4
11
  - 2.6.2
@@ -17,8 +24,7 @@ gemfile:
17
24
  - ci/Gemfile.rubocop-0.85.1
18
25
  before_install:
19
26
  - yes | gem update --system --force
20
- - gem uninstall bundler
21
- - gem install bundler -v 2.1.4
27
+ - gem install bundler
22
28
  - bundle config git.allow_insecure true
23
29
  install:
24
30
  - bundle install
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Rfix [![Build Status](https://travis-ci.org/oleander/rfix-rb.svg?branch=master)](https://travis-ci.org/oleander/rfix-rb) ![Gem](https://img.shields.io/gem/dt/rfix)
1
+ # Rfix [![Build Status](https://travis-ci.org/oleander/rfix-rb.svg?branch=master)](https://travis-ci.org/oleander/rfix-rb) [![Gem](https://img.shields.io/gem/dt/rfix)](https://rubygems.org/gems/rfix)
2
2
 
3
3
  RuboCop CLI that only complains about your latest changes
4
4
 
@@ -5,9 +5,22 @@
5
5
 
6
6
  require "rfix/version"
7
7
  require "rfix/log"
8
- require "rfix/extensions"
8
+ require "rfix/extensions/extensions"
9
+ require "rfix/extensions/offense"
9
10
  require "rfix/rfix"
10
11
 
11
12
  module Rfix
13
+ module Ext; end
12
14
  extend self
13
15
  end
16
+
17
+ RuboCop::Options.prepend(Rfix::Ext::Options)
18
+ RuboCop::Runner.prepend(Rfix::Ext::Runner)
19
+ RuboCop::CommentConfig.prepend(Rfix::Ext::CommentConfig)
20
+ RuboCop::Cop::Offense.prepend(Rfix::Ext::Offense)
21
+
22
+ # TODO: Handle cases where color can't be resolved by CLI::UI
23
+ RuboCop::Formatter::SimpleTextFormatter::COLOR_FOR_SEVERITY.each do |severity, color|
24
+ id = RuboCop::Cop::Severity::CODE_TABLE.invert.fetch(severity)
25
+ CLI::UI::Glyph.new(id.to_s, 0x25cf, CLI::UI.resolve_color(color))
26
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rubocop"
4
+ require "rainbow"
5
+
6
+ module Rfix::Ext
7
+ module CommentConfig
8
+ # Called by RuboCop on every line to see
9
+ # if its suppose to run against it or not
10
+ def cop_enabled_at_line?(_cop, line)
11
+ Rfix.enabled?(processed_source.file_path, line) && super
12
+ end
13
+ end
14
+
15
+ module Runner
16
+ # Called _after_ @source has been 'auto fixed' by Rubocop
17
+ def check_for_infinite_loop(source, offences)
18
+ # rubocop:disable Style/Semicolon
19
+ Rfix.refresh!(source); super # TODO: Before or after?
20
+ # rubocop:enable Style/Semicolon
21
+ end
22
+ end
23
+
24
+ module Options
25
+ # Appends custom --args to RuboCop CLI
26
+ def define_options
27
+ super.tap do |options|
28
+ @ons.each do |args, block|
29
+ option(options, *args, &block)
30
+ end
31
+ end
32
+ end
33
+
34
+ # Helper method used by rfix to append cli --args to Rubocop
35
+ def on(*args, &block)
36
+ @ons ||= []
37
+ @ons += [[args, block]]
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,77 @@
1
+ module Rfix::Ext
2
+ module Offense
3
+ def where
4
+ line.to_s + ":" + real_column.to_s
5
+ end
6
+
7
+ def info
8
+ message.split(": ", 2).last.delete("\n")
9
+ end
10
+
11
+ def msg
12
+ CLI::UI.resolve_text("{{italic:#{info}}}", truncate_to: CLI::UI::Terminal.width - 10)
13
+ end
14
+
15
+ def code
16
+ message.split(": ", 2).first
17
+ end
18
+
19
+ def star
20
+ Rainbow("⭑")
21
+ end
22
+
23
+ def cross
24
+ Rainbow("✗").red
25
+ end
26
+
27
+ def check
28
+ Rainbow("✓").green
29
+ end
30
+
31
+ def circle
32
+ Rainbow("⍟")
33
+ end
34
+
35
+ def relative_path
36
+ Rfix.to_relative(path: location.source_buffer.name)
37
+ end
38
+
39
+ def clickable_path
40
+ "{{italic:#{relative_path}:#{where}}}"
41
+ end
42
+
43
+ def clickable_plain_severity
44
+ to_url("https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/#{code}", code)
45
+ end
46
+
47
+ def clickable_severity
48
+ "{{#{severity.code}}} {{italic:#{clickable_plain_severity}}}"
49
+ end
50
+
51
+ def icon
52
+ return check.green if corrected?
53
+ return star.yellow if correctable?
54
+
55
+ cross.red
56
+ end
57
+
58
+ def to_clickable(url, title)
59
+ esc = CLI::UI::ANSI::ESC
60
+ cmd = esc + "]8;;"
61
+ slash = "\x07"
62
+ cmd + "#{escape(url)}#{slash}#{escape(title)}" + cmd + slash
63
+ end
64
+
65
+ def to_path(path, title)
66
+ to_clickable("file://#{path}", title)
67
+ end
68
+
69
+ def to_url(url, title)
70
+ to_clickable(url, title)
71
+ end
72
+
73
+ def escape(str)
74
+ Shellwords.escape(str)
75
+ end
76
+ end
77
+ end
@@ -30,37 +30,14 @@ module Rfix
30
30
  report_summary(files.size, offenses.count, corrected.count)
31
31
  end
32
32
 
33
- def to_clickable(url, title)
34
- esc = CLI::UI::ANSI::ESC
35
- cmd = esc + "]8;;"
36
- slash = "\x07"
37
- cmd + "#{escape(url)}#{slash}#{escape(title)}" + cmd + slash
38
- end
39
-
40
- def to_path(path, title)
41
- to_clickable("file://#{path}", title)
42
- end
43
-
44
- def to_url(url, title)
45
- to_clickable(url, title)
46
- end
47
-
48
- def escape(str)
49
- Shellwords.escape(str)
50
- end
51
-
52
33
  def render_file(file, offenses)
53
34
  return if offenses.empty?
54
35
 
55
- path = Rfix.to_relative(path: file)
56
- url = to_url(file, path)
57
36
  offenses.each do |offense|
58
37
  out("\n\n")
59
- clickable_path = "{{italic:#{path}:#{offense.where}}}"
60
- clickable_code = to_url("https://www.rubydoc.info/gems/rubocop/RuboCop/Cop/#{offense.code}", offense.code)
61
38
  CLI::UI::Frame.open("#{offense.icon} #{offense.msg}", color: :reset)
62
39
  report_line(file, offense, offense.location, offense.highlighted_area)
63
- CLI::UI::Frame.close("#{clickable_path} » {{italic:#{clickable_code}}}", color: :reset)
40
+ CLI::UI::Frame.close("#{offense.clickable_severity} » #{offense.clickable_path}", color: :reset)
64
41
  end
65
42
  end
66
43
 
@@ -48,6 +48,8 @@ Gem::Specification.new do |spec|
48
48
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
49
49
  spec.require_paths = ["lib", "vendor/cli-ui/lib"]
50
50
 
51
+ spec.requirements << "git, v2.0+"
52
+
51
53
  spec.add_runtime_dependency "rainbow", "~> 3.0"
52
54
  spec.add_runtime_dependency "rouge", "~> 3.20"
53
55
  spec.add_runtime_dependency "rubocop", "~> 0.80"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rfix
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.7.pre.61
4
+ version: 1.0.7.pre.65
5
5
  platform: ruby
6
6
  authors:
7
7
  - Linus Oleander
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-17 00:00:00.000000000 Z
11
+ date: 2020-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rainbow
@@ -96,7 +96,8 @@ files:
96
96
  - exe/rfix
97
97
  - lib/rfix.rb
98
98
  - lib/rfix/cmd.rb
99
- - lib/rfix/extensions.rb
99
+ - lib/rfix/extensions/extensions.rb
100
+ - lib/rfix/extensions/offense.rb
100
101
  - lib/rfix/formatter.rb
101
102
  - lib/rfix/git_file.rb
102
103
  - lib/rfix/git_helper.rb
@@ -151,7 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
151
152
  - - ">"
152
153
  - !ruby/object:Gem::Version
153
154
  version: 1.3.1
154
- requirements: []
155
+ requirements:
156
+ - git, v2.0+
155
157
  rubygems_version: 3.0.3
156
158
  signing_key:
157
159
  specification_version: 4
@@ -1,92 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubocop"
4
- require "rainbow"
5
-
6
- module Rfix::Ext
7
- module CommentConfig
8
- # Called by RuboCop on every line to see
9
- # if its suppose to run against it or not
10
- def cop_enabled_at_line?(_cop, line)
11
- Rfix.enabled?(processed_source.file_path, line) && super
12
- end
13
- end
14
-
15
- module Runner
16
- # Called _after_ @source has been 'auto fixed' by Rubocop
17
- def check_for_infinite_loop(source, offences)
18
- Rfix.refresh!(source); super # TODO: Before or after?
19
- end
20
- end
21
-
22
- module Options
23
- # Appends custom --args to RuboCop CLI
24
- def define_options
25
- super.tap do |options|
26
- @ons.each do |args, block|
27
- option(options, *args, &block)
28
- end
29
- end
30
- end
31
-
32
- # Helper method used by rfix to append cli --args to Rubocop
33
- def on(*args, &block)
34
- @ons ||= []
35
- @ons += [[args, block]]
36
- end
37
- end
38
-
39
- module Offense
40
- def where
41
- line.to_s + ":" + real_column.to_s
42
- end
43
-
44
- def info
45
- message.split(": ", 2).last.delete("\n")
46
- end
47
-
48
- def msg
49
- CLI::UI.resolve_text("{{italic:#{info}}}", truncate_to: CLI::UI::Terminal.width - 10)
50
- end
51
-
52
- def code
53
- message.split(": ", 2).first
54
- end
55
-
56
- def star
57
- Rainbow("⭑")
58
- end
59
-
60
- def cross
61
- Rainbow("✗")
62
- end
63
-
64
- def check
65
- Rainbow("✓")
66
- end
67
-
68
- def level
69
- colors = {
70
- refactor: star.lightcyan,
71
- convention: star.lightblue,
72
- warning: star.lightyellow,
73
- error: cross.indianred,
74
- fatal: cross.lightsalmon
75
- }
76
-
77
- colors[severity.name]
78
- end
79
-
80
- def icon
81
- return check.green if corrected?
82
- return check.lightgreen if correctable?
83
-
84
- cross.indianred
85
- end
86
- end
87
- end
88
-
89
- RuboCop::Options.prepend(Rfix::Ext::Options)
90
- RuboCop::Runner.prepend(Rfix::Ext::Runner)
91
- RuboCop::CommentConfig.prepend(Rfix::Ext::CommentConfig)
92
- RuboCop::Cop::Offense.prepend(Rfix::Ext::Offense)