sugarjar 0.0.8 → 0.0.9

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: 56cbf17ade9b12f891a658d7224a4571890da6517d9ea77a6f3688b4ff593261
4
- data.tar.gz: c0c51ce8312f592cc8fd0fe273c563c2c7d3b2e033776ba64d267767755bd720
3
+ metadata.gz: 7b12b221b467eca9aeba30396d059870a82608120ce1739ded50b4aef55ce7ba
4
+ data.tar.gz: c84bcab24de60fc61a0241f7c2940d6da6d78bc7416fa3fb92500528a447f9c8
5
5
  SHA512:
6
- metadata.gz: 3d49efb6124a04112ab8bd80b145a2459bdeb56f79c468524e0c89bbc9ef183dfce001fe199b8274562083b338aa2d81073e818676cd6fb9a43250c7be80c736
7
- data.tar.gz: 0acc7fb90fed326a8976a1f029e3f5a9720259c855df686e8fb52aa70f8dc009f500f1bb36ef1c5957b7291b5d36cd3e4e59e902582fc23ed66409a58f73869a
6
+ metadata.gz: e041cd65eb939ea1d2153bf13a8a019e05f194fcf6ce4326c69d62a2de9e34e1d036cf759c5ea17b5b42d8e7e159fc99d65ee75470580a4ed15a854fffc7c87f
7
+ data.tar.gz: 2c47c2920b6a774ffb83ef16761183ac7dbfcc808a6885335bbeeee5470a29ceff343df4e3748897ab4e8e681e7c7d8b9a5fc3c7ed4d44fafaa40dda6c08b300
data/README.md CHANGED
@@ -191,6 +191,13 @@ $ sj feature dependent-feature test-branch
191
191
  Created feature branch dependent-feature based on test-branch
