rubocop_challenger 2.0.0.pre → 2.0.0.pre2

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: 88964a115a552a48b7462b24e329661fe2254f14e83a0effb9ce3cdf088d3abb
4
- data.tar.gz: 81dbae9e07d6c9b51bea98db1f14196431563420b7c22a61a4e98b3b10559647
3
+ metadata.gz: 7a16dd2ba41bc75373d730d5b92bd0e908a26a9ac8ec5e6ec3732d122f3ca946
4
+ data.tar.gz: ee5feeabc11854d8f5d214dadf4a476dcfd531618f073eca548ce706c82ec215
5
5
  SHA512:
6
- metadata.gz: 4ba31abab9fc1f3a6446db04e6e05490896be15e6916682deb8dcf49d784c021e4e7fd72fb96f17e8f0b004a4baaf1884308e75670ebab38c2115461c17b7686
7
- data.tar.gz: 20bc09b991dda4c2cb7c2868527673409baff908c4712afb505152b78dc46fb8227bde6a65814217d8b0075a24cfc0be31a836dc7987e48d7979164d5be3250f
6
+ metadata.gz: 33269aaa091dd13c2e7a81a57d89930d16238c494ca07a6307290c125ae57ba160fafcb6abcd84f717231e23ed031d99324570fc245e6360c78b402a9b75b457
7
+ data.tar.gz: d274632af2fa2cc0a9dd9f30527b0e19073d97e06c02d2701a95d8426ebab782d79efd963f8c794aa10ddc828eb5f728cb018e4957a955598a43ef6c1eb23dc3
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2019-03-31 02:56:49 +0900 using RuboCop version 0.66.0.
3
+ # on 2019-04-09 22:04:02 +0900 using RuboCop version 0.67.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
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rubocop_challenger (2.0.0.pre)
5
- octokit
4
+ rubocop_challenger (2.0.0.pre2)
5
+ pr_comet
6
6
  rubocop
7
7
  rubocop-rspec
8
8
  thor
@@ -26,9 +26,11 @@ GEM
26
26
  multipart-post (2.0.0)
27
27
  octokit (4.14.0)
28
28
  sawyer (~> 0.8.0, >= 0.5.3)
29
- parallel (1.16.2)
30
- parser (2.6.2.0)
29
+ parallel (1.17.0)
30
+ parser (2.6.2.1)
31
31
  ast (~> 2.4.0)
32
+ pr_comet (0.1.1)
33
+ octokit
32
34
  pry (0.12.2)
33
35
  coderay (~> 1.1.0)
34
36
  method_source (~> 0.9.0)
@@ -54,7 +56,7 @@ GEM
54
56
  rspec-support (3.8.0)
55
57
  rspec_junit_formatter (0.4.1)
56
58
  rspec-core (>= 2, < 4, != 2.12.0)
57
- rubocop (0.66.0)
59
+ rubocop (0.67.2)
58
60
  jaro_winkler (~> 1.5.1)
59
61
  parallel (~> 1.10)
60
62
  parser (>= 2.5, != 2.5.1.1)
@@ -75,7 +77,7 @@ GEM
75
77
  simplecov-html (0.10.2)
76
78
  thor (0.20.3)
77
79
  unicode-display_width (1.5.0)
78
- yard (0.9.18)
80
+ yard (0.9.19)
79
81
 
80
82
  PLATFORMS
81
83
  ruby
@@ -90,4 +92,4 @@ DEPENDENCIES
90
92
  simplecov
91
93
 
92
94
  BUNDLED WITH
93
- 1.16.6
95
+ 1.17.3
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- # usage: bin/create_release_pr VERSION
4
+ # usage: bin/release VERSION
5
5
 
6
6
  require 'bundler/setup'
7
7
  require 'rubocop_challenger'
@@ -9,17 +9,14 @@ require 'rubocop_challenger'
9
9
  VERSION_FORMAT = /\A\d+\.\d+\.\d+(\.(pre|beta|rc)\d?)?\z/.freeze
10
10
  version = ARGV[0]
11
11
  rubocop = RubocopChallenger::Rubocop::Command.new
