gitsflow 0.4.4 → 0.6.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: 1a896fc7052e8ace506cdf627ac7a363f66a9068f402d21807e7e313434c938d
4
- data.tar.gz: b0772c6a843648bed8cb146d6ce2b8b8aee7ea75e4de3f4dd289801733447f2e
3
+ metadata.gz: 04c67c4563202b190f6486858af820186e7c9e2eb1806d75f1be5c59f2223467
4
+ data.tar.gz: 853643113dc3d9d09a78958b1e1dd2488251fe16ab0dd50519de6ed2bd2223d0
5
5
  SHA512:
6
- metadata.gz: fe964902e7c689caed7e96733df753a8b686bc003e7320f3712bd07b148b221016e91a240ce8aa80bec0cc7ba5dc64cb2ce459c07c7ed2217fe5ab1be4340693
7
- data.tar.gz: 99d2cb65cc0b32e3f890df51283dd4776e9dd51dbf04bb00b222dbcbb4b4c5a2657e13ed42cb0c3101c125c95db3b06a634db0bae6dac67b18e6af6286097169
6
+ metadata.gz: '008803af2e130b03178420aea6d3155fc24b3a1945d2214a6f4c52ba0f0560c9569f41e07b77fbbd800352787573cfde8b54ea79bfeafc6cbd75e7014942c118'
7
+ data.tar.gz: ee3294c8a10de03e446816178f6b9c75eb44a7e4e9cc63a30e313259508a1b4aff295651d1e98da5f057e39280d7d4e81f7252c8a8a0ecb0d0bd05bd8a455af3
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gitsflow (0.4.3)
4
+ gitsflow (0.6.2)
5
5
  dotenv (~> 2.7.5)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -9,14 +9,6 @@ GitSFlow is a tool that integrate Git custom commands with GitLab and it's inspi
9
9
  gem 'gitsflow', group: :development
10
10
  ```
11
11
 
12
- 1 - Add this line to your application's Gemfile:
13
-
14
- $ bundle install
15
- $ sflow install
16
- -> It will install the git alias
17
-
18
- 2 - install it yourself as:
19
-
20
12
  $ gem install gitsflow
21
13
 
22
14
  And in your application's:
@@ -46,6 +38,9 @@ GITLAB_NEXT_RELEASE_LIST=Next Release
46
38
  GIT_BRANCH_MASTER=master
47
39
  GIT_BRANCH_DEVELOP=develop
48
40
  GIT_BRANCHES_STAGING=staging_1,staging_2
41
+ SFLOW_TEMPLATE_RELEASE=Version {version} - {date}
42
+ SFLOW_TEMPLATE_RELEASE_DATE_FORMAT=Y/m/d
43
+
49
44
  ```
50
45
 
51
46
  ## Usage
@@ -67,9 +62,10 @@ List of commands:
67
62
  8. git sflow bugfix staging BUGFIX_BRANCH
68
63
  9. git sflow hotfix start HOTFIX DESCRIPTION
69
64
  10. git sflow hotfix [reintegration|finish] HOTFIX_BRANCH
70
- 11. git sflow release start RELEASE
71
- 12. git sflow release finish RELEASE
72
- 13. git sflow push origin BRANCH
65
+ 11. git sflow hotfix staging HOTFIX_BRANCH
66
+ 12. git sflow release start RELEASE
67
+ 13. git sflow release finish RELEASE
68
+ 14. git sflow push origin BRANCH or git sflow push
73
69
 
74
70
 
75
71
 
@@ -78,8 +74,6 @@ List of commands:
78
74
  or
79
75
  $ sflow uninstall
80
76
 
81
- TODO: Write usage instructions here
82
-
83
77
 
84
78
  ## Get a GitLab Token
85
79
 
data/lib/Git/git.rb CHANGED
@@ -1,20 +1,44 @@
1
1
  module Git
2
- def self.checkout branch
3
- self.fetch branch
2
+ def self.checkout(branch, options = :with_fetch)
3
+ fetch(branch) if options == :with_fetch
4
4
  print "checkout: ".yellow
5
5
  print "#{branch}\n\n".green
