pull-request 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. checksums.yaml +5 -5
  2. data/.rubocop.yml +67 -0
  3. data/README.md +43 -8
  4. data/exe/pr +38 -8
  5. data/pullrequest.gemspec +5 -5
  6. metadata +14 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7b5a4a15818b3c546c34bed2477f0b1976903ee9
4
- data.tar.gz: 784b32e9bc49d2c44dc842dea3a01a242de5362b
2
+ SHA256:
3
+ metadata.gz: 1a24bfa9cadb0ef0ede06d5e1c94ae69f6eb15d765a64c7ab3c6ad9af28eee44
4
+ data.tar.gz: d91143af59fdeb21f53827bbea50b48237fadeb7b0d31a3f24d714d3901b5fe3
5
5
  SHA512:
6
- metadata.gz: 5f95eb7e5b5200c7cb97eb3f038e95d2cef341b180973d386265fae3aa9e449caafe29bb62facaa9874a9ae8b4b3559efa997cde2a655e1ab186e63f3f51196c
7
- data.tar.gz: 4610b992636966a3f72a6a45e7ad6b75a1d5b79d03f00043fba6d8ddc46df2cf064abfa3fe6730f23050d1036c919839bbe6947fc6c66a2562096341a8c104bd
6
+ metadata.gz: 1418f787d24cfca340f6bfaf477277b80ad1f081068abdb685ed70a8c94997f21e9d113f8fd04b85d911d787363834be46232d2bfafe08bb48d1ac882f0e72f0
7
+ data.tar.gz: f0c48a452e439ca7791b412253e59d6a66714c6c6c08f089e2391fa6af3a032f9845fd490681b4b2a88ff6ecb7f3d3e50046c65e99577d487df0fe44b0eb9c16
@@ -0,0 +1,67 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.6.3
3
+ DisplayCopNames: true
4
+ DisplayStyleGuide: true
5
+
6
+ Style/SpecialGlobalVars:
7
+ Enabled: false
8
+
9
+ Bundler/OrderedGems:
10
+ Enabled: false
11
+
12
+ Layout/AlignParameters:
13
+ EnforcedStyle: with_fixed_indentation
14
+
15
+ Layout/IndentArray:
16
+ EnforcedStyle: consistent
17
+
18
+ Style/ConditionalAssignment:
19
+ Enabled: false
20
+
21
+ Style/Documentation:
22
+ Enabled: false
23
+
24
+ Style/EmptyMethod:
25
+ EnforcedStyle: expanded
26
+
27
+ Style/FrozenStringLiteralComment:
28
+ Enabled: false
29
+
30
+ Style/MultilineBlockChain:
31
+ Enabled: false
32
+
33
+ Layout/MultilineMethodCallIndentation:
34
+ EnforcedStyle: indented
35
+
36
+ Style/NilComparison:
37
+ Enabled: false
38
+
39
+ Style/ClassAndModuleChildren:
40
+ Enabled: false
41
+
42
+ Style/NumericLiterals:
43
+ MinDigits: 15
44
+
45
+ Style/NumericPredicate:
46
+ Enabled: false
47
+
48
+ Style/WordArray:
49
+ EnforcedStyle: brackets
50
+
51
+ Style/SymbolArray:
52
+ EnforcedStyle: brackets
53
+
54
+ Style/RescueModifier:
55
+ Enabled: false
56
+
57
+ Style/Lambda:
58
+ EnforcedStyle: literal
59
+
60
+ Style/RegexpLiteral:
61
+ Enabled: false
62
+
63
+ Style/StringLiterals:
64
+ EnforcedStyle: double_quotes
65
+
66
+ Metrics:
67
+ Enabled: false
data/README.md CHANGED
@@ -1,28 +1,63 @@
1
1
  # Pullrequest
2
2
 
