rfix 1.0.7.pre.68 → 1.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -8
- data/README.md +13 -59
- data/exe/rfix +31 -10
- data/lib/rfix.rb +1 -14
- data/lib/rfix/cmd.rb +1 -1
- data/lib/rfix/extensions.rb +92 -0
- data/lib/rfix/formatter.rb +24 -1
- data/lib/rfix/git_helper.rb +1 -3
- data/lib/rfix/log.rb +1 -1
- data/lib/rfix/rfix.rb +0 -44
- data/rfix.gemspec +8 -10
- metadata +18 -24
- data/lib/rfix/extensions/extensions.rb +0 -40
- data/lib/rfix/extensions/offense.rb +0 -77
- data/resources/ps.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62646c9f16e2ab955a7a9991bdb352f746abc64fe40935748d1f46102a377a71
|
4
|
+
data.tar.gz: 4887ecd7aa14ca41aa06905d3eb2213ee91a58b9e7578e7bb0a87d30331598f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acac0bbc26cda8e39742b91abde14386c0d6cb8f252aa7de3de65c69421f93c3db4ffb3026c6763f3328f901ba148451c7c3ee1fb71ca7548d09922f0e5c9b41
|
7
|
+
data.tar.gz: b65b8dde72ab2ad7796a402d60ac2e351009adab266509797e71654129bcd7577edf821ef15bd5b6b065defaf6284a8cf7b827e975f9314146cf68772ff68a5b
|
data/.travis.yml
CHANGED
@@ -1,11 +1,4 @@
|
|
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
|
9
2
|
rvm:
|
10
3
|
- 2.5.0
|
11
4
|
- 2.6.2
|
@@ -24,7 +17,8 @@ gemfile:
|
|
24
17
|
- ci/Gemfile.rubocop-0.85.1
|
25
18
|
before_install:
|
26
19
|
- yes | gem update --system --force
|
27
|
-
- gem
|
20
|
+
- gem uninstall bundler
|
21
|
+
- gem install bundler -v 2.1.4
|
28
22
|
- bundle config git.allow_insecure true
|
29
23
|
install:
|
30
24
|
- bundle install
|
data/README.md
CHANGED
@@ -1,85 +1,39 @@
|
|
1
|
-
# Rfix [![Build Status](https://travis-ci.org/oleander/rfix-rb.svg?branch=master)](https://travis-ci.org/oleander/rfix-rb)
|
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)
|
2
2
|
|
3
|
-
RuboCop CLI that only complains about your latest changes
|
4
|
-
|
5
|
-
Supports the same CLI arguments as RuboCop. Run `rfix --help` for the complete list.
|
6
|
-
|
7
|
-
![Printscreen](resources/ps.png)
|
3
|
+
RuboCop CLI that only complains about your latest changes
|
8
4
|
|
9
5
|
## Installation
|
10
6
|
|
11
7
|
``` shell
|
12
|
-
$ gem install rfix
|
13
|
-
|
14
|
-
|
15
|
-
## Help
|
16
|
-
|
17
|
-
``` shell
|
18
|
-
$ rfix branch <branch> # Fix changes made between HEAD and <branch>
|
19
|
-
$ rfix origin # Fix changes made between HEAD and origin branch
|
20
|
-
$ rfix local # Fix changes not yet pushed to upstream branch
|
21
|
-
$ rfix info # Display runtime dependencies and their versions
|
22
|
-
$ rfix all # Fix all files in this repository (not recommended)
|
23
|
-
$ rfix lint # Shortcut for 'rfix local --dry --untracked'
|
24
|
-
$ rfix # Displays this list of supported commands
|
8
|
+
$ gem install rfix
|
9
|
+
$ rfix <local|branch|origin|info|all> [--dry] [--help]
|
25
10
|
```
|
26
11
|
|
27
|
-
### Arguments
|
28
|
-
|
29
|
-
- `--dry` Turns off RuboCops autofix feature (read-only mode)
|
30
|
-
- `--help` Displays RubyCops and Rfix supported arguments
|
31
|
-
- `--list-files` List all files being passed to RubyCop
|
32
|
-
- `--untracked` Include files not tracked by git
|
33
|
-
- `--config` Configuration file, defaults to `.rubocop.yml`
|
34
|
-
|
35
12
|
## Development
|
36
13
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
- `$ bundle exec rake setup`
|
44
|
-
|
45
|
-
### Install from repository
|
46
|
-
|
47
|
-
``` shell
|
48
|
-
$ bundle exec rake local
|
49
|
-
```
|
50
|
-
|
51
|
-
### Run tests
|
52
|
-
|
53
|
-
``` shell
|
54
|
-
$ bundle exec rake spec
|
55
|
-
```
|
14
|
+
- `git clone https://github.com/oleander/rfix-rb`
|
15
|
+
- `cd rfix-rb`
|
16
|
+
- `bundle install`
|
17
|
+
- `bundle exec rake setup`
|
18
|
+
- `bundle exec rake local`
|
19
|
+
- `bundle exec rake spec`
|
56
20
|
|
57
21
|
## Overcommit
|
58
22
|
|
59
|
-
Add the following to your `.overcommit.yml`, then run `overcommit --install` and `overcommit --sign pre-commit`. It will lint commits not yet pushed to upstream branch everytime `git commit` is ran.
|
60
|
-
|
61
23
|
``` yaml
|
62
24
|
PreCommit:
|
63
25
|
RFix:
|
64
26
|
enabled: true
|
65
|
-
command: ["rfix", "
|
66
|
-
description: "Lint
|
27
|
+
command: ["rfix", "local", "--untracked", "--dry"]
|
28
|
+
description: "Lint changes since last push using RuboCop"
|
67
29
|
parallelize: true
|
68
30
|
```
|
69
31
|
|
70
|
-
### From scratch
|
71
|
-
|
72
|
-
1. `gem install overcommit rfix`
|
73
|
-
2. `curl https://raw.githubusercontent.com/oleander/rfix-rb/master/resouces/overcommit.yml > .overcommit.yml`
|
74
|
-
3. `overcommit --install`
|
75
|
-
4. `overcommit --sign pre-commit`
|
76
|
-
|
77
|
-
Run `overcommit --run` to test the new hook.
|
78
|
-
|
79
32
|
## Contributing
|
80
33
|
|
81
34
|
Bug reports and pull requests are welcome on GitHub at https://github.com/oleander/rfix.
|
82
35
|
|
36
|
+
|
83
37
|
## License
|
84
38
|
|
85
39
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
data/exe/rfix
CHANGED
@@ -20,13 +20,38 @@ CLI::UI::StdoutRouter.enable
|
|
20
20
|
|
21
21
|
say "Using RuboCop {{yellow:#{RuboCop::Version.version}}}"
|
22
22
|
|
23
|
-
|
24
|
-
|
23
|
+
base_config = {
|
24
|
+
color: true,
|
25
|
+
force_exclusion: true,
|
26
|
+
auto_correct: true,
|
27
|
+
formatters: ["Rfix::Formatter"]
|
28
|
+
}
|
29
|
+
|
30
|
+
# For version 0.80.x .. 0.83.x:
|
31
|
+
# Otherwise it will exit with status code = 1
|
32
|
+
if (0.80..0.83).include?(RuboCop::Version::STRING.to_f)
|
33
|
+
if is_dry
|
34
|
+
base_config[:fail_level] = :autocorrect
|
35
|
+
else
|
36
|
+
base_config[:fail_level] = :warning
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def load_config
|
41
|
+
yield
|
42
|
+
rescue RuboCop::Error => e
|
43
|
+
say_abort "[Config] #{e}"
|
44
|
+
rescue TypeError => e
|
45
|
+
say_abort "[Config] #{e}"
|
25
46
|
end
|
26
47
|
|
27
48
|
options.on("--dry", "No auto correct") do
|
28
49
|
say "Will run rfix in {{red:read-only}} mode"
|
29
|
-
|
50
|
+
base_config.merge!({ auto_correct: false })
|
51
|
+
end
|
52
|
+
|
53
|
+
options.on("--untracked", "Include untracked files") do
|
54
|
+
Rfix.load_untracked!
|
30
55
|
end
|
31
56
|
|
32
57
|
options.on("--list-files", "List files found by git") do
|
@@ -48,9 +73,6 @@ when "info"
|
|
48
73
|
say "Using Git {{yellow:#{Rfix.git_version}}}"
|
49
74
|
say "Using Ruby {{yellow:#{Rfix.ruby_version}}}"
|
50
75
|
exit 0
|
51
|
-
when "lint"
|
52
|
-
Rfix.lint_mode!
|
53
|
-
reference = Rfix.ref_since_push
|
54
76
|
when "local"
|
55
77
|
reference = Rfix.ref_since_push
|
56
78
|
when "origin"
|
@@ -80,7 +102,6 @@ else
|
|
80
102
|
say_error_sub "\t{{bold:rfix local}} -- {{italic:Fix changes not yet pushed to upstream branch}}"
|
81
103
|
say_error_sub "\t{{bold:rfix info}} -- {{italic:Display runtime dependencies and their versions}}"
|
82
104
|
say_error_sub "\t{{bold:rfix all}} -- {{italic:Fix all files in this repository}} {{warning:(not recommended)}}"
|
83
|
-
say_error_sub "\t{{bold:rfix lint}} -- {{italic:Shortcut for 'local --dry --untracked'}}"
|
84
105
|
say_error_sub "\n"
|
85
106
|
say_error_sub "\t{{italic:Optional args: --dry --help --list-files --limit-files --config --untracked}}"
|
86
107
|
exit 1
|
@@ -96,11 +117,11 @@ rescue OptionParser::MissingArgument => e
|
|
96
117
|
end
|
97
118
|
|
98
119
|
if path = config_path
|
99
|
-
|
120
|
+
load_config do
|
100
121
|
config.options_config = path
|
101
122
|
end
|
102
123
|
else
|
103
|
-
|
124
|
+
load_config do
|
104
125
|
config.for(Dir.pwd)
|
105
126
|
end
|
106
127
|
end
|
@@ -128,7 +149,7 @@ if should_list_files
|
|
128
149
|
end
|
129
150
|
|
130
151
|
env = RuboCop::CLI::Environment.new(
|
131
|
-
|
152
|
+
base_config.merge(options),
|
132
153
|
config,
|
133
154
|
paths
|
134
155
|
)
|
data/lib/rfix.rb
CHANGED
@@ -5,22 +5,9 @@
|
|
5
5
|
|
6
6
|
require "rfix/version"
|
7
7
|
require "rfix/log"
|
8
|
-
require "rfix/extensions
|
9
|
-
require "rfix/extensions/offense"
|
8
|
+
require "rfix/extensions"
|
10
9
|
require "rfix/rfix"
|
11
10
|
|
12
11
|
module Rfix
|
13
|
-
module Ext; end
|
14
12
|
extend self
|
15
13
|
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
|
data/lib/rfix/cmd.rb
CHANGED
@@ -13,7 +13,7 @@ module Rfix::Cmd
|
|
13
13
|
unless status.success?
|
14
14
|
return yield if block_given?
|
15
15
|
|
16
|
-
say_error "[Cmd] {{italic:#{args.join(
|
16
|
+
say_error "[Cmd] {{italic:#{args.join(" ")}}}"
|
17
17
|
say_error "[Pwd] {{italic:#{Dir.pwd}}}"
|
18
18
|
say_error "[Err] {{error:#{err.strip}}}"
|
19
19
|
|
@@ -0,0 +1,92 @@
|
|
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)
|
data/lib/rfix/formatter.rb
CHANGED
@@ -30,14 +30,37 @@ 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
|
+
|
33
52
|
def render_file(file, offenses)
|
34
53
|
return if offenses.empty?
|
35
54
|
|
55
|
+
path = Rfix.to_relative(path: file)
|
56
|
+
url = to_url(file, path)
|
36
57
|
offenses.each do |offense|
|
37
58
|
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)
|
38
61
|
CLI::UI::Frame.open("#{offense.icon} #{offense.msg}", color: :reset)
|
39
62
|
report_line(file, offense, offense.location, offense.highlighted_area)
|
40
|
-
CLI::UI::Frame.close("#{
|
63
|
+
CLI::UI::Frame.close("#{clickable_path} » {{italic:#{clickable_code}}}", color: :reset)
|
41
64
|
end
|
42
65
|
end
|
43
66
|
|
data/lib/rfix/git_helper.rb
CHANGED
data/lib/rfix/log.rb
CHANGED
data/lib/rfix/rfix.rb
CHANGED
@@ -13,36 +13,6 @@ module Rfix
|
|
13
13
|
include GitHelper
|
14
14
|
include Log
|
15
15
|
|
16
|
-
def config
|
17
|
-
@config
|
18
|
-
end
|
19
|
-
|
20
|
-
def set_fail_level(lint)
|
21
|
-
if if lint
|
22
|
-
else
|
23
|
-
@config[:fail_level] = :warning
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def no_auto_correct!
|
29
|
-
@config[:auto_correct] = false
|
30
|
-
end
|
31
|
-
|
32
|
-
def load_config
|
33
|
-
yield
|
34
|
-
rescue RuboCop::Error => e
|
35
|
-
say_abort "[Config] #{e}"
|
36
|
-
rescue TypeError => e
|
37
|
-
say_abort "[Config] #{e}"
|
38
|
-
end
|
39
|
-
|
40
|
-
def lint_mode!
|
41
|
-
@config[:auto_correct] = false
|
42
|
-
@config[:fail_level] = :warning if old?
|
43
|
-
load_untracked!
|
44
|
-
end
|
45
|
-
|
46
16
|
def git_version
|
47
17
|
cmd("git --version").last.split(/\s+/, 3).last
|
48
18
|
end
|
@@ -66,14 +36,6 @@ module Rfix
|
|
66
36
|
def init!
|
67
37
|
@files ||= {}
|
68
38
|
@global_enable = false
|
69
|
-
@config = {
|
70
|
-
color: true,
|
71
|
-
force_exclusion: true,
|
72
|
-
auto_correct: true,
|
73
|
-
formatters: ["Rfix::Formatter"]
|
74
|
-
}
|
75
|
-
|
76
|
-
@config[:fail_level] = :autocorrect if old?
|
77
39
|
end
|
78
40
|
|
79
41
|
def files
|
@@ -138,12 +100,6 @@ module Rfix
|
|
138
100
|
|
139
101
|
private
|
140
102
|
|
141
|
-
def old?
|
142
|
-
# For version 0.80.x .. 0.83.x:
|
143
|
-
# Otherwise it will exit with status code = 1
|
144
|
-
(0.80..0.83).include?(RuboCop::Version::STRING.to_f)
|
145
|
-
end
|
146
|
-
|
147
103
|
def get_file(path, &block)
|
148
104
|
if file = @files[path]
|
149
105
|
block.call(file)
|
data/rfix.gemspec
CHANGED
@@ -19,16 +19,16 @@ Gem::Specification.new do |spec|
|
|
19
19
|
|
20
20
|
spec.summary = "RuboCop CLI that only complains about your latest changes"
|
21
21
|
spec.description = <<~TEXT
|
22
|
-
|
23
|
-
|
22
|
+
#{spec.summary}
|
23
|
+
Uses 'git diff' to determine what changes were made then runs RuboCop against them
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
25
|
+
$ rfix branch <branch> -- Fix changes made between HEAD and <branch>
|
26
|
+
$ rfix origin -- Fix changes made between HEAD and origin branch
|
27
|
+
$ rfix local -- Fix changes not yet pushed to upstream branch
|
28
|
+
$ rfix info -- Display runtime dependencies and their versions
|
29
|
+
$ rfix all -- Fix all files in this repository (not recommended)
|
30
30
|
|
31
|
-
|
31
|
+
Optional args: --dry --help --list-files --limit-files --config --untracked
|
32
32
|
TEXT
|
33
33
|
spec.homepage = "https://github.com/oleander/rfix-rb"
|
34
34
|
spec.license = "MIT"
|
@@ -48,8 +48,6 @@ 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
|
-
|
53
51
|
spec.add_runtime_dependency "rainbow", "~> 3.0"
|
54
52
|
spec.add_runtime_dependency "rouge", "~> 3.20"
|
55
53
|
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
|
4
|
+
version: 1.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Linus Oleander
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rainbow
|
@@ -52,17 +52,14 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0.80'
|
55
|
-
description:
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
$ rfix
|
61
|
-
|
62
|
-
|
63
|
-
$ rfix all -- Fix all files in this repository (not recommended)
|
64
|
-
|
65
|
-
Optional args: --dry --help --list-files --limit-files --config --untracked
|
55
|
+
description: "RuboCop CLI that only complains about your latest changes\nUses 'git
|
56
|
+
diff' to determine what changes were made then runs RuboCop against them\n\n\t$
|
57
|
+
rfix branch <branch> -- Fix changes made between HEAD and <branch>\n\t$ rfix origin
|
58
|
+
\ -- Fix changes made between HEAD and origin branch\n\t$ rfix local --
|
59
|
+
Fix changes not yet pushed to upstream branch\n\t$ rfix info -- Display
|
60
|
+
runtime dependencies and their versions\n\t$ rfix all -- Fix all files
|
61
|
+
in this repository (not recommended)\n\nOptional args: --dry --help --list-files
|
62
|
+
--limit-files --config --untracked\n"
|
66
63
|
email:
|
67
64
|
- linus@oleander.nu
|
68
65
|
executables:
|
@@ -99,8 +96,7 @@ files:
|
|
99
96
|
- exe/rfix
|
100
97
|
- lib/rfix.rb
|
101
98
|
- lib/rfix/cmd.rb
|
102
|
-
- lib/rfix/extensions
|
103
|
-
- lib/rfix/extensions/offense.rb
|
99
|
+
- lib/rfix/extensions.rb
|
104
100
|
- lib/rfix/formatter.rb
|
105
101
|
- lib/rfix/git_file.rb
|
106
102
|
- lib/rfix/git_helper.rb
|
@@ -109,7 +105,6 @@ files:
|
|
109
105
|
- lib/rfix/tracked_file.rb
|
110
106
|
- lib/rfix/untracked_file.rb
|
111
107
|
- lib/rfix/version.rb
|
112
|
-
- resources/ps.png
|
113
108
|
- rfix.gemspec
|
114
109
|
- vendor/cli-ui/lib/cli/ui.rb
|
115
110
|
- vendor/cli-ui/lib/cli/ui/ansi.rb
|
@@ -141,7 +136,7 @@ licenses:
|
|
141
136
|
- MIT
|
142
137
|
metadata:
|
143
138
|
homepage_uri: https://github.com/oleander/rfix-rb
|
144
|
-
post_install_message:
|
139
|
+
post_install_message:
|
145
140
|
rdoc_options: []
|
146
141
|
require_paths:
|
147
142
|
- lib
|
@@ -153,13 +148,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
148
|
version: 2.5.0
|
154
149
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
150
|
requirements:
|
156
|
-
- - "
|
151
|
+
- - ">="
|
157
152
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
159
|
-
requirements:
|
160
|
-
|
161
|
-
|
162
|
-
signing_key:
|
153
|
+
version: '0'
|
154
|
+
requirements: []
|
155
|
+
rubygems_version: 3.1.4
|
156
|
+
signing_key:
|
163
157
|
specification_version: 4
|
164
158
|
summary: RuboCop CLI that only complains about your latest changes
|
165
159
|
test_files: []
|
@@ -1,40 +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
|
-
# rubocop:disable Style/Semicolon
|
19
|
-
Rfix.refresh!(source); super
|
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
|
@@ -1,77 +0,0 @@
|
|
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
|
data/resources/ps.png
DELETED
Binary file
|