abak-flow 0.1.6 → 0.2.1
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.
- data/Gemfile +2 -1
- data/VERSION +1 -1
- data/abak-flow.gemspec +1 -0
- data/lib/abak-flow.rb +2 -0
- data/lib/abak-flow/request.rb +103 -17
- data/lib/abak-flow/version.rb +2 -2
- metadata +17 -6
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1
|
1
|
+
0.2.1
|
data/abak-flow.gemspec
CHANGED
data/lib/abak-flow.rb
CHANGED
data/lib/abak-flow/request.rb
CHANGED
@@ -16,6 +16,8 @@ module Abak::Flow
|
|
16
16
|
c.option '--base STRING', String, 'Имя ветки, в которую нужно принять изменения'
|
17
17
|
|
18
18
|
c.action do |args, options|
|
19
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
20
|
+
|
19
21
|
request_rules = {:feature => :develop, :hotfix => :master}
|
20
22
|
jira_browse_url = 'http://jira.dev.apress.ru/browse/'
|
21
23
|
|
@@ -26,32 +28,52 @@ module Abak::Flow
|
|
26
28
|
title = args.first.to_s.strip
|
27
29
|
title = task if task =~ /^\w+\-\d{1,}$/ && title.empty?
|
28
30
|
|
31
|
+
api_user = Hub::Commands.send(:git_reader).read_config('abak.apiuser')
|
32
|
+
api_token = Hub::Commands.send(:git_reader).read_config('abak.apitoken')
|
33
|
+
api_client = Octokit::Client.new(:login => api_user, :oauth_token => api_token)
|
34
|
+
|
29
35
|
# Проверим, что мы не в мастере или девелопе
|
30
36
|
if [:master, :develop].include? current_branch.to_sym
|
31
|
-
say 'Нельзя делать pull request из меток master или develop'
|
37
|
+
say color('Нельзя делать pull request из меток master или develop', :error).to_s
|
32
38
|
exit
|
33
39
|
end
|
34
40
|
|
35
41
|
# Проверим, что у нас настроен origin
|
36
42
|
if repository.remote_by_name('origin').nil?
|
37
|
-
say 'Необходимо настроить репозиторий origin (форк) для текущего пользователя'
|
38
|
-
say '=> git remote add origin https://Developer@github.com/abak-press/sample.git'
|
43
|
+
say color('Необходимо настроить репозиторий origin (форк) для текущего пользователя', :error).to_s
|
44
|
+
say color('=> git remote add origin https://Developer@github.com/abak-press/sample.git', :info).to_s
|
39
45
|
exit
|
40
46
|
end
|
41
47
|
|
42
48
|
# Проверим, что у нас настроен upstream
|
43
49
|
if repository.remote_by_name('upstream').nil?
|
44
|
-
say 'Необходимо настроить репозиторий upstream (главный) для текущего пользователя'
|
45
|
-
say '=> git remote add upstream https://Developer@github.com/abak-press/sample.git'
|
50
|
+
say color('Необходимо настроить репозиторий upstream (главный) для текущего пользователя', :error).to_s
|
51
|
+
say color('=> git remote add upstream https://Developer@github.com/abak-press/sample.git', :info).to_s
|
46
52
|
exit
|
47
53
|
end
|
48
54
|
|
49
55
|
if title.empty?
|
50
|
-
say 'Пожалуйста, укажите что-нибудь для заголовка pull request, например номер вашей задачи вот так:'
|
51
|
-
say '=> git request publish "PC-001"'
|
56
|
+
say color('Пожалуйста, укажите что-нибудь для заголовка pull request, например номер вашей задачи вот так:', :error).to_s
|
57
|
+
say color('=> git request publish "PC-001"', :info).to_s
|
58
|
+
exit
|
59
|
+
end
|
60
|
+
|
61
|
+
# Проверим, что у нас указан апи юзер
|
62
|
+
if api_user.empty?
|
63
|
+
say color('Необходимо указать своего пользователя API github', :error).to_s
|
64
|
+
say color('=> https://github.com/Strech/abak-flow/blob/master/README.md', :info).to_s
|
52
65
|
exit
|
53
66
|
end
|
54
67
|
|
68
|
+
# Проверим, что у нас указан токен
|
69
|
+
if api_token.empty?
|
70
|
+
say color('Необходимо указать токен своего пользователя API github', :error).to_s
|
71
|
+
say color('=> https://github.com/Strech/abak-flow/blob/master/README.md', :info).to_s
|
72
|
+
exit
|
73
|
+
end
|
74
|
+
|
75
|
+
upstream_project = repository.remote_by_name('upstream').project
|
76
|
+
|
55
77
|
# Расставим ветки согласно правилам
|
56
78
|
head = "#{repository.repo_owner}:#{current_branch}"
|
57
79
|
base = "#{repository.remote_by_name('upstream').project.owner}:#{request_rules.fetch(remote_branch.to_sym, '')}"
|
@@ -60,16 +82,17 @@ module Abak::Flow
|
|
60
82
|
base = options.base unless options.base.nil?
|
61
83
|
|
62
84
|
# Запушим текущую ветку на origin
|
63
|
-
#
|
85
|
+
# TODO Может быть лучше достать дерективу конфига origin?
|
64
86
|
say "=> Обновляю ветку #{current_branch} на origin"
|
65
87
|
Hub::Runner.execute('push', 'origin', current_branch)
|
66
88
|
|
67
89
|
# Запостим pull request на upstream
|
68
|
-
|
69
|
-
|
90
|
+
body = jira_browse_url + task if task =~ /^\w+\-\d{1,}$/
|
91
|
+
body ||= 'Я забыл какая это задача :('
|
70
92
|
|
71
93
|
say '=> Делаю pull request на upstream'
|
72
|
-
|
94
|
+
result = api_client.create_pull_request("#{upstream_project.owner}/#{upstream_project.name}", base, head, title, body)
|
95
|
+
say result._links.self.href
|
73
96
|
end
|
74
97
|
end
|
75
98
|
|
@@ -80,13 +103,15 @@ module Abak::Flow
|
|
80
103
|
c.option '--branch STRING', String, 'Имя ветки, которую нужно обновить'
|
81
104
|
|
82
105
|
c.action do |args, options|
|
106
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
107
|
+
|
83
108
|
repository = Hub::Commands.send :local_repo
|
84
109
|
current_branch = repository.current_branch.short_name
|
85
110
|
|
86
111
|
# Проверим, что у нас настроен origin
|
87
112
|
if repository.remote_by_name('origin').nil?
|
88
|
-
say 'Необходимо настроить репозиторий origin (форк) для текущего пользователя'
|
89
|
-
say '=> git remote add origin https://Developer@github.com/abak-press/sample.git'
|
113
|
+
say color('Необходимо настроить репозиторий origin (форк) для текущего пользователя', :error).to_s
|
114
|
+
say color('=> git remote add origin https://Developer@github.com/abak-press/sample.git', :info).to_s
|
90
115
|
exit
|
91
116
|
end
|
92
117
|
|
@@ -102,10 +127,12 @@ module Abak::Flow
|
|
102
127
|
c.description = 'Создать ветку для выполнения задачи. Лучше всего, если название задачи, будет ее номером из jira'
|
103
128
|
|
104
129
|
c.action do |args, options|
|
130
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
131
|
+
|
105
132
|
task = args.shift.to_s
|
106
133
|
|
107
134
|
if task.empty?
|
108
|
-
say 'Необходимо указать имя задачи, а лучше всего ее номер из jira'
|
135
|
+
say color('Необходимо указать имя задачи, а лучше всего ее номер из jira', :error).to_s
|
109
136
|
exit
|
110
137
|
end
|
111
138
|
|
@@ -122,10 +149,12 @@ module Abak::Flow
|
|
122
149
|
c.description = 'Создать ветку для выполнения bugfix задачи. Лучше всего, если название задачи, будет ее номером из jira'
|
123
150
|
|
124
151
|
c.action do |args, options|
|
152
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
153
|
+
|
125
154
|
task = args.shift.to_s
|
126
155
|
|
127
156
|
if task.empty?
|
128
|
-
say 'Необходимо указать имя задачи, а лучше всего ее номер из jira'
|
157
|
+
say color('Необходимо указать имя задачи, а лучше всего ее номер из jira', :error).to_s
|
129
158
|
exit
|
130
159
|
end
|
131
160
|
|
@@ -147,6 +176,8 @@ module Abak::Flow
|
|
147
176
|
c.option '--origin', 'Удаляет ветку в удаленном репозитории (origin)'
|
148
177
|
|
149
178
|
c.action do |args, options|
|
179
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
180
|
+
|
150
181
|
repository = Hub::Commands.send :local_repo
|
151
182
|
current_branch = repository.current_branch.short_name
|
152
183
|
branch = options.branch || current_branch
|
@@ -157,7 +188,7 @@ module Abak::Flow
|
|
157
188
|
end
|
158
189
|
|
159
190
|
if [:master, :develop].include? branch.to_sym
|
160
|
-
say 'Извините, но нельзя удалить ветку develop или master'
|
191
|
+
say color('Извините, но нельзя удалить ветку develop или master', :error).to_s
|
161
192
|
exit
|
162
193
|
end
|
163
194
|
|
@@ -175,10 +206,65 @@ module Abak::Flow
|
|
175
206
|
if [:all, :local].include? type
|
176
207
|
remote_branch, task = current_branch.split('/').push(nil).map(&:to_s)
|
177
208
|
|
178
|
-
say "=>
|
209
|
+
say "=> Удаляю локальную ветку #{branch}"
|
179
210
|
Hub::Runner.execute('checkout', 'develop')
|
180
211
|
Hub::Runner.execute('branch', '-D', branch)
|
181
212
|
end
|
182
213
|
end
|
183
214
|
end
|
215
|
+
|
216
|
+
# TODO Отрефакторить эту какашку
|
217
|
+
command :readycheck do |c|
|
218
|
+
c.syntax = 'git request readycheck'
|
219
|
+
c.description = 'Проверить все ли настроено для работы с github и удаленным (origin) репозиторием'
|
220
|
+
|
221
|
+
c.action do |args, options|
|
222
|
+
HighLine.color_scheme = HighLine::SampleColorScheme.new
|
223
|
+
repository = Hub::Commands.send :local_repo
|
224
|
+
current_branch = repository.current_branch.short_name
|
225
|
+
|
226
|
+
api_user = Hub::Commands.send(:git_reader).read_config('abak.apiuser').to_s
|
227
|
+
api_token = Hub::Commands.send(:git_reader).read_config('abak.apitoken').to_s
|
228
|
+
|
229
|
+
errors = []
|
230
|
+
|
231
|
+
# Проверим, что у нас настроен origin
|
232
|
+
if repository.remote_by_name('origin').nil?
|
233
|
+
errors << [
|
234
|
+
'Необходимо настроить репозиторий origin (форк) для текущего пользователя',
|
235
|
+
'=> git remote add origin https://Developer@github.com/abak-press/sample.git'
|
236
|
+
]
|
237
|
+
end
|
238
|
+
|
239
|
+
# Проверим, что у нас настроен upstream
|
240
|
+
if repository.remote_by_name('upstream').nil?
|
241
|
+
errors << [
|
242
|
+
'Необходимо настроить репозиторий upstream (главный) для текущего пользователя',
|
243
|
+
'=> git remote add upstream https://Developer@github.com/abak-press/sample.git'
|
244
|
+
]
|
245
|
+
end
|
246
|
+
|
247
|
+
# Проверим, что у нас указан апи юзер
|
248
|
+
if api_user.empty?
|
249
|
+
errors << [
|
250
|
+
'Необходимо указать своего пользователя API github',
|
251
|
+
'=> https://github.com/Strech/abak-flow/blob/master/README.md'
|
252
|
+
]
|
253
|
+
end
|
254
|
+
|
255
|
+
# Проверим, что у нас указан токен
|
256
|
+
if api_token.empty?
|
257
|
+
errors << [
|
258
|
+
'Необходимо указать токен своего пользователя API github',
|
259
|
+
'=> https://github.com/Strech/abak-flow/blob/master/README.md'
|
260
|
+
]
|
261
|
+
end
|
262
|
+
|
263
|
+
errors.each do |error|
|
264
|
+
say "#{color(error.first, :error)}\n#{color(error.last, :info)}"
|
265
|
+
end
|
266
|
+
|
267
|
+
say color('Хм ... кажется у вас все готово к работе', :debug).to_s if errors.count.zero?
|
268
|
+
end
|
269
|
+
end
|
184
270
|
end
|
data/lib/abak-flow/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abak-flow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-05-01 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: hub
|
16
|
-
requirement: &
|
16
|
+
requirement: &70263614207020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70263614207020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: commander
|
27
|
-
requirement: &
|
27
|
+
requirement: &70263614206600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,18 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70263614206600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: octokit
|
38
|
+
requirement: &70263614206180 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70263614206180
|
36
47
|
description: Простой набор правил и комманд, заточеных для работы в git-flow с использование
|
37
48
|
в качестве удаленного репозитория github
|
38
49
|
email:
|