6
- system "git checkout #{branch}"
6
+ execute {"git checkout #{branch}"}
7
7
  self.pull branch
8
8
  end
9
9
 
10
10
  def self.merge from, to
11
11
  # self.checkout(from)
12
- self.checkout(to)
12
+ checkout(to, :local)
13
13
  print "Merge ".yellow
14
14
  print "#{from} ".green
15
15
  print "into ".yellow
16
16
  print "#{to} \n\n".green
17
- execute {"git pull origin #{from}"}
17
+ processs, stderr , stdout= Open3.popen3("git pull origin #{from}") do |i, o, stderr, wait_thr|
18
+ [wait_thr.value, stderr.read, o.read]
19
+ end
20
+ if processs.success?
21
+ return stdout
22
+ else
23
+ print "Conflicts on merge!".yellow.bg_red
24
+ print "\n\nResolve conflicts and commit. \n"
25
+ print "After type '1' for to continue or '0' for abort\n".yellow
26
+ choice = STDIN.gets.chomp
27
+ print "\n#{choice}, "
28
+ print "ok!\n".green
29
+
30
+ case choice
31
+ when '1'
32
+ print "Continuing...\n\n"
33
+ else
34
+ print "Aborting merge...\n\n"
35
+ system ('git merge --abort')
36
+ raise 'Aborting...'
37
+ end
38
+
39
+ end
40
+
41
+ # execute {"git pull origin #{from}"}
18
42
  end
19
43
 
20
44
  def self.delete_branch branch
@@ -25,10 +49,9 @@ module Git
25
49
 
26
50
  def self.reset_hard from, to
27
51
  self.fetch from
28
- self.fetch to
29
52
  self.checkout(to)
30
53
  print "Reset --hard: #{to} is equal: ".yellow
31
- print "#{from}\n".green
54
+ print "origin/#{from}\n".green
32
55
  system "git reset --hard origin/#{from}\n\n"
33
56
  end
34
57
 
@@ -56,7 +79,7 @@ module Git
56
79
 
57
80
  def self.fetch branch
58
81
  print "Fetch: ".yellow
59
- print "#{branch}\n\n".green
82
+ print "origin/#{branch}\n\n".green
60
83
  system "git fetch origin #{branch}"
61
84
  end
62
85
 
@@ -77,13 +100,11 @@ module Git
77
100
 
78
101
  def self.execute
79
102
  processs, stderr , stdout= Open3.popen3(yield) do |i, o, stderr, wait_thr|
80
- [wait_thr.value, stderr.read, o.read]
103
+ [wait_thr.value, stderr.read, o.read]
81
104
  end
82
105
  if processs.success?
83
106
  return stdout
84
- else
85
- raise "#{stderr}"
86
107
  end
108
+ raise "#{stderr}"
87
109
  end
88
-
89
110
  end
data/lib/GitLab/gitlab.rb CHANGED
@@ -14,6 +14,8 @@ module GitLab
14
14
  req['PRIVATE-TOKEN'] = $GITLAB_TOKEN
15
15
  req.set_form_data(params)
16
16
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) {|http| http.request(req) }
17
+ check_authorized res
18
+ check_errors_404 res
17
19
  JSON.parse(res.body)
18
20
  end
19
21
 
@@ -24,6 +26,8 @@ module GitLab
24
26
  req['PRIVATE-TOKEN'] = $GITLAB_TOKEN
25
27
  req.set_form_data(params)
26
28
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) {|http| http.request(req) }
29
+ check_authorized res
30
+ check_errors_404 res
27
31
  JSON.parse(res.body)
28
32
  end
29
33
 
@@ -33,10 +37,22 @@ module GitLab
33
37
  req = Net::HTTP::Get.new(uri)
34
38
  req['PRIVATE-TOKEN'] = $GITLAB_TOKEN
35
39
  res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) {|http| http.request(req) }
40
+ check_authorized res
41
+ check_errors_404 res
36
42
  JSON.parse(res.body)
37
43
  end
38
44
 
