rubocop_challenger 0.1.2 → 0.1.3

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: 40f8fcb01f5f8042e319fd2a2a905721990668cd494cc50bec470b6ffabc12a3
4
- data.tar.gz: 593b6be5d9618421567add1d2fe294b45d25bdfe8dbf2b43b429ae298e058041
3
+ metadata.gz: 5c793807b7c62bf1aa08436ec4d4de3630a00825e239d8c5d6122f94651b7dd1
4
+ data.tar.gz: 50d56cc0b7da03c6f66d6aa93b6e5e814f0b6061997f727b8393bbc85487cc02
5
5
  SHA512:
6
- metadata.gz: 7090a68fc1b3df7ffc1084ecd872885f87606774abcfe1c3d6f3f5bb072384c8b2d65e2d18f0e435bd861743c77ecc41b879e60710d9de46e54b2fb92ef6f258
7
- data.tar.gz: 07e9af06dda7f5ab328b47d11c7a48db64517646e5f9314e4b429f0516f825a302e83c643ca02fd418b478c74396ad2d5f13eabe61aa7dc57bbc4304a19e9142
6
+ metadata.gz: 39ac6e8bb72d0b7a0e941a33dd09a0dd1701c9d59fb3557a7096e0f383c76ee042a29da225bbc80fbc505d2cbfd1e3eced511ef68b90c3a555153ab2f3a85ff1
7
+ data.tar.gz: 49f651edd5fd9601ecac5f3fca3914c2f373efd8fab4dcd9df5fdb40328f811b3851644efdc1487a30134427dc2fc029f1904e52a892057007f5c18baece123a
data/.rubocop_todo.yml CHANGED
@@ -1,17 +1,11 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-10-15 12:27:50 +0900 using RuboCop version 0.59.2.
3
+ # on 2018-10-21 01:10:29 +0900 using RuboCop version 0.59.2.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
7
7
  # versions of RuboCop, may require this file to be generated again.
8
8
 
9
- # Offense count: 1
10
- # Cop supports --auto-correct.
11
- Layout/LeadingBlankLines:
12
- Exclude:
13
- - 'rubocop_challenger.gemspec'
14
-
15
9
  # Offense count: 1
16
10
  # Cop supports --auto-correct.
17
11
  # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
@@ -21,24 +15,19 @@ Layout/SpaceInsideBlockBraces:
21
15
  Exclude:
22
16
  - 'Gemfile'
23
17
 
24
- # Offense count: 3
18
+ # Offense count: 5
25
19
  # Configuration parameters: CountComments, ExcludedMethods.
26
20
  # ExcludedMethods: refine
27
21
  Metrics/BlockLength:
28
22
  Max: 132
29
23
 
30
- # Offense count: 1
31
- # Configuration parameters: CountComments, ExcludedMethods.
32
- Metrics/MethodLength:
33
- Max: 13
34
-
35
24
  # Offense count: 2
36
25
  # Configuration parameters: Max.
37
26
  RSpec/ExampleLength:
38
27
  Exclude:
39
28
  - 'spec/rubocop_challenger/rubocop/todo_reader_spec.rb'
40
29
 
41
- # Offense count: 6
30
+ # Offense count: 7
42
31
  Style/Documentation:
43
32
  Exclude:
44
33
  - 'spec/**/*'
@@ -46,19 +35,11 @@ Style/Documentation:
46
35
  - 'lib/rubocop_challenger.rb'
47
36
  - 'lib/rubocop_challenger/cli.rb'
48
37
  - 'lib/rubocop_challenger/rubocop/challenge.rb'
38
+ - 'lib/rubocop_challenger/rubocop/command.rb'
49
39
  - 'lib/rubocop_challenger/rubocop/rule.rb'
50
40
  - 'lib/rubocop_challenger/rubocop/todo_reader.rb'
51
41
  - 'lib/rubocop_challenger/rubocop/todo_writer.rb'