3
- 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/pullrequest`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
3
+ Automatically branch and create an empty pull request, automating an early-review workflow.
6
4
 
7
5
  ## Installation
8
6
 
7
+ ### Requirements
8
+
9
+ #### hub
10
+
11
+ [GitHub's `hub`](https://hub.github.com/) CLI tool is required. On macOS, simply install it through _HomeBrew_
12
+
13
+ ```bash
14
+ brew install hub
15
+ ```
16
+
17
+ ### Installing pr (pull-request) as part of your application
18
+
9
19
  Add this line to your application's Gemfile:
10
20
 
11
21
  ```ruby
12
- gem 'pullrequest'
22
+ gem 'pull-request'
13
23
  ```
14
24
 
15
25
  And then execute:
16
26
 
17
- $ bundle
27
+ ```bash
28
+ bundle
29
+ ```
30
+
31
+ ### Installing pr (pull-request) standalone
18
32
 
19
- Or install it yourself as:
33
+ Install it yourself as:
20
34
 
21
- $ gem install pullrequest
35
+ ```bash
36
+ gem install pull-request
37
+ ````
22
38
 
23
39
  ## Usage
24
40
 
25
- TODO: Write usage instructions here
41
+ ### Create pull request to fix an issue
42
+
43
+ Assuming an issue #42 entitled `Create Clients Endpoint` exists.
44
+
45
+ ```bash
46
+ pr -i 42
47
+ ```
48
+
49
+ Creates a branch `feature/42_create_clients_endpoint` and opens a pull request for issue #42 named `Create clients endpoint`, including `fixes #42` in its description (linking the PR to the issue).
50
+
51
+ ### Create custom pull request
52
+
53
+ ```bash
54
+ pr "Create clients endpoint"
55
+ ```
56
+
57
+ Creates a branch named `feature/create_clients_endpoint` and open a pull-request named `Create clients endpoint`.
58
+
59
+ The quotes are optional, but allow `:` and other characters to be a part of the name (otherwise interpreted by the
60
+ shell).
26
61
 
27
62
  ## Development
28
63
 
data/exe/pr CHANGED
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env ruby
2
- #!/usr/bin/env ruby
3
2
  require "optionparser"
4
3
  require "active_support"
5
4
  require "active_support/all"
6
5
 
7
- estimation = nil
6
+ @estimation = nil
7
+ @simulate = false
8
+ @issue_number = nil
8
9
 
9
10
  def error(title)
10
11
  STDERR.puts title
@@ -12,28 +13,57 @@ def error(title)
12
13
  end
13
14
 
14
15
  def sh(command)
16
+ return puts "▶️ #{command}" if @simulate
17
+
15
18
  error "could not execute '#{command}'" unless system(command)
16
19
  end
17
20
 
21
+ def sh_get(command)
22
+ value = `#{command}`
23
+ error "could not execute '#{command}'" unless $? == 0
24
+
25
+ value
26
+ end
27
+
18
28
  OptionParser.new do |opts|
19
29
  opts.banner = "Usage: pr [options] [name]\nDefaults: pr" + File::SEPARATOR
20
- opts.on("-e", "--estimation ESTIMATION", Integer, "Estimated time in hours") do |e|
21
- estimation = e.presence
30
+ opts.on("-e", "--estimation ESTIMATION", Integer, "Estimated time in hours.") do |e|
31
+ @estimation = e.presence
32
+ end
33
+ opts.on("-s", "--simulate", "Simulate the actions: prints out the write-commands instead of executing them, prefixed with ▶️ .") do
34
+ @simulate = true
35
+ end
36
+ opts.on("-i", "--issue ISSUE_NUMBER", Integer, "Create a pull-request fixing an issue with the provided number.") do |i|
37
+ @issue_number = i
22
38
  end
23
39
  end.parse!
24
40
 
25
- name = ARGV.join(" ")
41
+ name =
42
+ if @issue_number
43
+ sh_get("hub issue show #{@issue_number} -f %t")
44
+ else
45
+ ARGV.join(" ")
46
+ end
26
47
  error "Please specify a name for your Pull Request" if name.blank?