12
- pr_creater =
13
- RubocopChallenger::Github::PrCreater.new(
14
- base: 'master', branch: "update/v#{version}"
15
- )
12
+ pr_comet = PrComet.new(base: 'master', branch: "update/v#{version}")
16
13
 
17
14
  # Verifying
18
- abort 'usage: bin/create_release_pr VERSION' if version.nil?
15
+ abort 'usage: bin/release VERSION' if version.nil?
19
16
  abort 'A version must be like a `1.2.3`' unless version =~ VERSION_FORMAT
20
17
 
21
18
  # Modify a version file
22
- pr_creater.commit 'Update version' do
19
+ pr_comet.commit 'Update version' do
23
20
  File.write('lib/rubocop_challenger/version.rb', <<~VERSION)
24
21
  # frozen_string_literal: true
25
22
 
@@ -30,14 +27,14 @@ pr_creater.commit 'Update version' do
30
27
  end
31
28
 
32
29
  # Bundle Update
33
- pr_creater.commit 'Run $ bundle update' do
30
+ pr_comet.commit 'Run $ bundle update' do
34
31
  `bundle update`
35
32
  end
36
33
 
37
34
  # Regenerate .rubocop_todo.yml
38
- pr_creater.commit 'Regenerate .rubocop_todo.yml' do
35
+ pr_comet.commit 'Regenerate .rubocop_todo.yml' do
39
36
  rubocop.auto_gen_config
40
37
  end
41
38
 
42
- # Create PR
43
- pr_creater.create_pr(title: "Update v#{version}", body: '')
39
+ # Create a pull request
40
+ pr_comet.create!(title: "Update v#{version}", body: '')
data/challenger.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
- spec.add_runtime_dependency 'octokit'
25
+ spec.add_runtime_dependency 'pr_comet'
26
26
  spec.add_runtime_dependency 'rubocop'
27
27
  spec.add_runtime_dependency 'rubocop-rspec'
28
28
  spec.add_runtime_dependency 'thor'
@@ -4,7 +4,7 @@ module RubocopChallenger
4
4
  module Bundler
5
5
  # To execute bundler command
6
6
  class Command
7
- include CommandLine
7
+ include PrComet::CommandLine
8
8
 
9
9
  def update(*gem_names)
10
10
  run('update', *gem_names)
@@ -5,7 +5,7 @@ require 'thor'
5
5
  module RubocopChallenger
6
6
  # To define CLI commands
7
7
  class CLI < Thor
8
- include CommandLine
8
+ include PrComet::CommandLine
9
9
 
10
10
  desc 'go', 'Run `$ rubocop --auto-correct` and create a PR to GitHub repo'
11
11
  option :email,
@@ -44,9 +44,9 @@ module RubocopChallenger
44
44
  def go
45
45
  Go.new(options).exec
46
46
  rescue Errors::NoAutoCorrectableRule => e
47
- color_puts e.message, CommandLine::YELLOW
47
+ color_puts e.message, PrComet::CommandLine::YELLOW
48
48
  rescue StandardError => e
49
- color_puts e.message, CommandLine::RED
49
+ color_puts e.message, PrComet::CommandLine::RED
50
50
  exit_process!
51
51
  end
52
52
 
@@ -2,8 +2,6 @@
2
2
 
3
3
  module RubocopChallenger
4
4
  module Errors
5
- class ExistUncommittedModify < StandardError; end
6
-
7
5
  # Raise if no auto-correctable rule in the `.rubocop_todo.yml`.
8
6
  class NoAutoCorrectableRule < StandardError
9
7
  def initialize
@@ -3,7 +3,7 @@
3
3
  module RubocopChallenger
4
4
  # Executes Rubocop Challenge flow
5
5
  class Go
6
- include CommandLine
6
+ include PrComet::CommandLine
7
7
 
8
8
  # @param options [Hash] describe_options_here
9
9
  def initialize(options)
@@ -126,7 +126,8 @@ module RubocopChallenger
126
126
  config_editor.add_ignore(rule)
127
127
  config_editor.save
128
128
  end
129
- color_puts DESCRIPTION_THAT_CHALLENGE_IS_INCOMPLETE, CommandLine::YELLOW
129
+ color_puts DESCRIPTION_THAT_CHALLENGE_IS_INCOMPLETE,
130
+ PrComet::CommandLine::YELLOW
130
131
  end