52
42
 
53
-
54
-
55
-
56
- # Offense count: 1
57
- # Cop supports --auto-correct.
58
- Style/MutableConstant:
59
- Exclude:
60
- - 'lib/rubocop_challenger/version.rb'
61
-
62
43
  # Offense count: 1
63
44
  # Cop supports --auto-correct.
64
45
  Style/RedundantSelf:
@@ -71,16 +52,7 @@ Style/RescueModifier:
71
52
  Exclude:
72
53
  - 'lib/rubocop_challenger/rubocop/rule.rb'
73
54
 
74
-
75
- # Offense count: 2
76
- # Cop supports --auto-correct.
77
- # Configuration parameters: EnforcedStyleForMultiline.
78
- # SupportedStylesForMultiline: comma, consistent_comma, no_comma
79
- Style/TrailingCommaInArrayLiteral:
80
- Exclude:
81
- - 'spec/rubocop_challenger/rubocop/todo_reader_spec.rb'
82
-
83
- # Offense count: 4
55
+ # Offense count: 6
84
56
  # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
85
57
  # URISchemes: http, https
86
58
  Metrics/LineLength:
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop_challenger (0.1.2)
4
+ rubocop_challenger (0.1.3)
5
5
  pr-daikou (~> 0.2.0)
6
6
  rubocop
7
7
  rubocop-rspec
data/README.md CHANGED
@@ -1,31 +1,93 @@
1
1
  # Rubocop Challenger
2
2
 
