rubyhub 0.1.7 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +273 -0
- data/.dependabot/config.yml +8 -0
- data/.fasterer.yml +3 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +23 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile.lock +49 -31
- data/README.md +9 -1
- data/lib/rubyhub.rb +2 -1
- data/lib/rubyhub/cli.rb +1 -1
- data/lib/rubyhub/config/templates/.rubyhub.yml +2 -1
- data/lib/rubyhub/configuration.rb +1 -4
- data/lib/rubyhub/operations/configuration/setup.rb +6 -6
- data/lib/rubyhub/operations/pull_request/create.rb +3 -3
- data/lib/rubyhub/pull_request.rb +15 -14
- data/lib/rubyhub/utils/deep_symbolize_keys_helper.rb +2 -2
- data/lib/rubyhub/utils/hash.rb +10 -0
- data/lib/rubyhub/utils/string.rb +5 -0
- data/lib/rubyhub/version.rb +1 -1
- data/rubyhub.gemspec +15 -11
- metadata +106 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 867d8da954342520ec12a0ba8cef25861f9540de1d48e58cca6e71a5f27c6475
|
4
|
+
data.tar.gz: 481a610c20b1e363a4af41784c6c75c2ccbd48d42fd7e428d57fca139689078c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 345ba10ee196691a920a9518862837c3758bc3187ebf3424b57d39b479e71a90313bedc7221b2213dabf0582235a6c244c31f70b7b25da88d58fbfba84615fd2
|
7
|
+
data.tar.gz: c9c181afcdaf779b0b2a0d9e0b4a517ead44822f47c48d28fa7f5a9d620413c04ae7f7348054ca57288ac6e99601d443aaad05affeb1510f5ca5cb4ae0dd68c1
|
@@ -0,0 +1,273 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
aliases:
|
4
|
+
working_directory: &working_directory
|
5
|
+
working_directory: ~/rubyhub
|
6
|
+
|
7
|
+
executors:
|
8
|
+
default:
|
9
|
+
description: The official CircleCI Ruby Docker image
|
10
|
+
parameters:
|
11
|
+
tag:
|
12
|
+
description: The circleci/ruby Docker image version tag
|
13
|
+
type: string
|
14
|
+
default: latest
|
15
|
+
docker:
|
16
|
+
- image: circleci/ruby:<< parameters.tag >>-node
|
17
|
+
environment:
|
18
|
+
- BUNDLE_JOBS: 4
|
19
|
+
- BUNDLE_PATH: vendor/bundle
|
20
|
+
- BUNDLE_RETRY: 3
|
21
|
+
<<: *working_directory
|
22
|
+
|
23
|
+
commands:
|
24
|
+
cc-setup-coverage:
|
25
|
+
description: Setup Code Climate
|
26
|
+
parameters:
|
27
|
+
url:
|
28
|
+
description: Pre-built binary URL
|
29
|
+
default: https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64
|
30
|
+
type: string
|
31
|
+
version:
|
32
|
+
default: latest
|
33
|
+
type: string
|
34
|
+
steps:
|
35
|
+
- restore_cache:
|
36
|
+
key: cc-setup-<< parameters.version >>
|
37
|
+
- run:
|
38
|
+
name: Setup coverage
|
39
|
+
command: |
|
40
|
+
if [[ $(command -v cc-test-reporter) == "" ]]; then
|
41
|
+
mkdir -p tmp/
|
42
|
+
sudo curl -s -o ./tmp/cc-test-reporter -L << parameters.url >>
|
43
|
+
sudo chmod +x ./tmp/cc-test-reporter
|
44
|
+
else
|
45
|
+
echo "Already installed."
|
46
|
+
fi
|
47
|
+
- save_cache:
|
48
|
+
key: cc-setup-<< parameters.version >>
|
49
|
+
paths:
|
50
|
+
- ./tmp/cc-test-reporter
|
51
|
+
|
52
|
+
cc-sum-coverage:
|
53
|
+
description: Combine (sum) multiple pre-formatted coverage payloads into one
|
54
|
+
parameters:
|
55
|
+
input:
|
56
|
+
description: File glob of the files to combine
|
57
|
+
type: string
|
58
|
+
output:
|
59
|
+
description: The output path
|
60
|
+
default: ./tmp/coverage/codeclimate.json
|
61
|
+
type: string
|
62
|
+
parts:
|
63
|
+
description: The total number of parts to combine (sum)
|
64
|
+
default: 1
|
65
|
+
type: integer
|
66
|
+
steps:
|
67
|
+
- run:
|
68
|
+
name: Sum coverage
|
69
|
+
command: |
|
70
|
+
./tmp/cc-test-reporter sum-coverage << parameters.input >> --output << parameters.output >> \
|
71
|
+
--parts << parameters.parts >>
|
72
|
+
cc-upload-coverage:
|
73
|
+
description: Upload coverage payload to Code Climate
|
74
|
+
parameters:
|
75
|
+
input:
|
76
|
+
description: The input path
|
77
|
+
default: ./tmp/coverage/codeclimate.json
|
78
|
+
type: string
|
79
|
+
steps:
|
80
|
+
- run:
|
81
|
+
name: Upload coverage
|
82
|
+
command: |
|
83
|
+
./tmp/cc-test-reporter upload-coverage --input << parameters.input >>
|
84
|
+
cc-format-coverage:
|
85
|
+
description: Locate, parse, and re-format supported coverage sources
|
86
|
+
parameters:
|
87
|
+
input-type:
|
88
|
+
description: The type of input source to use
|
89
|
+
enum:
|
90
|
+
- simplecov
|
91
|
+
- lcov
|
92
|
+
type: enum
|
93
|
+
output:
|
94
|
+
description: The output path
|
95
|
+
default: coverage/codeclimate.json
|
96
|
+
type: string
|
97
|
+
steps:
|
98
|
+
- run:
|
99
|
+
name: Format coverage
|
100
|
+
command: |
|
101
|
+
./tmp/cc-test-reporter format-coverage --input-type << parameters.input-type >> \
|
102
|
+
--output << parameters.output >>
|
103
|
+
bundle-load-cache:
|
104
|
+
description: Load cached RubyGems
|
105
|
+
parameters:
|
106
|
+
key:
|
107
|
+
description: The cache key to use
|
108
|
+
type: string
|
109
|
+
default: bundle-v1
|
110
|
+
steps:
|
111
|
+
- restore_cache:
|
112
|
+
key: 'bundle-v1-<< parameters.key >>-{{ arch }}-{{ checksum "rubyhub.gemspec" }}'
|
113
|
+
|
114
|
+
bundle-install:
|
115
|
+
description: Install gems with Bundler
|
116
|
+
steps:
|
117
|
+
- run:
|
118
|
+
name: install dependencies
|
119
|
+
command: |
|
120
|
+
gem update --system
|
121
|
+
gem install bundler
|
122
|
+
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
123
|
+
bundle-save-cache:
|
124
|
+
description: Save RubyGems to cache
|
125
|
+
parameters:
|
126
|
+
key:
|
127
|
+
description: The cache key to use
|
128
|
+
type: string
|
129
|
+
default: bundle-v1
|
130
|
+
steps:
|
131
|
+
- save_cache:
|
132
|
+
key: 'bundle-v1-<< parameters.key >>-{{ arch }}-{{ checksum "rubyhub.gemspec" }}'
|
133
|
+
paths:
|
134
|
+
- vendor/bundle
|
135
|
+
|
136
|
+
rspec:
|
137
|
+
description: Test with RSpec
|
138
|
+
steps:
|
139
|
+
- run:
|
140
|
+
name: Rubocop
|
141
|
+
command: bundle exec rubocop
|
142
|
+
- run:
|
143
|
+
name: Fasterer
|
144
|
+
command: bundle exec fasterer
|
145
|
+
- attach_workspace:
|
146
|
+
at: ~/rubyhub/tmp
|
147
|
+
- run: >
|
148
|
+
bundle exec rspec --format RspecJunitFormatter --out test_results/rspec.xml
|
149
|
+
- cc-format-coverage:
|
150
|
+
input-type: simplecov
|
151
|
+
output: ./tmp/codeclimate.$CIRCLE_JOB.json
|
152
|
+
- persist_to_workspace:
|
153
|
+
root: tmp
|
154
|
+
paths:
|
155
|
+
- codeclimate.*.json
|
156
|
+
- store_test_results:
|
157
|
+
path: test_results
|
158
|
+
- store_artifacts:
|
159
|
+
path: test_results
|
160
|
+
destination: test-results
|
161
|
+
|
162
|
+
jobs:
|
163
|
+
checkout:
|
164
|
+
executor: default
|
165
|
+
steps:
|
166
|
+
- restore_cache:
|
167
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
168
|
+
- checkout
|
169
|
+
- save_cache:
|
170
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
171
|
+
paths:
|
172
|
+
- .
|
173
|
+
|
174
|
+
cc-setup-coverage:
|
175
|
+
executor: default
|
176
|
+
steps:
|
177
|
+
- cc-setup-coverage
|
178
|
+
- persist_to_workspace:
|
179
|
+
root: ./tmp
|
180
|
+
paths:
|
181
|
+
- cc-test-reporter
|
182
|
+
|
183
|
+
ruby-2-5:
|
184
|
+
executor:
|
185
|
+
name: default
|
186
|
+
tag: "2.5"
|
187
|
+
steps:
|
188
|
+
- restore_cache:
|
189
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
190
|
+
- bundle-load-cache:
|
191
|
+
key: ruby-2.5
|
192
|
+
- bundle-install
|
193
|
+
- bundle-save-cache:
|
194
|
+
key: ruby-2.5
|
195
|
+
- rspec
|
196
|
+
|
197
|
+
ruby-2-6:
|
198
|
+
executor:
|
199
|
+
name: default
|
200
|
+
tag: "2.6"
|
201
|
+
steps:
|
202
|
+
- restore_cache:
|
203
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
204
|
+
- bundle-load-cache:
|
205
|
+
key: ruby-2.6
|
206
|
+
- bundle-install
|
207
|
+
- bundle-save-cache:
|
208
|
+
key: ruby-2.6
|
209
|
+
- rspec
|
210
|
+
|
211
|
+
ruby-2-7:
|
212
|
+
executor:
|
213
|
+
name: default
|
214
|
+
tag: "2.7"
|
215
|
+
steps:
|
216
|
+
- restore_cache:
|
217
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
218
|
+
- bundle-load-cache:
|
219
|
+
key: ruby-2.7
|
220
|
+
- bundle-install
|
221
|
+
- bundle-save-cache:
|
222
|
+
key: ruby-2.7
|
223
|
+
- rspec
|
224
|
+
|
225
|
+
ruby-head:
|
226
|
+
executor: default
|
227
|
+
steps:
|
228
|
+
- restore_cache:
|
229
|
+
key: checkout-{{ .Branch }}-{{ .Revision }}
|
230
|
+
- bundle-load-cache:
|
231
|
+
key: ruby-head
|
232
|
+
- bundle-install
|
233
|
+
- bundle-save-cache:
|
234
|
+
key: ruby-head
|
235
|
+
- rspec
|
236
|
+
|
237
|
+
cc-upload-coverage:
|
238
|
+
executor: default
|
239
|
+
steps:
|
240
|
+
- attach_workspace:
|
241
|
+
at: ~/rubyhub/tmp
|
242
|
+
- cc-sum-coverage:
|
243
|
+
input: tmp/codeclimate.*.json
|
244
|
+
parts: 3
|
245
|
+
- cc-upload-coverage
|
246
|
+
|
247
|
+
workflows:
|
248
|
+
version: 2
|
249
|
+
default: &default
|
250
|
+
jobs:
|
251
|
+
- checkout
|
252
|
+
- cc-setup-coverage
|
253
|
+
- ruby-2-5:
|
254
|
+
requires:
|
255
|
+
- checkout
|
256
|
+
- cc-setup-coverage
|
257
|
+
- ruby-2-6:
|
258
|
+
requires:
|
259
|
+
- checkout
|
260
|
+
- cc-setup-coverage
|
261
|
+
- ruby-2-7:
|
262
|
+
requires:
|
263
|
+
- checkout
|
264
|
+
- cc-setup-coverage
|
265
|
+
- ruby-head:
|
266
|
+
requires:
|
267
|
+
- checkout
|
268
|
+
- cc-setup-coverage
|
269
|
+
- cc-upload-coverage:
|
270
|
+
requires:
|
271
|
+
- ruby-2-5
|
272
|
+
- ruby-2-6
|
273
|
+
- ruby-2-7
|
data/.fasterer.yml
CHANGED
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
require:
|
2
2
|
- rubocop-performance
|
3
3
|
- rubocop-rspec
|
4
|
+
- rubocop-md
|
5
|
+
|
6
|
+
Metrics/BlockLength:
|
7
|
+
Exclude:
|
8
|
+
- spec/**/*
|
9
|
+
- rubyhub.gemspec
|
10
|
+
|
11
|
+
Style/HashSyntax:
|
12
|
+
Exclude:
|
13
|
+
- spec/rubyhub/operations/pull_request/create_spec.rb
|
14
|
+
- spec/rubyhub/configuration_spec.rb
|
4
15
|
|
5
16
|
Metrics/LineLength:
|
6
17
|
Max: 120
|
@@ -10,3 +21,15 @@ Style/Documentation:
|
|
10
21
|
|
11
22
|
Style/FrozenStringLiteralComment:
|
12
23
|
Enabled: false
|
24
|
+
|
25
|
+
RSpec/AnyInstance:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
RSpec/MultipleExpectations:
|
29
|
+
Enabled: false
|
30
|
+
|
31
|
+
RSpec/MessageSpies:
|
32
|
+
EnforcedStyle: receive
|
33
|
+
|
34
|
+
RSpec/ExampleLength:
|
35
|
+
Enabled: false
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Changelog
|
2
|
+
|
3
|
+
[0.2.0] - 2020.04.08
|
4
|
+
###Changed
|
5
|
+
|
6
|
+
- Added CircleCI configuration
|
7
|
+
- Fixed gem version number
|
8
|
+
- Added strong dependency for production and development gem dependencies
|
9
|
+
- Added PullRequest creation tests.
|
10
|
+
- Added `RSpec/MessageSpies EnforcedStyle: receive` and `RSpec/MultipleExpectations Enabled: false` to Rubocop config
|
11
|
+
- Added Codeclimate configuration to CI `config.yml`
|
12
|
+
- Added badges and codeclimate indicator
|
13
|
+
- Added ability to load description for PR from a separate file
|
14
|
+
- Added ability to specify description_path to `config.yml`
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rubyhub (0.
|
5
|
-
thor
|
4
|
+
rubyhub (0.2.0)
|
5
|
+
thor (~> 1.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
@@ -11,63 +11,81 @@ GEM
|
|
11
11
|
coderay (1.1.2)
|
12
12
|
colorize (0.8.1)
|
13
13
|
diff-lcs (1.3)
|
14
|
-
|
14
|
+
docile (1.3.2)
|
15
|
+
fasterer (0.8.3)
|
15
16
|
colorize (~> 0.7)
|
16
17
|
ruby_parser (>= 3.14.1)
|
18
|
+
ffaker (2.14.0)
|
17
19
|
jaro_winkler (1.5.4)
|
18
|
-
|
20
|
+
json (2.3.0)
|
21
|
+
method_source (1.0.0)
|
19
22
|
parallel (1.19.1)
|
20
|
-
parser (2.
|
23
|
+
parser (2.7.1.0)
|
21
24
|
ast (~> 2.4.0)
|
22
|
-
pry (0.
|
23
|
-
coderay (~> 1.1
|
24
|
-
method_source (~>
|
25
|
+
pry (0.13.0)
|
26
|
+
coderay (~> 1.1)
|
27
|
+
method_source (~> 1.0)
|
25
28
|
rainbow (3.0.0)
|
26
29
|
rake (13.0.1)
|
30
|
+
rexml (3.2.4)
|
27
31
|
rspec (3.9.0)
|
28
32
|
rspec-core (~> 3.9.0)
|
29
33
|
rspec-expectations (~> 3.9.0)
|
30
34
|
rspec-mocks (~> 3.9.0)
|
31
|
-
rspec-core (3.9.
|
32
|
-
rspec-support (~> 3.9.
|
33
|
-
rspec-expectations (3.9.
|
35
|
+
rspec-core (3.9.1)
|
36
|
+
rspec-support (~> 3.9.1)
|
37
|
+
rspec-expectations (3.9.1)
|
34
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
35
39
|
rspec-support (~> 3.9.0)
|
36
|
-
rspec-mocks (3.9.
|
40
|
+
rspec-mocks (3.9.1)
|
37
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
38
42
|
rspec-support (~> 3.9.0)
|
39
|
-
rspec-support (3.9.
|
40
|
-
|
43
|
+
rspec-support (3.9.2)
|
44
|
+
rspec_junit_formatter (0.4.1)
|
45
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
46
|
+
rubocop (0.81.0)
|
41
47
|
jaro_winkler (~> 1.5.1)
|
42
48
|
parallel (~> 1.10)
|
43
|
-
parser (>= 2.
|
49
|
+
parser (>= 2.7.0.1)
|
44
50
|
rainbow (>= 2.2.2, < 4.0)
|
51
|
+
rexml
|
45
52
|
ruby-progressbar (~> 1.7)
|
46
|
-
unicode-display_width (>= 1.4.0, <
|
47
|
-
rubocop-
|
53
|
+
unicode-display_width (>= 1.4.0, < 2.0)
|
54
|
+
rubocop-md (0.3.2)
|
55
|
+
rubocop (~> 0.60)
|
56
|
+
rubocop-performance (1.5.2)
|
48
57
|
rubocop (>= 0.71.0)
|
49
|
-
rubocop-rspec (1.
|
58
|
+
rubocop-rspec (1.38.1)
|
50
59
|
rubocop (>= 0.68.1)
|
51
60
|
ruby-progressbar (1.10.1)
|
52
|
-
ruby_parser (3.14.
|
61
|
+
ruby_parser (3.14.2)
|
53
62
|
sexp_processor (~> 4.9)
|
54
|
-
sexp_processor (4.
|
55
|
-
|
56
|
-
|
63
|
+
sexp_processor (4.14.1)
|
64
|
+
simplecov (0.17.1)
|
65
|
+
docile (~> 1.1)
|
66
|
+
json (>= 1.8, < 3)
|
67
|
+
simplecov-html (~> 0.10.0)
|
68
|
+
simplecov-html (0.10.2)
|
69
|
+
thor (1.0.1)
|
70
|
+
unicode-display_width (1.7.0)
|
57
71
|
|
58
72
|
PLATFORMS
|
59
73
|
ruby
|
60
74
|
|
61
75
|
DEPENDENCIES
|
62
|
-
bundler
|
63
|
-
fasterer
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
rubocop
|
76
|
+
bundler (~> 2.1)
|
77
|
+
fasterer (~> 0.8)
|
78
|
+
ffaker (~> 2.14)
|
79
|
+
pry (~> 0.13)
|
80
|
+
rake (~> 13.0)
|
81
|
+
rspec (~> 3.9)
|
82
|
+
rspec_junit_formatter (~> 0.4)
|
83
|
+
rubocop (~> 0.81)
|
84
|
+
rubocop-md (~> 0.3)
|
85
|
+
rubocop-performance (~> 1.5)
|
86
|
+
rubocop-rspec (~> 1.38)
|
70
87
|
rubyhub!
|
88
|
+
simplecov (~> 0.15, < 0.18)
|
71
89
|
|
72
90
|
BUNDLED WITH
|
73
|
-
2.
|
91
|
+
2.1.2
|
data/README.md
CHANGED
@@ -1,7 +1,12 @@
|
|
1
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/c62b766b3425f4176152/maintainability)](https://codeclimate.com/github/rubygarage/rubyhub/maintainability)
|
2
|
+
[![Test Coverage](https://api.codeclimate.com/v1/badges/c62b766b3425f4176152/test_coverage)](https://codeclimate.com/github/rubygarage/rubyhub/test_coverage)
|
3
|
+
[![CircleCI](https://circleci.com/gh/circleci/circleci-docs.svg?style=svg)](https://circleci.com/gh/rubygarage/rubyhub)
|
1
4
|
# Rubyhub
|
2
5
|
|
3
6
|
Rubyhub allows you to create pull requests faster with all сomponents - labels, assignees, reviewers and other stuff you had to put manually each time.
|
4
7
|
|
8
|
+
At this very moment Rubyhub supports operations only with `Github`.
|
9
|
+
|
5
10
|
## Installation
|
6
11
|
|
7
12
|
Install [Github's Hub](https://github.com/github/hub)
|
@@ -24,7 +29,7 @@ Or install it yourself as:
|
|
24
29
|
|
25
30
|
1. Generate config file
|
26
31
|
|
27
|
-
`$ rubyhub
|
32
|
+
`$ rubyhub init`
|
28
33
|
|
29
34
|
2. Create the templates for all subteams/needs in your repository and configure each template with provided options
|
30
35
|
|
@@ -32,6 +37,8 @@ Or install it yourself as:
|
|
32
37
|
|
33
38
|
`$ rubyhub create -t your_template_name`
|
34
39
|
|
40
|
+
See [usage examples](https://github.com/rubygarage/rubyhub/wiki/Usage) or the full [reference documentation](https://github.com/rubygarage/rubyhub/wiki) to see all available commands and flags.
|
41
|
+
|
35
42
|
## Configuration options
|
36
43
|
| Config | Description | Example |
|
37
44
|
|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------|
|
@@ -41,6 +48,7 @@ Or install it yourself as:
|
|
41
48
|
| labels | Array. List of labels | - needs_review<br>- some_another_label |
|
42
49
|
| jira_base_url | String. The first line of your Pull Request description could be JIRA link to your task<br>Put here the constant part of your URL.<br>Task name would be taken from your branch name.<br><br>feature/MyTask-1399 -> https://sample.atlassian.net/browse/MyTask-1399 | https://sample.atlassian.net/browse/ |
|
43
50
|
| description_main_body | String. Put the description template here. We recommended to use Markdown.<br><br>Note: The first line of your body - would be a title of your pull-request | Feature / RGWEB<br><br>Great moments! |
|
51
|
+
| description_path | String. Put the path to your PR's description file. | .github/description.txt
|
44
52
|
| push | Boolean. These options allows to push the code to Github before creating the pull-request | true |
|
45
53
|
| open | Boolean. Open the pull-request after creating | true |
|
46
54
|
|
data/lib/rubyhub.rb
CHANGED
data/lib/rubyhub/cli.rb
CHANGED
@@ -7,7 +7,7 @@ module Rubyhub
|
|
7
7
|
Operations::Configuration::Setup.call
|
8
8
|
end
|
9
9
|
|
10
|
-
desc '
|
10
|
+
desc 'create', 'Create Pull Request'
|
11
11
|
method_option :template, aliases: '-t', type: :string
|
12
12
|
def create(*_args)
|
13
13
|
Operations::PullRequest::Create.call(options)
|
@@ -7,7 +7,7 @@
|
|
7
7
|
# assignees:
|
8
8
|
# - any
|
9
9
|
# - github
|
10
|
-
# -
|
10
|
+
# - assignees
|
11
11
|
# - you
|
12
12
|
# - want
|
13
13
|
# reviewers:
|
@@ -17,6 +17,7 @@
|
|
17
17
|
# - you
|
18
18
|
# - want
|
19
19
|
# description_main_body: describe your changes here
|
20
|
+
# description_path: .github/description.txt
|
20
21
|
# jira_base_url: https://sample.atlassian.net/browse/
|
21
22
|
# push: false
|
22
23
|
# open: true
|
@@ -6,6 +6,7 @@ require 'pry'
|
|
6
6
|
module Rubyhub
|
7
7
|
class Configuration
|
8
8
|
include Singleton
|
9
|
+
attr_reader :options
|
9
10
|
|
10
11
|
CONFIG_PATH = '.rubyhub.yml'.freeze
|
11
12
|
|
@@ -13,10 +14,6 @@ module Rubyhub
|
|
13
14
|
@options = self.class.exists? ? load_from_file : {}
|
14
15
|
end
|
15
16
|
|
16
|
-
def to_h
|
17
|
-
@options.to_h
|
18
|
-
end
|
19
|
-
|
20
17
|
class << self
|
21
18
|
def exists?
|
22
19
|
File.exist?(CONFIG_PATH)
|
@@ -5,15 +5,15 @@ module Rubyhub
|
|
5
5
|
module Configuration
|
6
6
|
class Setup
|
7
7
|
TEMPLATE_PATH = 'lib/rubyhub/config/templates/.rubyhub.yml'.freeze
|
8
|
+
CONFIG_EXISTS_MESSAGE = 'Config already exists!'.freeze
|
9
|
+
CONFIG_INSTALLED_MESSAGE = 'Config successfully installed!'.freeze
|
8
10
|
|
9
11
|
class << self
|
10
12
|
def call
|
11
|
-
if Rubyhub::Configuration.exists?
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
puts 'Config successfully installed!'
|
16
|
-
end
|
13
|
+
return puts CONFIG_EXISTS_MESSAGE if Rubyhub::Configuration.exists?
|
14
|
+
|
15
|
+
initialize_config
|
16
|
+
puts CONFIG_INSTALLED_MESSAGE
|
17
17
|
end
|
18
18
|
|
19
19
|
private
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'pry'
|
2
1
|
module Rubyhub
|
3
2
|
module Operations
|
4
3
|
module PullRequest
|
@@ -6,8 +5,9 @@ module Rubyhub
|
|
6
5
|
class << self
|
7
6
|
def call(options)
|
8
7
|
@template = options[:template]
|
8
|
+
|
9
9
|
raise ConfigFileDoesNotExistError unless Rubyhub::Configuration.exists?
|
10
|
-
raise IncorrectTemplateError if
|
10
|
+
raise IncorrectTemplateError if !template || !data || data.empty?
|
11
11
|
|
12
12
|
Rubyhub::PullRequest.new(data).create!
|
13
13
|
end
|
@@ -17,7 +17,7 @@ module Rubyhub
|
|
17
17
|
attr_reader :template
|
18
18
|
|
19
19
|
def data
|
20
|
-
@data ||= Rubyhub::Configuration.instance.
|
20
|
+
@data ||= Rubyhub::Configuration.instance.options.dig(:template, template.to_sym)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/rubyhub/pull_request.rb
CHANGED
@@ -8,12 +8,13 @@ module Rubyhub
|
|
8
8
|
|
9
9
|
def to_command
|
10
10
|
build_base_query
|
11
|
-
add_branch
|
12
|
-
add_labels
|
13
|
-
add_assignees
|
14
|
-
add_reviewers
|
15
|
-
|
16
|
-
|
11
|
+
add_branch
|
12
|
+
add_labels
|
13
|
+
add_assignees
|
14
|
+
add_reviewers
|
15
|
+
add_message
|
16
|
+
add_push_settings
|
17
|
+
add_open_settings
|
17
18
|
|
18
19
|
@query
|
19
20
|
end
|
@@ -33,27 +34,27 @@ module Rubyhub
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def add_branch
|
36
|
-
@query << " -b '#{@base_branch}'"
|
37
|
+
@query << " -b '#{@base_branch}'" if @base_branch
|
37
38
|
end
|
38
39
|
|
39
40
|
def add_labels
|
40
|
-
@query << " -l '#{@labels.join(',')}'"
|
41
|
+
@query << " -l '#{@labels.to_a.join(',')}'" if @labels.to_a.any?
|
41
42
|
end
|
42
43
|
|
43
44
|
def add_assignees
|
44
|
-
@query << " -a '#{@assignees.join(',')}'"
|
45
|
+
@query << " -a '#{@assignees.to_a.join(',')}'" if @assignees.to_a.any?
|
45
46
|
end
|
46
47
|
|
47
48
|
def add_reviewers
|
48
|
-
@query << " -r '#{@reviewers.join(',')}'"
|
49
|
+
@query << " -r '#{@reviewers.to_a.join(',')}'" if @reviewers.to_a.any?
|
49
50
|
end
|
50
51
|
|
51
52
|
def add_push_settings
|
52
|
-
@query << ' --push -f'
|
53
|
+
@query << ' --push -f' if @push
|
53
54
|
end
|
54
55
|
|
55
56
|
def add_open_settings
|
56
|
-
@query << ' --browse'
|
57
|
+
@query << ' --browse' if @open
|
57
58
|
end
|
58
59
|
|
59
60
|
def add_message
|
@@ -77,12 +78,12 @@ module Rubyhub
|
|
77
78
|
end
|
78
79
|
|
79
80
|
def jira_ticket
|
80
|
-
[
|
81
|
+
[@jira_base_url, branch_name].join
|
81
82
|
end
|
82
83
|
|
83
84
|
def message
|
84
85
|
description = "#{branch_type} | #{branch_name.strip}\n\n"
|
85
|
-
description << "JIRA ticket - #{jira_ticket}" if
|
86
|
+
description << "JIRA ticket - #{jira_ticket}\n\n" if @jira_base_url
|
86
87
|
description << @description_main_body if @description_main_body
|
87
88
|
description
|
88
89
|
end
|
@@ -11,8 +11,8 @@ module DeepSymbolizeKeysHelper
|
|
11
11
|
|
12
12
|
def transform(thing)
|
13
13
|
case thing
|
14
|
-
when Hash
|
15
|
-
when Array
|
14
|
+
when Hash then symbolize_recursive(thing)
|
15
|
+
when Array then thing.map { |v| transform(v) }
|
16
16
|
else; thing
|
17
17
|
end
|
18
18
|
end
|
data/lib/rubyhub/version.rb
CHANGED
data/rubyhub.gemspec
CHANGED
@@ -19,20 +19,24 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.bindir = 'exe'
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
|
-
spec.post_install_message =
|
22
|
+
spec.post_install_message = '
|
23
23
|
Note that Rubyhub requires additional dependencies!
|
24
24
|
|
25
25
|
Please install https://github.com/github/hub
|
26
|
-
|
26
|
+
'
|
27
27
|
|
28
|
-
spec.add_dependency 'thor'
|
28
|
+
spec.add_dependency 'thor', '~> 1.0'
|
29
29
|
|
30
|
-
spec.add_development_dependency 'bundler'
|
31
|
-
spec.add_development_dependency 'fasterer'
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency '
|
34
|
-
spec.add_development_dependency '
|
35
|
-
spec.add_development_dependency '
|
36
|
-
spec.add_development_dependency '
|
37
|
-
spec.add_development_dependency 'rubocop
|
30
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
31
|
+
spec.add_development_dependency 'fasterer', '~> 0.8'
|
32
|
+
spec.add_development_dependency 'ffaker', '~> 2.14'
|
33
|
+
spec.add_development_dependency 'pry', '~> 0.13'
|
34
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 3.9'
|
36
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
|
37
|
+
spec.add_development_dependency 'rubocop', '~> 0.81'
|
38
|
+
spec.add_development_dependency 'rubocop-md', '~> 0.3'
|
39
|
+
spec.add_development_dependency 'rubocop-performance', '~> 1.5'
|
40
|
+
spec.add_development_dependency 'rubocop-rspec', '~> 1.38'
|
41
|
+
spec.add_development_dependency 'simplecov', '~> 0.15', '< 0.18'
|
38
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyhub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Denis Zemlianoy
|
@@ -9,134 +9,196 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2020-04-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
20
|
+
version: '1.0'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
27
|
+
version: '1.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '2.1'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '2.1'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: fasterer
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
48
|
+
version: '0.8'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
55
|
+
version: '0.8'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: ffaker
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '2.14'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '2.14'
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: pry
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
59
73
|
requirements:
|
60
|
-
- - "
|
74
|
+
- - "~>"
|
61
75
|
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
76
|
+
version: '0.13'
|
63
77
|
type: :development
|
64
78
|
prerelease: false
|
65
79
|
version_requirements: !ruby/object:Gem::Requirement
|
66
80
|
requirements:
|
67
|
-
- - "
|
81
|
+
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
83
|
+
version: '0.13'
|
70
84
|
- !ruby/object:Gem::Dependency
|
71
85
|
name: rake
|
72
86
|
requirement: !ruby/object:Gem::Requirement
|
73
87
|
requirements:
|
74
|
-
- - "
|
88
|
+
- - "~>"
|
75
89
|
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
90
|
+
version: '13.0'
|
77
91
|
type: :development
|
78
92
|
prerelease: false
|
79
93
|
version_requirements: !ruby/object:Gem::Requirement
|
80
94
|
requirements:
|
81
|
-
- - "
|
95
|
+
- - "~>"
|
82
96
|
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
97
|
+
version: '13.0'
|
84
98
|
- !ruby/object:Gem::Dependency
|
85
99
|
name: rspec
|
86
100
|
requirement: !ruby/object:Gem::Requirement
|
87
101
|
requirements:
|
88
|
-
- - "
|
102
|
+
- - "~>"
|
89
103
|
- !ruby/object:Gem::Version
|
90
|
-
version: '
|
104
|
+
version: '3.9'
|
91
105
|
type: :development
|
92
106
|
prerelease: false
|
93
107
|
version_requirements: !ruby/object:Gem::Requirement
|
94
108
|
requirements:
|
95
|
-
- - "
|
109
|
+
- - "~>"
|
96
110
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
111
|
+
version: '3.9'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: rspec_junit_formatter
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - "~>"
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0.4'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0.4'
|
98
126
|
- !ruby/object:Gem::Dependency
|
99
127
|
name: rubocop
|
100
128
|
requirement: !ruby/object:Gem::Requirement
|
101
129
|
requirements:
|
102
|
-
- - "
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0.81'
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0.81'
|
140
|
+
- !ruby/object:Gem::Dependency
|
141
|
+
name: rubocop-md
|
142
|
+
requirement: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - "~>"
|
103
145
|
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
146
|
+
version: '0.3'
|
105
147
|
type: :development
|
106
148
|
prerelease: false
|
107
149
|
version_requirements: !ruby/object:Gem::Requirement
|
108
150
|
requirements:
|
109
|
-
- - "
|
151
|
+
- - "~>"
|
110
152
|
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
153
|
+
version: '0.3'
|
112
154
|
- !ruby/object:Gem::Dependency
|
113
155
|
name: rubocop-performance
|
114
156
|
requirement: !ruby/object:Gem::Requirement
|
115
157
|
requirements:
|
116
|
-
- - "
|
158
|
+
- - "~>"
|
117
159
|
- !ruby/object:Gem::Version
|
118
|
-
version: '
|
160
|
+
version: '1.5'
|
119
161
|
type: :development
|
120
162
|
prerelease: false
|
121
163
|
version_requirements: !ruby/object:Gem::Requirement
|
122
164
|
requirements:
|
123
|
-
- - "
|
165
|
+
- - "~>"
|
124
166
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
167
|
+
version: '1.5'
|
126
168
|
- !ruby/object:Gem::Dependency
|
127
169
|
name: rubocop-rspec
|
128
170
|
requirement: !ruby/object:Gem::Requirement
|
129
171
|
requirements:
|
130
|
-
- - "
|
172
|
+
- - "~>"
|
131
173
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
174
|
+
version: '1.38'
|
133
175
|
type: :development
|
134
176
|
prerelease: false
|
135
177
|
version_requirements: !ruby/object:Gem::Requirement
|
136
178
|
requirements:
|
137
|
-
- - "
|
179
|
+
- - "~>"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '1.38'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: simplecov
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "~>"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0.15'
|
189
|
+
- - "<"
|
190
|
+
- !ruby/object:Gem::Version
|
191
|
+
version: '0.18'
|
192
|
+
type: :development
|
193
|
+
prerelease: false
|
194
|
+
version_requirements: !ruby/object:Gem::Requirement
|
195
|
+
requirements:
|
196
|
+
- - "~>"
|
197
|
+
- !ruby/object:Gem::Version
|
198
|
+
version: '0.15'
|
199
|
+
- - "<"
|
138
200
|
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
201
|
+
version: '0.18'
|
140
202
|
description: Tool for faster creation of GitHub's Pull Requests
|
141
203
|
email:
|
142
204
|
- ''
|
@@ -145,10 +207,13 @@ executables:
|
|
145
207
|
extensions: []
|
146
208
|
extra_rdoc_files: []
|
147
209
|
files:
|
210
|
+
- ".circleci/config.yml"
|
211
|
+
- ".dependabot/config.yml"
|
148
212
|
- ".fasterer.yml"
|
149
213
|
- ".gitignore"
|
150
214
|
- ".rspec"
|
151
215
|
- ".rubocop.yml"
|
216
|
+
- CHANGELOG.md
|
152
217
|
- Gemfile
|
153
218
|
- Gemfile.lock
|
154
219
|
- README.md
|
@@ -165,6 +230,8 @@ files:
|
|
165
230
|
- lib/rubyhub/operations/pull_request/create.rb
|
166
231
|
- lib/rubyhub/pull_request.rb
|
167
232
|
- lib/rubyhub/utils/deep_symbolize_keys_helper.rb
|
233
|
+
- lib/rubyhub/utils/hash.rb
|
234
|
+
- lib/rubyhub/utils/string.rb
|
168
235
|
- lib/rubyhub/version.rb
|
169
236
|
- rubyhub.gemspec
|
170
237
|
homepage: https://github.com
|
@@ -187,8 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
254
|
- !ruby/object:Gem::Version
|
188
255
|
version: '0'
|
189
256
|
requirements: []
|
190
|
-
|
191
|
-
rubygems_version: 2.7.8
|
257
|
+
rubygems_version: 3.0.6
|
192
258
|
signing_key:
|
193
259
|
specification_version: 4
|
194
260
|
summary: Tool for faster creation of GitHub's Pull Requests
|