git-maintain 0.5.0.pre.11.g7c08aac → 0.5.0.pre.13.ge72a2b0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0d77c8e6dedcb14bd6d4598218f99a05a4c38f83012cac2ecd0d50d8dc106d81
4
- data.tar.gz: 8c744c16fbe487e788a75e6eb6e711ba3a847deef667340f1a5d0c65e60324db
3
+ metadata.gz: 44043bb13255df2557298655ba268fa2775f32f543f0fc50785dc9944e47b578
4
+ data.tar.gz: b3af11b591ce0c4096c4df44cf8d52c7d8bd8015e5d5cb1204bbbfe0d8b6656d
5
5
  SHA512:
6
- metadata.gz: fc6fe26f35d9802c57521e3cf855680cd7f0b3cf15eb4c9795702967da29516569b93128ae2cfd3247e637b86e28b4165d759c9fc9c278b24465a50afe0c0d50
7
- data.tar.gz: 9348465af84b807191623b171970c237da5c22b6c52c4388468c559d7a8f363254a97d2289007fd94ed921f843a25e876197c7940eb980f3bc11acf0d89be3b3
6
+ metadata.gz: bb884e28eb8e4f60f262a36aed4bcab2c383ee80ebc3952f847d89d9f9c77bac8db409474d2062beda3e263225ddb43ce552f01a38ee492fbddb5200a49a0cae
7
+ data.tar.gz: 671e9220b866fa12c048dc531e609726e723b6a5c0028c0998868f976b42fef8b0f5e686dd42b9c9db96bd39e14afb4ade2d5feff7a0cda8ea87af4f1c292b03
data/CHANGELOG CHANGED
@@ -4,6 +4,8 @@
4
4
  * Cleanup release email
5
5
  * Add build timestamp for running build in monitor
6
6
  * Add --watch for monitor and monitor_stable
7
+ * Fix bad output ot git maintain steal
8
+ * Rewrite log system and handle colors
7
9
 
8
10
  ------------------
9
11
  0.5.0 (2019-02-05)
@@ -45,6 +45,8 @@ optsParser.on("-b", "--branch-suffix [SUFFIX]", "Branch suffix. Default is 'mast
45
45
  |val| opts[:br_suff] = val}
46
46
  optsParser.on("-n", "--no", "Assume no to all questions.") {
47
47
  |val| opts[:no] = true}
48
+ optsParser.on("--verbose", "Displays more informations.") {
49
+ |val| GitMaintain::setVerbose(true)}
48
50
  GitMaintain::setOpts(action, optsParser, opts)
49
51
 
50
52
  rest = optsParser.order!(ARGV);
@@ -120,10 +120,10 @@ module GitMaintain
120
120
  branch = Branch::load(repo, br, travis, opts[:br_suff])
121
121
  case branch.is_targetted?(opts)
122
122
  when :too_old
123
- puts "# Skipping older v#{branch.version}"
123
+ log(:VERBOSE, "Skipping older v#{branch.version}")
124
124
  next
125
125
  when :no_match
126
- puts "# Skipping v#{branch.version} not matching #{opts[:version].to_s()}"
126
+ log(:VERBOSE, "Skipping v#{branch.version} not matching #{opts[:version].to_s()}")
127
127
  next
128
128
  end
129
129
  branch
@@ -136,10 +136,7 @@ module GitMaintain
136
136
  system("clear; date") if opts[:watch] != false