45
+ def self.check_errors_404 res
46
+ if res.code == "404"
47
+ raise "Project: #{$GITLAB_PROJECT_ID} \n#{JSON.parse(res.body)['message']}"
48
+ end
49
+ end
39
50
 
51
+ def self.check_authorized res
52
+ if res.code == "401"
53
+ raise "Unauthorized. Check GITLAB_TOKEN and file .env"
54
+ end
55
+ end
40
56
 
41
57
  def self.create_labels
42
58
  url = "projects/#{$GITLAB_PROJECT_ID}/labels"
@@ -50,6 +66,7 @@ module GitLab
50
66
  {name: 'bugfix', color: "#D9534F"},
51
67
  {name: 'changelog', color: "#0033CC"},
52
68
  {name: 'Staging', color: "#FAD8C7"},
69
+ {name: 'tasks', color: "#F0AD4E"},
53
70
  ]
54
71
  $GIT_BRANCHES_STAGING.each do |staging|
55
72
  params << {name: staging, color: '#FAD8C7'}
@@ -62,6 +79,5 @@ module GitLab
62
79
  end
63
80
 
64
81
  end
65
-
66
82
 
67
83
  end
data/lib/GitLab/issue.rb CHANGED
@@ -87,7 +87,7 @@ class GitLab::Issue
87
87
  issue = GitLab::Issue.new
88
88
  issue.set_data issue_json
89
89
  else
90
- raise "Issue not found #{branch}"
90
+ raise "Issue not found #{branch}. \nCheck if exist the label default_branch in the body description"
91
91
  end
92
92
  end
93
93
 
@@ -96,6 +96,11 @@ class GitLab::Issue
96
96
  GitLab.request_get(url)
97
97
  end
98
98
 
99
+ def self.ping
100
+ url = "projects/#{$GITLAB_PROJECT_ID}/issues?"
101
+ issue_json = GitLab.request_get(url)&.first
102
+ end
103
+
99
104
  def self.from_list(list_name)
100
105
  url = "projects/#{$GITLAB_PROJECT_ID}/issues?labels=#{list_name}&state=opened"
101
106
  issues = []
@@ -119,6 +124,11 @@ class GitLab::Issue
119
124
  description.match(/\* \~changelog .*\n?/).to_s.gsub('* ~changelog ', '') rescue nil
120
125
  end
121
126
 
127
+ def list_tasks
128
+ # a.description.match(/(\* \~changelog .*\n)+/).to_a
129
+ description.match(/\* \~tasks .*\n?/).to_s.gsub('* ~tasks ', '') rescue nil
130
+ end
131
+
122
132
  def add_comment note
123
133
  comment = GitLab::Comment.new(issue_iid: @iid, body: note)
124
134
  @comments << comment
data/lib/GitLab/user.rb CHANGED
@@ -1,20 +1,21 @@
1
- class GitLab::User
1
+ class GitLab::User
2
2
  attr_accessor :id, :email, :name
3
3
 
4
4
  def initialize(params = {})
5
5
  @name = params[:name]
6
6
  end
7
7
 
8
- def self.me
9
- GitLab.request_get("projects/#{$GITLAB_PROJECT_ID}/users?search=#{$GITLAB_EMAIL}")[0]
8
+ def self.me
9
+ user = GitLab.request_get('user')
10
+
11
+ return user if user
12
+
13
+ raise "Who are you?! \nVerify your data em .env"
10
14
  end
11
15
 
12
16
  def self.all
13
17
  GitLab.request_get("projects/#{$GITLAB_PROJECT_ID}/users")
14
18
  end
15
19
 
16
- def to_s
17
- end
18
-
19
-
20
- end
20
+ def to_s; end
21
+ end
data/lib/config.rb CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  begin
3
2
  require 'dotenv'
4
3
  Dotenv.load(File.join( Dir.pwd, ".env"))
@@ -8,9 +7,11 @@ end
8
7
  $GITLAB_PROJECT_ID = ENV['GITLAB_PROJECT_ID']
9
8
  $GITLAB_TOKEN = ENV['GITLAB_TOKEN']
10
9
  $GITLAB_URL_API = ENV['GITLAB_URL_API']