27
48
 
28
49
  title = name
29
- title += " [#{estimation}]" if estimation
30
- branch = "feature/#{name.parameterize.underscore}"
50
+ title += " [#{@estimation}]" if @estimation
51
+ title += "\n\nfixes ##{@issue_number}" if @issue_number
52
+
53
+ branch = "feature/"
54
+ branch += "#{@issue_number}_" if @issue_number
55
+ branch += name.parameterize.underscore
56
+
31
57
  puts "Creating new PR for feature '#{title}'"
58
+
32
59
  puts "Creating branch #{branch}"
33
60
  sh "git checkout -b #{branch}"
61
+
34
62
  puts "Creating empty commit"
35
63
  sh "git commit -m 'initial commit for #{name}' --allow-empty"
64
+
36
65
  puts "Pushing to origin"
37
66
  sh "git push -u origin #{branch}"
67
+
38
68
  puts "Creating pull request"
39
- sh "hub pull-request -m '#{title}'"
69
+ sh "hub pull-request -d -m '#{title}'"
@@ -1,9 +1,9 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = "pull-request"
4
- spec.version = "0.1.0"
5
- spec.authors = ["Jens Ravens"]
6
- spec.email = ["jens@nerdgeschoss.de"]
4
+ spec.version = "0.3.0"
5
+ spec.authors = ["Jens Ravens", "David Dufour-Boivin"]
6
+ spec.email = ["jens@nerdgeschoss.de", "david@nerdgeschoss.de"]
7
7
 
8
8
  spec.summary = "Automatically create PRs for GitHub Flow"
9
9
  spec.homepage = "https://nerdgeschoss.de"
@@ -17,6 +17,6 @@ Gem::Specification.new do |spec|
17
17
  spec.require_paths = ["lib"]
18
18
 
19
19
  spec.add_dependency "activesupport", "~> 5.1"
20
- spec.add_development_dependency "bundler", "~> 1.14"
21
- spec.add_development_dependency "rake", "~> 10.0"
20
+ spec.add_development_dependency "bundler"
21
+ spec.add_development_dependency "rake"
22
22
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pull-request
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jens Ravens
8
+ - David Dufour-Boivin
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2017-05-16 00:00:00.000000000 Z
12
+ date: 2020-08-10 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
@@ -28,39 +29,41 @@ dependencies:
28
29
  name: bundler
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - "~>"
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
- version: '1.14'
34
+ version: '0'
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - "~>"
39
+ - - ">="
39
40
  - !ruby/object:Gem::Version
40
- version: '1.14'
41
+ version: '0'
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: rake
43
44
  requirement: !ruby/object:Gem::Requirement
44
45
  requirements:
45
- - - "~>"
46
+ - - ">="
46
47
  - !ruby/object:Gem::Version
47
- version: '10.0'
48
+ version: '0'
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
- - - "~>"
53
+ - - ">="
53
54
  - !ruby/object:Gem::Version
54
- version: '10.0'
55
+ version: '0'
55
56
  description:
56
57
  email:
57
58
  - jens@nerdgeschoss.de
59
+ - david@nerdgeschoss.de
58
60
  executables:
59
61
  - pr
60
62
  extensions: []
61
63
  extra_rdoc_files: []
62
64
  files:
63
65
  - ".gitignore"
66
+ - ".rubocop.yml"
64
67
  - CODE_OF_CONDUCT.md
65
68
  - Gemfile
66
69
  - LICENSE.txt
@@ -89,8 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
92
  - !ruby/object:Gem::Version
90
93
  version: '0'
91
94
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.6.8
95
+ rubygems_version: 3.0.6
94
96
  signing_key:
95
97
  specification_version: 4
96
98
  summary: Automatically create PRs for GitHub Flow