3
- [![CircleCI](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master.svg?style=svg&circle-token=cdf0ffce5b4c0c7804b50dde00ca5ef09cbadb67)](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master) [![Gem Version](https://badge.fury.io/rb/rubocop_challenger.svg)](https://badge.fury.io/rb/rubocop_challenger)
4
-
5
-
6
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/rubocop_challenger`. To experiment with that code, run `bin/console` for an interactive prompt.
7
-
8
- TODO: Delete this and the text above, and describe your gem
3
+ [![CircleCI](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master.svg?style=svg&circle-token=cdf0ffce5b4c0c7804b50dde00ca5ef09cbadb67)](https://circleci.com/gh/ryz310/rubocop_challenger/tree/master) [![Gem Version](https://badge.fury.io/rb/rubocop_challenger.svg)](https://badge.fury.io/rb/rubocop_challenger) [![Waffle.io - Columns and their card count](https://badge.waffle.io/ryz310/rubocop_challenger.svg?columns=all)](https://waffle.io/ryz310/rubocop_challenger)
4
+
5
+ If you introduce [`rubocop`](https://github.com/rubocop-hq/rubocop) to an existing Rails project later, you will use [`$ rubocop --auto-gen-config`](https://github.com/rubocop-hq/rubocop/blob/master/manual/configuration.md#automatically-generated-configuration). But it will make a huge `.rubocop_todo.yml` and make you despair.
6
+ On the other hand, `rubocop` has [`--auto-correct`](https://github.com/rubocop-hq/rubocop/blob/master/manual/basic_usage.md#other-useful-command-line-flags) option, it is possible to automatically repair the writing which does not conform to the rule. But since it occasionally destroys your code, it is quite dangerous to apply all at once.
7
+ It is ideal that to remove a disabled rule from `.rubocop_todo.yml` every day, to check whether it passes test, and can be obtained consent from the team. But it requires strong persistence and time.
8
+ I call such work *Rubocop Challenge*. And the *RubocopChallenger* is a gem to support this challenge!
9
+
10
+ ## Rubocop Challenge Flow
11
+
12
+ 1. Run *RubocopChallenger* periodically from CI tool etc.
13
+ 2. When *RubocopChallenger* starts, delete a disabled rule from `.rubocop_todo.yml` existing in your project, execute `$ rubocop --auto-correct` and create a PR which include modified results
14
+ 3. You confirm the PR passes testing and then merge it if there is no problem
15
+
16
+ ## Example
17
+
18
+ ### Using [CircleCI 2.0](https://circleci.com)
19
+
20
+ ```yml
21
+ # .circleci/config.yml
22
+ version: 2
23
+
24
+ jobs:
25
+ rubocop_challenge:
26
+ docker:
27
+ - image: circleci/ruby:2.5-node-browsers
28
+ working_directory: ~/repo
29
+ steps:
30
+ - checkout
31
+ - run:
32
+ name: Rubocop Challenge
33
+ command: |
34
+ gem install rubocop_challenger
35
+ rubocop_challenger go \
36
+ --email=rubocop-challenge@example.com \
37
+ --name="'Rubocop Challenge'"
38
+
39
+ workflows:
40
+ version: 2
41
+
42
+ nightly:
43
+ triggers:
44
+ - schedule:
45
+ cron: "30 23 * * 1,2,3" # 8:30am every Tuesday, Wednsday and Thursday (JST)
46
+ filters:
47
+ branches:
48
+ only:
49
+ - master
50
+ jobs:
51
+ - rubocop_challenge
52
+ ```
9
53
 
10
- ## Installation
54
+ ## Usage
11
55
 
12
- Add this line to your application's Gemfile:
56
+ ```sh
57
+ $ rubocop_challenger help
13
58
 
14
- ```ruby
15
- gem 'rubocop_challenger'
59
+ Commands:
60
+ rubocop_challenger go --email=EMAIL --name=NAME # Run `$ rubocop --auto-correct` and create PR to your GitHub repository
61
+ rubocop_challenger help [COMMAND] # Describe available commands or one specific command
62
+ rubocop_challenger version # Show current version
16
63
  ```
17
64
 
18
- And then execute:
65
+ ### Command-line Flags
19
66
 
20
- $ bundle
67
+ ```sh
68
+ $ rubocop_challenger help go
21
69
 
22
- Or install it yourself as:
70
+ Usage:
71
+ rubocop_challenger go --email=EMAIL --name=NAME
23
72
 
24
- $ gem install rubocop_challenger
73
+ Options:
74
+ --email=EMAIL # Pull Request committer email
75
+ --name=NAME # Pull Request committer name
76
+ f, [--file-path=FILE_PATH] # Set your ".rubocop_todo.yml" path
77
+ # Default: .rubocop_todo.yml
78
+ [--mode=MODE] # Mode to select deletion target. You can choice "most_occurrence", "least_occurrence", or "random"
79
+ # Default: most_occurrence
80
+ [--base=BASE] # Base branch of Pull Request
81
+ # Default: master
82
+ l, [--labels=one two three] # Label to give to Pull Request
83
+ # Default: ["rubocop challenge"]
25
84
 
26
- ## Usage
85
+ Run `$ rubocop --auto-correct` and create PR to your GitHub repository
86
+ ```
87
+
88
+ ## Requirement
27
89
 
28
- $ rubocop_challenger rubocop_challenge --email=EMAIL --name=NAME
90
+ * Ruby 2.3 or higher
29
91
 
30
92
  ## Development
31
93
 
@@ -35,7 +97,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
35
97
 
36
98
  ## Contributing
37
99
 
38
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/rubocop_challenger. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
100
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ryz310/rubocop_challenger. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
39
101
 
40
102
  ## License
41
103
 
@@ -43,4 +105,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
43
105
 
44
106
  ## Code of Conduct
45
107
 
46
- Everyone interacting in the RubocopChallenger project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/[USERNAME]/rubocop_challenger/blob/master/CODE_OF_CONDUCT.md).
108
+ Everyone interacting in the RubocopChallenger project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/ryz310/rubocop_challenger/blob/master/CODE_OF_CONDUCT.md).
@@ -5,6 +5,7 @@ require 'rubocop-rspec'
5
5
  require 'rubocop_challenger/rubocop/rule'
6
6
  require 'rubocop_challenger/rubocop/todo_reader'