11
- $GITLAB_EMAIL = ENV['GITLAB_EMAIL'] == "" ? Open3.popen3("git config --local user.email") { |i, o| o.read }.chomp : ENV['GITLAB_EMAIL']
10
+ $GITLAB_EMAIL = ENV['GITLAB_EMAIL'].to_s.empty? ? Open3.popen3("git config --local user.email") { |i, o| o.read }.chomp : ENV['GITLAB_EMAIL']
12
11
  $GITLAB_LISTS = ENV['GITLAB_LISTS'].split(',') rescue nil
13
12
  $GITLAB_NEXT_RELEASE_LIST = ENV['GITLAB_NEXT_RELEASE_LIST']
14
13
  $GIT_BRANCH_MASTER= ENV["GIT_BRANCH_MASTER"]
15
14
  $GIT_BRANCH_DEVELOP= ENV["GIT_BRANCH_DEVELOP"]
16
- $GIT_BRANCHES_STAGING= ENV["GIT_BRANCHES_STAGING"].split(',') rescue nil
15
+ $GIT_BRANCHES_STAGING= ENV["GIT_BRANCHES_STAGING"].split(',') rescue nil
16
+ $SFLOW_TEMPLATE_RELEASE= ENV["SFLOW_TEMPLATE_RELEASE"].to_s.empty? ? "Release version {version} - {date}" : ENV["SFLOW_TEMPLATE_RELEASE"]
17
+ $SFLOW_TEMPLATE_RELEASE_DATE_FORMAT= ENV['SFLOW_TEMPLATE_RELEASE_DATE_FORMAT'].to_s.empty? ? 'Y/m/d': ENV['SFLOW_TEMPLATE_RELEASE_DATE_FORMAT']
data/lib/sflow.rb CHANGED
@@ -8,6 +8,7 @@ end
8
8
  require 'net/http'
9
9
 
10
10
  require "open3"
11
+ require "date"
11
12
  require 'uri'
12
13
  load 'config.rb'
13
14
  load 'string.rb'
@@ -17,7 +18,7 @@ load 'Git/git.rb'
17
18
  # require './lib/gitlab/issue.rb'
18
19
  # require './lib/gitlab/merge_request.rb'
19
20
  class SFlow
20
- VERSION = "0.4.4"
21
+ VERSION = "0.6.3"
21
22
  $TYPE = ARGV[0]
22
23
  $ACTION = ARGV[1]
23
24
 
@@ -26,7 +27,11 @@ class SFlow
26
27
 
27
28
  def self.call
28
29
  begin
30
+ print "GitSflow #{VERSION}\n".green
29
31
  print "Loading...\n".yellow
32
+ git_branch = Git.execute { "git branch --show-current" }
33
+ print "\nYou are on branch:".yellow
34
+ print " #{git_branch}\n".green
30
35
  validates if !['config_', 'help_'].include? ("#{$TYPE}_#{$ACTION}")
31
36
  #
32
37
  send("#{$TYPE}_#{$ACTION}")
@@ -107,6 +112,13 @@ class SFlow
107
112
  self.codereview()
108
113
  end
109
114
 