192
192
  ```
193
193
 
194
+ ## Smartlog
195
+
196
+ Smartlog will show you a tree diagram of your branches! Simply run `sj
197
+ smartlog` or `sj sl` for short.
198
+
199
+ ![smartlog screenshot](https://github.com/jaymzh/sugarjar/blob/master/smartlog.png)
200
+
194
201
  ## And more!
195
202
 
196
203
  See `sj help` for more commands!
@@ -165,7 +165,7 @@ class SugarJar
165
165
  reponame = File.basename(repo, '.git')
166
166
  dir ||= reponame
167
167
  SugarJar::Log.info("Cloning #{reponame}...")
168
- hub('clone', repo, dir, *args)
168
+ hub('clone', canonicalize_repo(repo), dir, *args)
169
169
 
170
170
  Dir.chdir dir do
171
171
  # Now that we have a repo, if we have a hub host set it.
@@ -185,7 +185,7 @@ class SugarJar
185
185
  # newer 'hub's don't fail and do the right thing...
186
186
  SugarJar::Log.info("Fork (#{@ghuser}/#{reponame}) detected.")
187
187
  hub('remote', 'rename', 'origin', 'upstream')
188
- hub('remote', 'add', 'origin', forked_path(repo, @ghuser))
188
+ hub('remote', 'add', 'origin', forked_repo(repo, @ghuser))
189
189
  else
190
190
  SugarJar::Log.info("Forked #{reponame} to #{@ghuser}")
191
191
  end
@@ -284,24 +284,36 @@ class SugarJar
284
284
  s.error?
285
285
  end
286
286
 
287
- def extract_org(path)
288
- if path.start_with?('http')
289
- File.basename(File.dirname(path))
290
- elsif path.start_with?('git@')
291
- path.split(':')[1].split('/')[0]
287
+ def extract_org(repo)
288
+ if repo.start_with?('http')
289
+ File.basename(File.dirname(repo))
290
+ elsif repo.start_with?('git@')
291
+ repo.split(':')[1].split('/')[0]
292
292
  else
293
293
  # assume they passed in a hub-friendly name
294
- path.split('/').first
294
+ repo.split('/').first
295
295
  end
296
296
  end
297
297
 
298
- def forked_path(path, username)
299
- repo = if path.start_with?('http', 'git@')
300
- File.basename(path)
298
+ def forked_repo(repo, username)
299
+ repo = if repo.start_with?('http', 'git@')
300
+ File.basename(repo)
301
301
  else
302
- "#{File.basename(path)}.git"
302
+ "#{File.basename(repo)}.git"
303
303
  end
304
- "git@github.com:#{username}/#{repo}"
304
+ "git@#{@ghhost || 'github.com'}:#{username}/#{repo}"
305
+ end
306
+
307
+ # Hub will default to https, but we should always default to SSH
308
+ # unless otherwise specified since https will cause prompting.
309
+ def canonicalize_repo(repo)
310
+ # if they fully-qualified it, we're good
311
+ return repo if repo.start_with?('http', 'git@')
312
+
313
+ # otherwise, ti's a shortname
314
+ cr = "git@#{@ghhost || 'github.com'}:#{repo}.git"
315
+ SugarJar::Log.debug("canonicalized #{repo} to #{cr}")
316
+ cr
305
317
  end
306
318
 
307
319
  def set_hub_host
@@ -378,24 +390,53 @@ class SugarJar
378
390
  @repo_config[type].each do |check|
379
391
  SugarJar::Log.debug("Running #{type} #{check}")
380
392
 
381
- unless File.exist?(check.split.first)
382
- SugarJar::Log.error("Configured #{type} #{check} does not exist!")
393
+ short = check.split.first
394
+ unless File.exist?(short)
395
+ SugarJar::Log.error("Configured #{type} #{short} does not exist!")
383
396
  return false
384
397
  end
385
398
  s = Mixlib::ShellOut.new(check).run_command
386
- unless s.error?
399
+
400
+ # Linters auto-correct, lets handle that gracefully
401
+ if type == 'lint' && dirty?
387
402
  SugarJar::Log.info(
388
- "[#{type}] #{check}: #{color('OK', :green)}",
403
+ "[#{type}] #{short}: #{color('Corrected', :yellow)}",
404
+ )
405
+ SugarJar::Log.warn(
406
+ "The linter modified the repo. Here's the diff:\n",
389
407
  )
390
- next
408
+ puts hub('diff').stdout
409
+ loop do
410
+ $stdout.print(
411
+ "\nWould you like to\n\t[q]uit and inspect\n\t[a]mend the " +
412
+ "changes to the current commit and re-run\n > ",
413
+ )
414
+ ans = $stdin.gets.strip
415
+ case ans
416
+ when /^q/
417
+ SugarJar::Log.info('Exiting at user request.')
418
+ exit(1)
419
+ when /^a/
420
+ qamend('-a')
421
+ # break here, if we get out of this loop we 'redo', assuming
422
+ # the user chose this option
423
+ break
424
+ end
425
+ end
426
+ redo
391
427
  end
392
428
 
429
+ if s.error?
430
+ SugarJar::Log.info(
431
+ "[#{type}] #{short} #{color('failed', :red)}, output follows " +
432
+ "(see debug for more)\n#{s.stdout}",
433
+ )
434
+ SugarJar::Log.debug(s.format_for_exception)
435
+ return false
436
+ end
393
437
  SugarJar::Log.info(
394
- "[#{type}] #{check} #{color('failed', :red)}, output follows " +
395
- "(see debug for more)\n#{s.stdout}",
438
+ "[#{type}] #{short}: #{color('OK', :green)}",
396
439
  )
397
- SugarJar::Log.debug(s.format_for_exception)
398
- return false
399
440
  end
400
441
  end
401
442
  end
data/lib/sugarjar/util.rb CHANGED
@@ -52,7 +52,8 @@ class SugarJar
52
52
  end
53
53
  SugarJar::Log.info('Re-running original hub command...')
54
54
  s = Mixlib::ShellOut.new([which('hub')] + args).run_command
55
- when /^fatal: could not read Username/
55
+ when /^fatal: could not read Username/, /Anonymous access denied/
56
+
56
57
  # On http(s) URLs, git may prompt for username/passwd
57
58
  SugarJar::Log.info(
58
59
  'Hub was run but git prompted for authentication. This probably ' +
@@ -1,3 +1,3 @@
1
1
  class SugarJar
2
- VERSION = '0.0.8'.freeze
2
+ VERSION = '0.0.9'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sugarjar
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Phil Dibowitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-17 00:00:00.000000000 Z
11
+ date: 2021-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-log
@@ -94,7 +94,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  requirements: []
97
- rubygems_version: 3.1.2
97
+ rubygems_version: 3.2.5
98
98
  signing_key:
99
99
  specification_version: 4
100
100
  summary: A git/github helper script