7
7
  require 'rubocop_challenger/rubocop/todo_writer'
8
+ require 'rubocop_challenger/rubocop/command'
8
9
  require 'rubocop_challenger/rubocop/challenge'
9
10
  require 'rubocop_challenger/cli'
10
11
  require 'rubocop_challenger/version'
@@ -4,7 +4,7 @@ require 'thor'
4
4
 
5
5
  module RubocopChallenger
6
6
  class CLI < Thor
7
- desc 'go', 'Run `$ rubocop -a` and create PR to GitHub'
7
+ desc 'go', 'Run `$ rubocop --auto-correct` and create PR to your GitHub repository'
8
8
  option :email,
9
9
  required: true,
10
10
  type: :string,
@@ -35,6 +35,13 @@ module RubocopChallenger
35
35
  def go
36
36
  target_rule = Rubocop::Challenge.exec(options[:file_path], options[:mode])
37
37
  PRDaikou.exec(pr_daikou_options(target_rule), nil)
38
+ rescue StandardError => e
39
+ puts e.message
40
+ end
41
+
42
+ desc 'version', 'Show current version'
43
+ def version
44
+ puts RubocopChallenger::VERSION
38
45
  end
39
46
 
40
47
  private
@@ -9,10 +9,11 @@ module RubocopChallenger
9
9
 
10
10
  private
11
11
 
12
- attr_reader :mode, :todo_reader, :todo_writer
12
+ attr_reader :mode, :command, :todo_reader, :todo_writer
13
13
 
14
14
  def initialize(file_path, mode)
15
15
  @mode = mode
16
+ @command = Rubocop::Command.new
16
17
  @todo_reader = Rubocop::TodoReader.new(file_path)
17
18
  @todo_writer = Rubocop::TodoWriter.new(file_path)
18
19
  end
@@ -20,24 +21,24 @@ module RubocopChallenger
20
21
  def exec
21
22
  verify_target_rule
22
23
  todo_writer.delete_rule(target_rule)
23
- `rubocop --auto-correct || true`
24
+ command.auto_correct
24
25
  target_rule
25
26
  end
26
27
 
27
28
  def verify_target_rule
28
29
  return unless target_rule.nil?
29
30
 
30
- puts 'There is no auto-correctable rule'
31
- exit
31
+ raise 'There is no auto-correctable rule'
32
32
  end
33
33
 
34
34
  def target_rule
35
- case mode
36
- when 'least_occurrence' then todo_reader.least_occurrence_rule
37
- when 'random' then todo_reader.any_rule
38
- when 'most_occurrence' then todo_reader.most_occurrence_rule
39
- else raise "`#{mode}` is not supported mode"
40
- end
35
+ @target_rule ||=
36
+ case mode
37
+ when 'least_occurrence' then todo_reader.least_occurrence_rule
38
+ when 'random' then todo_reader.any_rule
39
+ when 'most_occurrence' then todo_reader.most_occurrence_rule
40
+ else raise "`#{mode}` is not supported mode"
41
+ end
41
42
  end
42
43
  end
43
44
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubocopChallenger
4
+ module Rubocop
5
+ class Command
6
+ def auto_correct
7
+ `rubocop --auto-correct || true`
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubocopChallenger
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop_challenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryosuke_sato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-10-19 00:00:00.000000000 Z
11
+ date: 2018-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pr-daikou
@@ -150,6 +150,7 @@ files:
150
150
  - lib/rubocop_challenger.rb
151
151
  - lib/rubocop_challenger/cli.rb
152
152
  - lib/rubocop_challenger/rubocop/challenge.rb
153
+ - lib/rubocop_challenger/rubocop/command.rb
153
154
  - lib/rubocop_challenger/rubocop/rule.rb
154
155
  - lib/rubocop_challenger/rubocop/todo_reader.rb
155
156
  - lib/rubocop_challenger/rubocop/todo_writer.rb