115
+ def self.hotfix_staging
116
+ if (!$PARAM1.match(/\-hotfix\//))
117
+ raise "This branch is not a hotfix"
118
+ end
119
+ self.staging
120
+ end
121
+
110
122
  def self.bugfix_staging
111
123
  if (!$PARAM1.match(/\-bugfix\//))
112
124
  raise "This branch is not a bugfix"
@@ -130,7 +142,7 @@ class SFlow
130
142
  issues_total = issues.size
131
143
 
132
144
  if issues_total == 0
133
- raise "Not exist issues ready for start release version"
145
+ raise "Not exist ready issues for start release"
134
146
  end
135
147
 
136
148
  issues_urgent = issues.select{|i| i.labels.include? 'urgent'}
@@ -140,7 +152,7 @@ class SFlow
140
152
  issue_release = GitLab::Issue.find_by(title: issue_title) rescue nil
141
153
 
142
154
  if issue_release
143
- print "This issue already exists, do you want to continue using it? (y/n):".yellow.bg_red
155
+ print "This card was created previously. Do you want to continue using it? (y/n):".yellow.bg_red
144
156
 
145
157
  print"\n If you choose 'n', a new issue will be created!\n"
146
158
  print "\n"
@@ -191,13 +203,10 @@ class SFlow
191
203
  issues_urgent.each do |issue|
192
204
  print " -> #{issue.title}\n"
193
205
  end
194
-
195
206
  issues_urgent.each do |issue|
196
-
197
207
  Git.merge(issue.branch, release_branch)
198
208
  changelogs << "* ~changelog #{issue.msg_changelog} \n"
199
209
  new_labels << 'hotfix'
200
-
201
210
  end
202
211
  issues = issues_urgent
203
212
  when "1"
@@ -210,13 +219,15 @@ class SFlow
210
219
  issues.each do |issue|
211
220
  Git.merge(issue.branch, release_branch)
212
221
  changelogs << "* ~changelog #{issue.msg_changelog} \n"
213
-
214
222
  end
215
223
  else
216
224
  raise "option invalid!"
217
225
  end
218
226
  print "Changelog messages:\n\n".yellow
219
- version_header = "Release version #{version}\n"
227
+ d_split = $SFLOW_TEMPLATE_RELEASE_DATE_FORMAT.split('/')
228
+ date = Date.today.strftime("%#{d_split[0]}/%#{d_split[1]}/%#{d_split[2]}")
229
+ version_header = "#{$SFLOW_TEMPLATE_RELEASE.gsub("{version}", version).gsub("{date}",date)}\n"
230
+
220
231
  print version_header.blue
221
232
  msgs_changelog = []
222
233
  changelogs.each do |clog|
@@ -224,9 +235,10 @@ class SFlow
224
235
  msgs_changelog << msg_changelog
225
236
  print msg_changelog.light_blue
226
237
  end
238
+ msgs_changelog << "\n"
227
239
  print "\nSetting changelog message in CHANGELOG\n".yellow
228
240
  sleep 2
229
-
241
+
230
242
  system('touch CHANGELOG')
231
243
  file_changelog = IO.read 'CHANGELOG'
232
244
  IO.write 'CHANGELOG', version_header + msgs_changelog.join('') + file_changelog
@@ -235,17 +247,43 @@ class SFlow
235
247
  system("git commit -m 'update CHANGELOG version #{version}'")
236
248
  Git.push release_branch
237
249
 
238
- issue_release.description = "#{changelogs.join("")}\n * #{issues.map{|i| "##{i.iid},"}.join(' ')}"
250
+ issue_release.description = "#{changelogs.join("")}\n"
239
251
 
240
252
  issue_release.labels = ['ready_to_deploy', 'Next Release']
241
253
  issue_release.set_default_branch(release_branch)
242
- issue_release.update
254
+
255
+
256
+
257
+ print "\n\nTasks list:\n\n".yellow
258
+
259
+ tasks = []
260
+ issues.each do |issue|
261
+ if issue.description.match(/(\* \~tasks .*)+/)
262
+ tasks << "* ~tasks #{issue.list_tasks} \n"
263
+ end
264
+ end
265
+
266
+ if tasks.size > 0
267
+ new_labels << 'tasks'
268
+
269
+ tasks.each do |task|
270
+ task = "#{task.strip.chomp.gsub('* ~tasks ', ' - ')}\n"
271
+ print task.light_blue
272
+ end
273
+ issue_release.description += "#{tasks.join("")}\n"
274
+ end
275
+
243
276
  issues.each do |issue|
244
277
  issue.labels = (issue.labels + new_labels).uniq
245
278
  issue.close
246
279
  end
280
+
247
281
  print "\nYou are on branch: #{release_branch}\n".yellow
248
282
  print "\nRelease #{version} created with success!\n\n".yellow
283
+
284
+ issue_release.description += "* #{issues.map{|i| "##{i.iid},"}.join(' ')}"
285
+
286
+ issue_release.update
249
287
 
250
288
 
251
289
  rescue => exception
@@ -269,13 +307,12 @@ class SFlow
269
307
  Git.merge issue_release.branch, 'develop'
270
308
  Git.push 'develop'
271
309
 
272
-
273
310
  type = issue_release.labels.include?('hotfix') ? 'hotfix' : nil
274
311
  mr_master = GitLab::MergeRequest.new(
275
312
  source_branch: issue_release.branch,
276
313
  target_branch: $GIT_BRANCH_MASTER,
277
314
  issue_iid: issue_release.iid,
278
- title: "Reintegration release #{version}: #{issue_release.branch} into master",
315
+ title: "Reintegration release #{version}: #{issue_release.branch} into #{$GIT_BRANCH_MASTER}",
279
316
  description: "Closes ##{issue_release.iid}",
280
317
  type: type
281
318
  )
@@ -337,9 +374,13 @@ class SFlow
337
374
 
338
375
  end
339
376
 
377
+ def self.push_
378
+ self.push_origin
379
+ end
340
380
 
341
381
  def self.push_origin
342
- branch = $PARAM1
382
+ branch = !$PARAM1 ? Git.execute { 'git branch --show-current' } : $PARAM1
383
+ branch.delete!("\n")
343
384
  log_messages = Git.log_last_changes branch
344
385
  issue = GitLab::Issue.find_by_branch branch
345
386
  Git.push branch
@@ -373,7 +414,9 @@ class SFlow
373
414
  print "GIT_BRANCH_MASTER=master\n".pink
374
415
  print "GIT_BRANCH_DEVELOP=develop\n".pink
375
416
  print "GIT_BRANCHES_STAGING=staging_1,staging_2\n".pink
376
-
417
+ print "SFLOW_TEMPLATE_RELEASE=Version {version} - {date}\n".pink
418
+ print "SFLOW_TEMPLATE_RELEASE_DATE_FORMAT=d/m/Y\n".pink
419
+
377
420
  end
378
421
 
379
422
  def self.set_error(e)
@@ -382,7 +425,8 @@ class SFlow
382
425
  print "\n"
383
426
  print "#{e.message}".yellow.bg_red
384
427
  print "\n\n"
385
- print "#{e.backtrace}".yellow.bg_red
428
+ e.backtrace.each { |line| print "#{line}\n" }
429
+
386
430
  print "\n\n"
387
431
  end
388
432
 
@@ -401,6 +445,9 @@ class SFlow
401
445
  branchs_validations = $GIT_BRANCHES_STAGING + [$GIT_BRANCH_MASTER, $GIT_BRANCH_DEVELOP]
402
446
  Git.exist_branch?(branchs_validations.join(' ')) rescue raise "You need to create branches #{branchs_validations.join(', ')}"
403
447
 
448
+ GitLab::Issue.ping
449
+
450
+
404
451
  end
405
452
 
406
453
  def self.help_
@@ -416,9 +463,10 @@ class SFlow
416
463
  print "8 - git sflow bugfix staging BUGFIX_BRANCH\n".yellow
417
464
  print "9 - git sflow hotfix start HOTFIX DESCRIPTION\n".yellow
418
465
  print "10 - git sflow hotfix [reintegration|finish] HOTFIX_BRANCH\n".yellow
419
- print "11 - git sflow release start RELEASE\n".yellow
420
- print "12 - git sflow release finish RELEASE\n".yellow
421
- print "13 - git sflow push origin BRANCH\n".yellow
466
+ print "11 - git sflow hotfix staging HOTFIX_BRANCH\n".yellow
467
+ print "12 - git sflow release start RELEASE\n".yellow
468
+ print "13 - git sflow release finish RELEASE\n".yellow
469
+ print "14 - git sflow push origin BRANCH or git sflow push\n".yellow
422
470
 
423
471
  choice = -1
424
472
  question = "Choice a number for show a example or 0 for exit:\n\n".light_blue
@@ -443,14 +491,16 @@ class SFlow
443
491
  when '8'
444
492
  print "-> git sflow bugfix staging 12-bugfix/Ticket#9999\n"
445
493
  when '9'
446
- print "-> git sflow hotfix start Ticket#9999 'Ticket#9999 Bug at production in...'\n\n"
494
+ print "-> git sflow hotfix start Ticket#9999 'Ticket#9999 Bug at production ...'\n\n"
447
495
  when '10'
448
- print "-> git sflow hotfix reintegration Ticket#9999'\n\n"
496
+ print "-> git sflow hotfix reintegration 11-hotfix/Ticket#9999'\n\n"
449
497
  when '11'
450
- print "-> git sflow release start v5.5.99'\n\n"
498
+ print "-> git sflow hotfix staging 11-hotfix/Ticket#9999'\n\n"
451
499
  when '12'
452
- print "-> git sflow release finish v5.5.99'\n\n"
500
+ print "-> git sflow release start v9.9.99'\n\n"
453
501
  when '13'
502
+ print "-> git sflow release finish v9.9.99'\n\n"
503
+ when '14'
454
504
  print "-> git sflow push BRANCH\n\n"
455
505
  when '0'
456
506
  else
@@ -467,8 +517,10 @@ class SFlow
467
517
  # Git.pull ref_branch
468
518
  source_branch = $PARAM1
469
519
  issue = GitLab::Issue.find_by_branch(source_branch)
520
+
521
+ # Setting Changelog
470
522
  print "Title: #{issue.title}\n\n"
471
- print "Changelog message:\n--> ".yellow
523
+ print "CHANGELOG message:\n--> ".yellow
472
524
  message_changelog = STDIN.gets.chomp
473
525
  print "\n ok!\n\n".green
474
526
  new_labels = []
@@ -491,6 +543,20 @@ class SFlow
491
543
  print "#{message_changelog}\n".green
492
544
  print "Moving issue to list: ".yellow
493
545
  print "#{$GITLAB_NEXT_RELEASE_LIST}\n".green
546
+
547
+ # Setting Tasks
548
+ print "\n\nIf there are any tasks to be run, list them below separated by spaces, otherwise press Enter:\n"
549
+ print "\n Tasks:\n--> ".yellow
550
+ tasks = STDIN.gets.chomp
551
+ print "\n ok!\n\n".green
552
+ if tasks != "" and tasks != nil
553
+ issue.description.gsub!(/\* \~tasks .*\n?/,'')
554
+ issue.description = "#{issue.description} \n* ~tasks #{tasks}"
555
+ print "Setting tasks: ".yellow
556
+ end
557
+ print "#{tasks}\n".green
558
+
559
+
494
560
  issue.update
495
561
 
496
562
  end
@@ -553,14 +619,22 @@ class SFlow
553
619
  print "\n#{option_merge}, "
554
620
  print "ok!\n".green
555
621
 
556
- if option_merge == "0"
622
+ if option_merge == '0'
623
+ issues_staging = GitLab::Issue.from_list(target_branch).select{|i| i.branch != branch}
624
+ issues_staging.each do |i|
625
+ i.labels.delete(target_branch)
626
+ i.labels.delete('Staging')
627
+ i.labels.push('Doing')
628
+ i.update
629
+ end
557
630
  Git.reset_hard branch, target_branch
558
631
  Git.push_force target_branch
559
- elsif option_merge == "1"
632
+ elsif option_merge == '1'
633
+ Git.reset_hard target_branch, target_branch
560
634
  Git.merge branch, target_branch
561
635
  Git.push target_branch
562
636
  else
563
- raise "Wrong choice"
637
+ raise 'Wrong choice'
564
638
  end
565
639
 
566
640
  new_labels = [target_branch, 'Staging']
@@ -571,6 +645,7 @@ class SFlow
571
645
  issue.update
572
646
 
573
647
  self.codereview
648
+ Git.checkout(branch)
574
649
  end
575
650
  end
576
651
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gitsflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.6.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Carlos Wherbet
@@ -142,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  - !ruby/object:Gem::Version
143
143
  version: '0'
144
144
  requirements: []
145
- rubygems_version: 3.1.2
145
+ rubygems_version: 3.1.4
146
146
  signing_key:
147
147
  specification_version: 4
148
148
  summary: GitSFlow is a tool that integrate Git custom commands with GitLab and it's