137
137
  branchList.each(){|branch|
138
138
  if NO_CHECKOUT_ACTIONS.index(action) == nil then
139
- puts "###############################"
140
- puts "# Working on #{branch.verbose_name}"
141
- puts "###############################"
142
-
139
+ GitMaintain::log(:INFO, "Working on #{branch.verbose_name}")
143
140
  branch.checkout()
144
141
  end
145
142
  branch.send(action, opts)
@@ -177,6 +174,10 @@ module GitMaintain
177
174
  end
178
175
  attr_reader :version, :local_branch, :head, :remote_branch, :remote_ref, :stable_head, :verbose_name
179
176
 
177
+ def log(lvl, str)
178
+ GitMaintain::log(lvl, str)
179
+ end
180
+
180
181
  def is_targetted?(opts)
181
182
  return true if @branch_type == :user_specified
182
183
  if @version.to_i < opts[:base_ver] then
@@ -201,9 +202,8 @@ module GitMaintain
201
202
  opts[:commits].each(){|commit|
202
203
  @repo.runGit("cherry-pick #{commit}")
203
204
  if $? != 0 then
204
- puts "Cherry pick failure. Starting bash for manual fixes. Exit shell to continue"
205
- @repo.runSystem("bash")
206
- puts "Continuing..."
205
+ log(:WARNING, "Cherry pick failure. Starting bash for manual fixes. Exit shell to continue")
206
+ @repo.runBash()
207
207
  end
208
208
  make_pretty(commit)
209
209
  }
@@ -219,8 +219,8 @@ module GitMaintain
219
219
  sha = @repo.runGit("rev-parse 'git-maintain/steal/last/#{@stable_base}' 2>&1")
220
220
  if $? == 0 then
221
221
  base_ref=sha
222
- puts "# INFO: Starting from last successfull run:"
223
- puts "# INFO: " + @repo.runGit("show --format=oneline #{base_ref}")
222
+ log(:VERBOSE, "Starting from last successfull run:")
223
+ log(:VERBOSE, @repo.getCommitHeadline(base_ref))
224
224
  end
225
225
  end
226
226
 
@@ -232,9 +232,9 @@ module GitMaintain
232
232
  # can just steal from this point on the next run
233
233
  if res == true then
234
234
  @repo.runGit("tag -f 'git-maintain/steal/last/#{@stable_base}' origin/master")
235
- puts "# INFO: Marking new last successfull run at:"
236
- puts "# INFO: " + @repo.runGit("show --format=oneline #{master_sha}")
237
- end
235
+ log(:VERBOSE, "Marking new last successfull run at:")
236
+ log(:VERBOSE, @repo.getCommitHeadline(master_sha))
237
+ end
238
238
  end
239
239
 
240
240
  # List commits in the branch that are no in the stable branch
@@ -249,12 +249,11 @@ module GitMaintain
249
249
  if rep == "y" then
250
250
  @repo.runGit("merge #{merge_branch}")
251
251
  if $? != 0 then
252
- puts "Merge failure. Starting bash for manual fixes. Exit shell to continue"
253
- @repo.runSystem("bash")
254
- puts "Continuing..."
252
+ log(:WARNING, "Merge failure. Starting bash for manual fixes. Exit shell to continue")
253
+ @repo.runBash()
255
254
  end
256
255
  else
257
- puts "Skipping merge"
256
+ log(:INFO, "Skipping merge")
258
257
  return
259
258
  end
260
259
  end
@@ -272,7 +271,7 @@ module GitMaintain
272
271
  when "started"
273
272
  suff= " started at #{@travis.getValidTS(head)}"
274
273
  end
275
- puts "Status for v#{@version}: " + st + suff
274
+ log(:INFO, "Status for v#{@version}: " + st + suff)
276
275
  if st == "failed"
277
276
  rep = "y"
278
277
  suff=""
@@ -296,13 +295,13 @@ module GitMaintain
296
295
  def push_stable(opts)
297
296
  if (opts[:no_travis] != true && @NO_TRAVIS != true) &&
298
297
  @travis.checkValidState(@head) != true then
299
- puts "Build is not passed on travis. Skipping push to stable"
298
+ log(:WARNING, "Build is not passed on travis. Skipping push to stable")
300
299
  return
301
300
  end
302
301
  c1=@repo.runGit("rev-parse --verify --quiet #{@local_branch}")
303
302
  c2=@repo.runGit("rev-parse --verify --quiet #{@remote_ref}")
304
303
  if c1 == c2 then
305
- puts "Stable is already up-to-date"
304
+ log(:INFO, "Stable is already up-to-date")
306
305
  return
307
306
  end
308
307
 
@@ -315,7 +314,7 @@ module GitMaintain
315
314
  if rep == "y" then
316
315
  @repo.runGit("push #{@repo.stable_repo} #{@local_branch}:#{@remote_branch}")
317
316
  else
318
- puts "Skipping push to stable"
317
+ log(:INFO, "Skipping push to stable")
319
318
  return
320
319
  end
321
320
  end
@@ -328,7 +327,7 @@ module GitMaintain
328
327
  when "started"
329
328
  suff= " started at #{@travis.getStableTS(@stable_head)}"
330
329
  end
331
- puts "Status for v#{@version}: " + st + suff
330
+ log(:INFO, "Status for v#{@version}: " + st + suff)
332
331
  end
333
332
 
334
333
  # Reset the branch to the upstream stable one
@@ -337,13 +336,13 @@ module GitMaintain
337
336
  if rep == "y" then
338
337
  @repo.runGit("reset --hard #{@remote_ref}")
339
338
  else
340
- puts "Skipping reset"
339
+ log(:INFO, "Skipping reset")
341
340
  return
342
341
  end
343
342
  end
344
343
 
345
344
  def release(opts)
346
- puts "#No release command available for this repo"
345
+ log(:ERROR,"#No release command available for this repo")
347
346
  end
348
347
 
349
348
  private
@@ -375,7 +374,7 @@ module GitMaintain
375
374
  # This might happen if someone pointed to a commit that doesn't exist in our
376
375
  # tree.
377
376
  if $? != 0 then
378
- puts "# WARNING: Commit #{src_commit} points to a SHA #{commit} not in tree"
377
+ log(:WARNING, "Commit #{src_commit} points to a SHA #{commit} not in tree")
379
378
  return false
380
379
  end
381
380
 
@@ -467,11 +466,11 @@ module GitMaintain
467
466
  def confirm_one(opts, commit)
468
467
  rep=""
469
468
  do_cp=false
470
- puts @repo.runGit("show --format=oneline --no-patch --no-decorate #{commit}")
469
+ puts @repo.getCommitHeadline(commit)
471
470
  while rep != "y" do
472
471
  puts "Do you want to steal this commit ? (y/n/b/?)"
473
472
  if opts[:no] == true then
474
- puts "Auto-replying no due to --no option"
473
+ log(:INFO, "Auto-replying no due to --no option")
475
474
  rep = 'n'
476
475
  break
477
476
  else
@@ -479,10 +478,10 @@ module GitMaintain
479
478
  end
480
479
  case rep
481
480
  when "n"
482
- puts "Skip this commit"
481
+ log(:INFO, "Skip this commit")
483
482
  break
484
483
  when "b"
485
- puts "Blacklisting this commit for the current branch"
484
+ LOG(:INFO, "Blacklisting this commit for the current branch")
486
485
  add_blacklist(commit)
487
486
  break
488
487
  when "y"
@@ -492,7 +491,7 @@ module GitMaintain
492
491
  when "?"
493
492
  puts @repo.runGit("show #{commit}")
494
493
  else
495
- STDERR.puts "Invalid answer $rep"
494
+ log(:ERROR, "Invalid answer $rep")
496
495
  puts @repo.runGit("show --format=oneline --no-patch --no-decorate #{commit}")
497
496
  end
498
497
  end
@@ -522,8 +521,8 @@ module GitMaintain
522
521
  # Check if it's not blacklisted by a git-notes
523
522
  if is_blacklisted?(orig_cmt) == true then
524
523
  # Commit is blacklisted
525
- puts "Skipping 'blacklisted' commit " +
526
- @repo.runGit("show --format=oneline --no-patch --no-decorate #{orig_cmt}")
524
+ log(:INFO, "Skipping 'blacklisted' commit " +
525
+ @repo.runGit("log --format=oneline --no-patch --no-decorate #{orig_cmt}"))
527
526
  return true
528
527
  end
529
528
 
@@ -533,7 +532,7 @@ module GitMaintain
533
532
  begin
534
533
  pick_one(commit)
535
534
  rescue CherryPickErrorException => e
536
- puts "Cherry pick failed. Fix, commit (or reset) and exit."
535
+ log(:WARNING, "Cherry pick failed. Fix, commit (or reset) and exit.")
537
536
  @repo.runSystem("/bin/bash")
538
537
  return false
539
538
  end
@@ -543,7 +542,7 @@ module GitMaintain
543
542
  if orig_cmt == "" then
544
543
  msg="Custom"
545
544
  orig_cmt=@repo.runGit("rev-parse HEAD")
546
- puts "Custom commit, please double-check!"
545
+ log(:WARNING, "Custom commit, please double-check!")
547
546
  @repo.runSystem("/bin/bash")
548
547
  end
549
548
  make_pretty(orig_cmt, msg)
@@ -6,6 +6,39 @@ require 'branch'
6
6
 
7
7
  $LOAD_PATH.pop()
8
8
 
9
+ class String
10
+ # colorization
11
+ @@is_a_tty = nil
12
+ def colorize(color_code)
13
+ @@is_a_tty = STDOUT.isatty() if @@is_a_tty == nil
14
+ if @@is_a_tty then
15
+ return "\e[#{color_code}m#{self}\e[0m"
16
+ else
17
+ return self
18
+ end
19
+ end
20
+
21
+ def red
22
+ colorize(31)
23
+ end
24
+
25
+ def green
26
+ colorize(32)
27
+ end
28
+
29
+ def brown
30
+ colorize(33)
31
+ end
32
+
33
+ def blue
34
+ colorize(34)
35
+ end
36
+
37
+ def magenta
38
+ colorize(35)
39
+ end
40
+ end
41
+
9
42
  module GitMaintain
10
43
  class Common
11
44
  ACTION_LIST = [ :list_actions ]
@@ -18,6 +51,8 @@ module GitMaintain
18
51
  ACTION_CLASS = [ Common, Branch, Repo ]
19
52
  @@custom_classes = {}
20
53
 
54
+ @@verbose_log = false
55
+
21
56
  def registerCustom(repo_name, classes)
22
57
  raise("Multiple class for repo #{repo_name}") if @@custom_classes[repo_name] != nil
23
58
  @@custom_classes[repo_name] = classes
@@ -32,10 +67,10 @@ module GitMaintain
32
67
  def loadClass(default_class, repo_name, *more)
33
68
  custom = @@custom_classes[repo_name]
34
69
  if custom != nil && custom[default_class] != nil then
35
- puts "# Detected custom #{default_class} class for repo '#{repo_name}'" if ENV['DEBUG'] == "1"
70
+ log(:DEBUG,"Detected custom #{default_class} class for repo '#{repo_name}'")
36
71
  return custom[default_class].new(*more)
37
72
  else
38
- puts "# Detected NO custom #{default_class} classes for repo '#{repo_name}'" if ENV['DEBUG'] == "1"
73
+ log(:DEBUG,"Detected NO custom #{default_class} classes for repo '#{repo_name}'")
39
74
  return default_class.new(*more)
40
75
  end
41
76
  end
@@ -110,6 +145,35 @@ module GitMaintain
110
145
  end
111
146
  module_function :checkLog
112
147
 
148
+ def _log(lvl, str, out=STDOUT)
149
+ puts("# " + lvl.to_s() + ": " + str)
150
+ end
151
+ module_function :_log
152
+
153
+ def log(lvl, str)
154
+ case lvl
155
+ when :DEBUG
156
+ _log("DEBUG".magenta(), str) if ENV["DEBUG"].to_s() != ""
157
+ when :DEBUG_TRAVIS
158
+ _log("DEBUG_TRAVIS".magenta(), str) if ENV["DEBUG_TRAVIS"].to_s() != ""
159
+ when :VERBOSE
160
+ _log("INFO".blue(), str) if @@verbose_log == true
161
+ when :INFO
162
+ _log("INFO".green(), str)
163
+ when :WARNING
164
+ _log("WARNING".brown(), str)
165
+ when :ERROR
166
+ _log("ERROR".red(), str, STDERR)
167
+ else
168
+ _log(lvl, str)
169
+ end
170
+ end
171
+ module_function :log
172
+
173
+ def setVerbose(val)
174
+ @@verbose_log = val
175
+ end
176
+ module_function :setVerbose
113
177
  end
114
178
  $LOAD_PATH.pop()
115
179
 
@@ -67,6 +67,10 @@ module GitMaintain
67
67
  end
68
68
  attr_reader :path, :remote_valid, :remote_stable, :valid_repo, :stable_repo
69
69
 
70
+ def log(lvl, str)
71
+ GitMaintain::log(lvl, str)
72
+ end
73
+
70
74
  def run(cmd)
71
75
  return `cd #{@path} && #{cmd}`
72
76
  end
@@ -74,10 +78,8 @@ module GitMaintain
74
78
  return system("cd #{@path} && #{cmd}")
75
79
  end
76
80
  def runGit(cmd)
77
- if ENV["DEBUG"].to_s() != "" then
78
- puts "Called from #{caller[1]}"
79
- puts "Running git command '#{cmd}'"
80
- end
81
+ log(:DEBUG, "Called from #{caller[1]}")
82
+ log(:DEBUG, "Running git command '#{cmd}'")
81
83
  return `git --work-tree=#{@path} #{cmd}`.chomp()
82
84
  end
83
85
  def runGitImap(cmd)
@@ -90,8 +92,22 @@ module GitMaintain
90
92
  fi; git --work-tree=#{@path} imap-send #{cmd}`
91
93
  end
92
94
 
95
+ def runBash()
96
+ runSystem("bash")
97
+ if $? == 0 then
98
+ log(:INFO, "Continuing...")
99
+ else
100
+ log(:ERROR, "Shell exited with code #{$?}. Exiting")
101
+ raise("Cancelled by user")
102
+ end
103
+ end
104
+
105
+ def getCommitHeadline(sha)
106
+ return runGit("show --format=oneline --no-patch --no-decorate #{sha}")
107
+ end
108
+
93
109
  def stableUpdate()
94
- puts "# Fetching stable updates..."
110
+ log(:VERBOSE, "Fetching stable updates...")
95
111
  runGit("fetch #{@stable_repo}")
96
112
  end
97
113
  def getStableList(br_suff)
@@ -125,11 +141,11 @@ module GitMaintain
125
141
 
126
142
  new_tags = local_tags - remote_tags
127
143
  if new_tags.empty? then
128
- puts "All tags are already submitted."
144
+ log(:INFO, "All tags are already submitted.")
129
145
  return
130
146
  end
131
147
 
132
- puts "This will officially release these tags: #{new_tags.join(", ")}"
148
+ log(:WARNING, "This will officially release these tags: #{new_tags.join(", ")}")
133
149
  rep = GitMaintain::confirm(opts, "release them")
134
150
  if rep != 'y' then
135
151
  raise "Aborting.."
@@ -179,7 +195,7 @@ module GitMaintain
179
195
  puts runGitImap("< #{mail_path}; rm -f #{mail_path}")
180
196
  end
181
197
 
182
- puts "Last chance to cancel before submitting"
198
+ log(:WARNING, "Last chance to cancel before submitting")
183
199
  rep= GitMaintain::confirm(opts, "submit these releases")
184
200
  if rep != 'y' then
185
201
  raise "Aborting.."
@@ -15,6 +15,10 @@ module GitMaintain
15
15
  end
16
16
 
17
17
  private
18
+ def log(lvl, str)
19
+ GitMaintain::log(lvl, str)
20
+ end
21
+
18
22
  def fetch(uri_str, limit = 10)
19
23
  # You should choose a better exception.
20
24
  raise ArgumentError, 'too many HTTP redirects' if limit == 0
@@ -35,8 +39,8 @@ module GitMaintain
35
39
  return @cachedJson[query_label] if @cachedJson[query_label] != nil
36
40
  url = TRAVIS_URL + query
37
41
  uri = URI(url)
38
- puts "# Querying travis..."
39
- puts "# #{url}" if ENV["DEBUG_TRAVIS"].to_s() != ""
42
+ log(:INFO, "Querying travis...")
43
+ log(DEBUG_TRAVIS, url)
40
44
  response = fetch(uri)
41
45
  raise("Travis request failed '#{url}'") if response.code.to_s() != '200'
42
46
 
@@ -75,11 +79,11 @@ module GitMaintain
75
79
  return getJson(:br_stable, 'repos/' + @repo.remote_stable + '/branches')
76
80
  end
77
81
  def findBranch(sha1, resp)
78
- puts "# Looking for build for #{sha1}" if ENV["DEBUG_TRAVIS"].to_s() != ""
82
+ log(:DEBUG_TRAVIS, "Looking for build for #{sha1}")
79
83
  resp["branches"].each(){|br|
80
84
  commit=resp["commits"].select(){|e| e["id"] == br["commit_id"]}.first()
81
85
  raise("Incomplete JSON received from Travis") if commit == nil
82
- puts "# Found entry for sha #{commit["sha"]}" if ENV["DEBUG_TRAVIS"].to_s() != ""
86
+ log(:DEBUG_TRAVIS, "Found entry for sha #{commit["sha"]}")
83
87
  next if commit["sha"] != sha1
84
88
  return br
85
89
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-maintain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.pre.11.g7c08aac
4
+ version: 0.5.0.pre.13.ge72a2b0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nicolas Morey-Chaisemartin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-06 00:00:00.000000000 Z
11
+ date: 2019-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github-release