131
132
 
132
133
  # Checks the challenge result. If the challenge is successed, the rule
@@ -12,7 +12,7 @@ module RubocopChallenger
12
12
  # @param dry_run [Boolean]
13
13
  # Does not create a pull request when given `true`
14
14
  def initialize(user_name, user_email, labels, dry_run = false)
15
- @pr_creater = Github::PrCreater.new(
15
+ @pr_comet = PrComet.new(
16
16
  base: 'master',
17
17
  branch: "rubocop-challenge/#{timestamp}",
18
18
  user_name: user_name,
@@ -28,7 +28,7 @@ module RubocopChallenger
28
28
  # @yield Some commands where modify local files
29
29
  # @return [Object] Return result of yield if you use &block
30
30
  def commit!(message, &block)
31
- pr_creater.commit message, &block
31
+ pr_comet.commit message, &block
32
32
  end
33
33
 
34
34
  # Creates a pull request for the Rubocop Challenge
@@ -68,11 +68,11 @@ module RubocopChallenger
68
68
 
69
69
  private
70
70
 
71
- attr_reader :pr_creater, :labels, :dry_run
71
+ attr_reader :pr_comet, :labels, :dry_run
72
72
 
73
73
  # Create a PR with description of what modification were made.
74
- def create_pull_request!(pr_creater_options)
75
- pr_creater.create_pr(pr_creater_options) unless dry_run
74
+ def create_pull_request!(pr_comet_options)
75
+ pr_comet.create!(pr_comet_options) unless dry_run
76
76
  end
77
77
 
78
78
  def generate_pull_request_body(before_version, after_version)
@@ -4,7 +4,7 @@ module RubocopChallenger
4
4
  module Rubocop
5
5
  # To execute rubocop gem command (Mainly for mock when testing)
6
6
  class Command
7
- include CommandLine
7
+ include PrComet::CommandLine
8
8
 
9
9
  def auto_correct
10
10
  run('--auto-correct')
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RubocopChallenger
4
- VERSION = '2.0.0.pre'
4
+ VERSION = '2.0.0.pre2'
5
5
  end
@@ -2,12 +2,11 @@
2
2
 
3
3
  require 'erb'
4
4
  require 'yard'
5
- require 'octokit'
5
+ require 'pr_comet'
6
6
  require 'rubocop'
7
7
  require 'rubocop-rspec'
8
8
  require 'rubocop_challenger/errors'
9
9
  require 'rubocop_challenger/version'
10
- require 'rubocop_challenger/command_line'
11
10
  require 'rubocop_challenger/rubocop/rule'
12
11
  require 'rubocop_challenger/rubocop/config_editor'
13
12
  require 'rubocop_challenger/rubocop/todo_reader'
@@ -19,7 +18,4 @@ require 'rubocop_challenger/pull_request'
19
18
  require 'rubocop_challenger/go'
20
19
  require 'rubocop_challenger/cli'
21
20
  require 'rubocop_challenger/bundler/command'
22
- require 'rubocop_challenger/git/command'
23
- require 'rubocop_challenger/github/client'
24
21
  require 'rubocop_challenger/github/pr_template'
25
- require 'rubocop_challenger/github/pr_creater'
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubocop_challenger
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre
4
+ version: 2.0.0.pre2
5
5
  platform: ruby
6
6
  authors:
7
7
  - ryosuke_sato
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-30 00:00:00.000000000 Z
11
+ date: 2019-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: octokit
14
+ name: pr_comet
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -185,8 +185,8 @@ files:
185
185
  - README.md
186
186
  - Rakefile
187
187
  - bin/console
188
- - bin/create_release_pr
189
188
  - bin/jailbreak
189
+ - bin/release
190
190
  - bin/setup
191
191
  - challenger.gemspec
192
192
  - exe/rubocop_challenger
@@ -196,11 +196,7 @@ files:
196
196
  - lib/rubocop_challenger.rb
197
197
  - lib/rubocop_challenger/bundler/command.rb
198
198
  - lib/rubocop_challenger/cli.rb
199
- - lib/rubocop_challenger/command_line.rb
200
199
  - lib/rubocop_challenger/errors.rb
201
- - lib/rubocop_challenger/git/command.rb
202
- - lib/rubocop_challenger/github/client.rb
203
- - lib/rubocop_challenger/github/pr_creater.rb
204
200
  - lib/rubocop_challenger/github/pr_template.rb
205
201
  - lib/rubocop_challenger/go.rb
206
202
  - lib/rubocop_challenger/pull_request.rb
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubocopChallenger
4
- # To execute command line. You should inherit this class to use.
5
- module CommandLine
6
- private
7
-
8
- # Execute a command
9
- #
10
- # @param command [String] The command you want to execute
11
- # @return [String] The result in the execution
12
- def execute(command)
13
- puts "$ #{command}"
14
- `#{command}`.chomp.tap do |result|
15
- color_code = $CHILD_STATUS.success? ? GREEN : RED
16
- color_puts(result, color_code)
17
- end
18
- end
19
-
20
- RED = 31
21
- GREEN = 32
22
- YELLOW = 33
23
- BLUE = 34
24
- PING = 35
25
-
26
- def color_puts(string, color_code)
27
- puts "\e[#{color_code}m#{string}\e[0m"
28
- end
29
- end
30
- end
@@ -1,98 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubocopChallenger
4
- module Git
5
- # To execute git command
6
- class Command
7
- include CommandLine
8
-
9
- def initialize(user_name: nil, user_email: nil)
10
- @user_name = user_name
11
- @user_email = user_email
12
- end
13
-
14
- def user_name
15
- @user_name ||= config('user.name')
16
- end
17
-
18
- def user_email
19
- @user_email ||= config('user.email')
20
- end
21
-
22
- def exist_uncommitted_modify?
23
- execute('git add -n .; git diff --name-only') != ''
24
- end
25
-
26
- def checkout(branch)
27
- run('checkout', branch)
28
- end
29
-
30
- def checkout_with(new_branch)
31
- run('checkout', '-b', new_branch)
32
- end
33
-
34
- def add(*files)
35
- run('add', *files)
36
- end
37
-
38
- def commit(message)
39
- run_with_environments('commit', '-m', "\"#{message}\"")
40
- end
41
-
42
- # Execute git push command
43
- #
44
- # @note For security, this command add a quiet option automatically.
45
- # @param remote [String] The remote repository name.
46
- # @param branch [String] The target branch. default: `#current_branch`
47
- # @return [String] The command's standard output.
48
- def push(remote, branch = current_branch)
49
- run('push', '-q', remote, branch)
50
- end
51
-
52
- def current_sha1
53
- run('rev-parse', 'HEAD')
54
- end
55
-
56
- def current_sha1?(sha1)
57
- current_sha1 == sha1.to_s
58
- end
59
-
60
- def current_branch
61
- run('rev-parse', '--abbrev-ref', 'HEAD')
62
- end
63
-
64
- def current_branch?(branch)
65
- current_branch == branch.to_s
66
- end
67
-
68
- def remote_url(remote)
69
- config("--get remote.#{remote}.url")
70
- end
71
-
72
- private
73
-
74
- def run(*subcommands)
75
- command = "git #{subcommands.join(' ')}"
76
- execute(command)
77
- end
78
-
79
- def run_with_environments(*subcommands)
80
- command = "#{environments} git #{subcommands.join(' ')}"
81
- execute(command)
82
- end
83
-
84
- def config(key)
85
- run('config', key)
86
- end
87
-
88
- def environments
89
- @environments ||= [
90
- "GIT_AUTHOR_NAME=\"#{user_name}\"",
91
- "GIT_AUTHOR_EMAIL=\"#{user_email}\"",
92
- "GIT_COMMITTER_NAME=\"#{user_name}\"",
93
- "GIT_COMMITTER_EMAIL=\"#{user_email}\""
94
- ].join(' ')
95
- end
96
- end
97
- end
98
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubocopChallenger
4
- module Github
5
- # GitHub API Client
6
- class Client
7
- attr_reader :repository
8
-
9
- def initialize(access_token, remote_url)
10
- @client = Octokit::Client.new(access_token: access_token)
11
- @repository = remote_url.match(REPOSITORY_MATCHER)[:repository]
12
- end
13
-
14
- # Create a pull request
15
- #
16
- # @param base [String] The branch you want your changes pulled into
17
- # @param head [String] The branch where your changes are implemented
18
- # @param title [String] Title for the pull request
19
- # @param body [String] The body for the pull request
20
- # @return [Integer] Created pull request number
21
- def create_pull_request(base:, head:, title:, body:)
22
- response =
23
- client.create_pull_request(repository, base, head, title, body)
24
- response.number
25
- end
26
-
27
- # Description of #add_labels
28
- #
29
- # @param issue_number [Integer] Number ID of the issue (or pull request)
30
- # @param labels [Array<String>] An array of labels to apply to this Issue
31
- def add_labels(issue_number, *labels)
32
- client.add_labels_to_an_issue(repository, issue_number, labels)
33
- end
34
-
35
- private
36
-
37
- REPOSITORY_MATCHER = %r{github\.com[:/](?<repository>.+)\.git}.freeze
38
-
39
- attr_reader :client
40
- end
41
- end
42
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubocopChallenger
4
- module Github
5
- # To create Pull Request
6
- class PrCreater
7
- # Returns a new instance of Github::PrCreater
8
- #
9
- # @note You have to set ENV['GITHUB_ACCESS_TOKEN']
10
- # @param base [String] The branch you want your changes pulled into
11
- # @param branch [String] The branch where your changes are going to
12
- # implement.
13
- # @param user_name [String] The username to use for committer and author
14
- # @param user_email [String] The email to use for committer and author
15
- def initialize(base:, branch:, user_name: nil, user_email: nil)
16
- raise "You have to set ENV['GITHUB_ACCESS_TOKEN']" if access_token.nil?
17
-
18
- @base_branch = base
19
- @topic_branch = branch
20
- @git = Git::Command.new(user_name: user_name, user_email: user_email)
21
- @github = Github::Client.new(access_token, git.remote_url('origin'))
22
- @initial_sha1 = git.current_sha1
23
- end
24
-
25
- # Add and commit local files to this branch
26
- #
27
- # @param message [String] The commit message
28
- # @yield Some commands where modify local files
29
- # @return [Object] Return result of yield if you use &block
30
- # @raise [RubocopChallenger::Errors::ExistUncommittedModify]
31
- # Raise error if you use &block and exists someuncommitted files
32
- def commit(message, &block)
33
- git.checkout_with(topic_branch) unless git.current_branch?(topic_branch)
34
- result = modify_files(&block) if block_given?
35
- git.add('.')
36
- git.commit(message)
37
- result
38
- end
39
-
40
- # Create a pull request
41
- # You should call #commit before calling this method
42
- #
43
- # @param title [String] Title for the pull request
44
- # @param body [String] The body for the pull request
45
- # @param labels [Array<String>] An array of labels to apply to this PR
46
- # @return [Boolean] Return true if its successed
47
- def create_pr(title:, body:, labels: nil)
48
- return false unless git_condition_valid?
49
-
50
- git.push(github_token_url, topic_branch)
51
- pr_number = github.create_pull_request(
52
- base: base_branch, head: topic_branch, title: title, body: body
53
- )
54
- github.add_labels(pr_number, *labels) unless labels.nil?
55
- true
56
- end
57
-
58
- private
59
-
60
- attr_reader :git, :github, :base_branch, :topic_branch, :initial_sha1
61
-
62
- def git_condition_valid?
63
- !git.current_sha1?(initial_sha1) && git.current_branch?(topic_branch)
64
- end
65
-
66
- def modify_files
67
- raise Errors::ExistUncommittedModify if git.exist_uncommitted_modify?
68
-
69
- yield
70
- end
71
-
72
- def access_token
73
- ENV['GITHUB_ACCESS_TOKEN']
74
- end
75
-
76
- # @note You *MUST NOT* use `#access_token` in the URL because this string
77
- # will be output STDOUT via `RubocopChallenger::CommandLine` module.
78
- def github_token_url
79
- "https://${GITHUB_ACCESS_TOKEN}@github.com/#{github.repository}"
80
- end
81
- end
82
- end
83
- end