brightpearl-cli 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +5 -13
  2. data/bin/bp +1 -1
  3. data/bin/brightpearl +1 -1
  4. data/lib/brightpearl_cli.rb +161 -168
  5. data/lib/core/api.rb +1 -1
  6. data/lib/core/config.rb +10 -133
  7. data/lib/core/config_unique.rb +113 -0
  8. data/lib/core/encrypter.rb +6 -6
  9. data/lib/core/enums.rb +1 -1
  10. data/lib/core/git.rb +123 -108
  11. data/lib/core/git_delete.rb +89 -0
  12. data/lib/core/jira.rb +2 -2
  13. data/lib/core/mysql.rb +14 -14
  14. data/lib/core/pom.rb +129 -0
  15. data/lib/core/terminal.rb +28 -8
  16. data/lib/core/tools.rb +6 -6
  17. data/lib/core/utils_files.rb +92 -0
  18. data/lib/core/utils_routes.rb +25 -0
  19. data/lib/core/utils_strings.rb +45 -0
  20. data/lib/core/validate.rb +1 -1
  21. data/lib/routes/build.rb +16 -17
  22. data/lib/routes/dummy_order.rb +5 -5
  23. data/lib/routes/fix.rb +49 -0
  24. data/lib/routes/git_branch.rb +6 -6
  25. data/lib/routes/git_checkout.rb +42 -33
  26. data/lib/routes/git_delete.rb +8 -62
  27. data/lib/routes/git_merge.rb +198 -111
  28. data/lib/routes/git_pull.rb +11 -11
  29. data/lib/routes/git_push.rb +21 -12
  30. data/lib/routes/git_stash.rb +13 -8
  31. data/lib/routes/git_update.rb +17 -22
  32. data/lib/routes/jira.rb +3 -3
  33. data/lib/routes/production_logs.rb +12 -12
  34. data/lib/routes/reset.rb +1 -1
  35. data/lib/routes/review.rb +6 -5
  36. data/lib/routes/scripts_api_docs.rb +5 -5
  37. data/lib/routes/scripts_branch_cleaner.rb +58 -79
  38. data/lib/routes/scripts_color.rb +1 -1
  39. data/lib/routes/scripts_pom_fixer.rb +5 -62
  40. data/lib/routes/scripts_sonar.rb +82 -0
  41. data/lib/routes/setup.rb +6 -6
  42. data/lib/routes/tail.rb +5 -5
  43. data/lib/routes/test.rb +3 -3
  44. data/lib/routes/update.rb +1 -1
  45. metadata +16 -9
  46. data/lib/routes/scripts_code_sniffer.rb +0 -36
data/lib/core/git.rb CHANGED
@@ -2,7 +2,7 @@ require 'columnist'
2
2
  require 'date'
3
3
  require 'highline'
4
4
 
5
- module Brightpearl
5
+ module App
6
6
 
7
7
  class Git
8
8
 
@@ -19,7 +19,7 @@ module Brightpearl
19
19
  DB = 'db'
20
20
 
21
21
  MERGED_PREFIX = 'MERGED-'
22
- MDASH = '-'
22
+ MDASH = ''
23
23
 
24
24
  MASTER = 'master'
25
25
  REFNAME = 'refname'
@@ -81,7 +81,7 @@ module Brightpearl
81
81
  end
82
82
  repos.each do |repo_dir_inner|
83
83
  unless File.directory?(repo_dir_inner)
84
- Brightpearl::Terminal::error('Directory not found', "Directory doesn't exist: #{Brightpearl::Terminal::format_directory(repo_dir_inner)}", true)
84
+ App::Terminal::error('Directory not found', "Directory doesn't exist: #{App::Terminal::format_directory(repo_dir_inner)}", true)
85
85
  end
86
86
  raw_terminal_output = `
87
87
  cd #{repo_dir_inner} &&
@@ -110,7 +110,7 @@ module Brightpearl
110
110
  branches["#{data[:"#{COMMITTER_DATE}"].strftime('%Y-%m-%d-%H-%I-%S')}-#{branch_count}"] = data
111
111
  branch_count = branch_count + 1
112
112
  else
113
- Brightpearl::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
113
+ App::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
114
114
  end
115
115
  end
116
116
  branch_keys = branches.keys
@@ -121,7 +121,7 @@ module Brightpearl
121
121
  branch_keys.sort_by! { |value| value }
122
122
  branch_keys = branch_keys.reverse
123
123
  else
124
- Brightpearl::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
124
+ App::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
125
125
  end
126
126
  branch_data = []
127
127
  branch_keys.each do |key|
@@ -152,7 +152,7 @@ module Brightpearl
152
152
  end
153
153
  repos.each do |repo_dir_inner|
154
154
  unless File.directory?(repo_dir_inner)
155
- Brightpearl::Terminal::error('Directory not found', "Directory doesn't exist: #{Brightpearl::Terminal::format_directory(repo_dir)}", true)
155
+ App::Terminal::error('Directory not found', "Directory doesn't exist: #{App::Terminal::format_directory(repo_dir)}", true)
156
156
  end
157
157
  update_origin(repo_dir_inner)
158
158
  raw_terminal_output = `
@@ -176,7 +176,7 @@ module Brightpearl
176
176
  branches["#{data[:"#{COMMITTER_DATE}"].strftime('%Y-%m-%d-%H-%I-%S')}-#{branch_count}"] = data
177
177
  branch_count = branch_count + 1
178
178
  else
179
- Brightpearl::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
179
+ App::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
180
180
  end
181
181
  end
182
182
  branch_keys = branches.keys
@@ -187,7 +187,7 @@ module Brightpearl
187
187
  branch_keys.sort_by! { |value| value }
188
188
  branch_keys = branch_keys.reverse
189
189
  else
190
- Brightpearl::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
190
+ App::Terminal::error('Sort not supported', "The following sorting option is not yet supported: #{sort}", true)
191
191
  end
192
192
  branch_data = []
193
193
  branch_keys.each do |key|
@@ -215,7 +215,7 @@ module Brightpearl
215
215
  return @branches_as_array[:remote_both] if @branches_as_array[:remote_both] != nil
216
216
  end
217
217
  else
218
- if repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)
218
+ if repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)
219
219
  if local_remote == LOCAL
220
220
  return @branches_as_array[:local_code] if @branches_as_array[:local_code] != nil
221
221
  else
@@ -263,7 +263,7 @@ module Brightpearl
263
263
  return @branches_as_array[:remote_both] = repos_to_return[0], repos_to_return[1]
264
264
  end
265
265
  else
266
- if repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)
266
+ if repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)
267
267
  if local_remote == LOCAL
268
268
  return @branches_as_array[:local_code] = repos_to_return[0]
269
269
  else
@@ -283,8 +283,8 @@ module Brightpearl
283
283
  # @return Array
284
284
  def get_all_branches_as_array
285
285
  unless @branches_as_array_all
286
- local_branches = get_branches_as_array(Brightpearl::Git::LOCAL)
287
- remote_branches = get_branches_as_array(Brightpearl::Git::REMOTE)
286
+ local_branches = get_branches_as_array(App::Git::LOCAL)
287
+ remote_branches = get_branches_as_array(App::Git::REMOTE)
288
288
  @branches_as_array_all = local_branches[0].concat(local_branches[1]).concat(remote_branches[0]).concat(remote_branches[1])
289
289
  @branches_as_array_all.uniq!
290
290
  @branches_as_array_all.sort_by! { |m| m.downcase }
@@ -315,10 +315,10 @@ module Brightpearl
315
315
  # Draws the actual table of branches.
316
316
  # @return void
317
317
  def show_branches_draw_table(brightpearl_code, brightpearl_db)
318
- current_code_branch = current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
319
- current_db_branch = current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
318
+ current_code_branch = current_branch_for_repo(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE))
319
+ current_db_branch = current_branch_for_repo(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB))
320
320
  column_width = [2, 20, 23, 15, 34, 1, 34, 15, 23, 20, 1]
321
- Brightpearl::Tools::validate_report_width(column_width)
321
+ App::Tools::validate_report_width(column_width)
322
322
  puts "\n"
323
323
  table(:border => false) do
324
324
  row do
@@ -345,7 +345,7 @@ module Brightpearl
345
345
  row do
346
346
  code_accent, code_color, code_star, db_accent, db_color, db_star = show_branches_get_colors(code_branch, current_code_branch, current_db_branch, db_branch)
347
347
  column("#{code_star}", :color => code_color)
348
- column(Brightpearl::Tools::time_passed_since(code_time_adjusted), :color => code_color)
348
+ column(App::Tools::time_passed_since(code_time_adjusted), :color => code_color)
349
349
  column(code_branch[:"#{COMMITTER_NAME}"], :color => code_color)
350
350
  column(code_branch[:"#{COMMITTER_DATE}"].strftime('%d %^b %H:%M'), :color => code_color)
351
351
  column(code_branch[:"#{REFNAME}"], :color => code_accent)
@@ -353,7 +353,7 @@ module Brightpearl
353
353
  column(db_branch[:"#{REFNAME}"], :color => db_accent)
354
354
  column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : db_branch[:"#{COMMITTER_DATE}"].strftime('%d %^b %H:%M'), :color => db_color)
355
355
  column(db_branch[:"#{COMMITTER_NAME}"], :color => db_color)
356
- column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : Brightpearl::Tools::time_passed_since(db_branch[:"#{COMMITTER_DATE}"] - (1 / 24.0)), :color => db_color)
356
+ column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : App::Tools::time_passed_since(db_branch[:"#{COMMITTER_DATE}"] - (1 / 24.0)), :color => db_color)
357
357
  column("#{db_star}", :color => db_color)
358
358
  end
359
359
  end
@@ -370,7 +370,7 @@ module Brightpearl
370
370
  column(db_branch[:"#{REFNAME}"], :color => db_accent)
371
371
  column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : db_branch[:"#{COMMITTER_DATE}"].strftime('%d %^b %H:%M'), :color => db_color)
372
372
  column(db_branch[:"#{COMMITTER_NAME}"], :color => db_color)
373
- column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : Brightpearl::Tools::time_passed_since(db_branch[:"#{COMMITTER_DATE}"]), :color => db_color)
373
+ column((db_branch[:"#{COMMITTER_DATE}"] == nil) ? MDASH : App::Tools::time_passed_since(db_branch[:"#{COMMITTER_DATE}"]), :color => db_color)
374
374
  column('')
375
375
  end
376
376
  end
@@ -426,17 +426,17 @@ module Brightpearl
426
426
  # @return void
427
427
  def show_branches_divider(column_width, color = 'white')
428
428
  row do
429
- column(Brightpearl::Terminal::fill(column_width[0], MDASH), :color => color)
430
- column(Brightpearl::Terminal::fill(column_width[1], MDASH), :color => color)
431
- column(Brightpearl::Terminal::fill(column_width[2], MDASH), :color => color)
432
- column(Brightpearl::Terminal::fill(column_width[3], MDASH), :color => color)
433
- column(Brightpearl::Terminal::fill(column_width[4], MDASH), :color => color)
434
- column(Brightpearl::Terminal::fill(column_width[5], MDASH), :color => color)
435
- column(Brightpearl::Terminal::fill(column_width[6], MDASH), :color => color)
436
- column(Brightpearl::Terminal::fill(column_width[7], MDASH), :color => color)
437
- column(Brightpearl::Terminal::fill(column_width[8], MDASH), :color => color)
438
- column(Brightpearl::Terminal::fill(column_width[9], MDASH), :color => color)
439
- column(Brightpearl::Terminal::fill(column_width[10], MDASH), :color => color)
429
+ column(App::Terminal::fill(column_width[0], MDASH), :color => color)
430
+ column(App::Terminal::fill(column_width[1], MDASH), :color => color)
431
+ column(App::Terminal::fill(column_width[2], MDASH), :color => color)
432
+ column(App::Terminal::fill(column_width[3], MDASH), :color => color)
433
+ column(App::Terminal::fill(column_width[4], MDASH), :color => color)
434
+ column(App::Terminal::fill(column_width[5], MDASH), :color => color)
435
+ column(App::Terminal::fill(column_width[6], MDASH), :color => color)
436
+ column(App::Terminal::fill(column_width[7], MDASH), :color => color)
437
+ column(App::Terminal::fill(column_width[8], MDASH), :color => color)
438
+ column(App::Terminal::fill(column_width[9], MDASH), :color => color)
439
+ column(App::Terminal::fill(column_width[10], MDASH), :color => color)
440
440
  end
441
441
  end
442
442
 
@@ -451,23 +451,23 @@ module Brightpearl
451
451
  # @return void
452
452
  def update_origin(repo_dir = nil)
453
453
  validate_repo_dir(repo_dir)
454
- unless @origin_updated_code && repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE) ||
455
- @origin_updated_db && repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB) ||
454
+ unless @origin_updated_code && repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE) ||
455
+ @origin_updated_db && repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB) ||
456
456
  @origin_updated_code && @origin_updated_db && repo_dir.nil?
457
457
 
458
- Brightpearl::Terminal::output("Updating origin (#{get_repo_shorthand(repo_dir)})")
458
+ App::Terminal::output("Updating origin (#{get_repo_shorthand(repo_dir)})")
459
459
  case repo_dir
460
- when Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)
460
+ when App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)
461
461
  @origin_updated_code = true
462
- Brightpearl::Terminal::command(['git fetch -p'], Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
463
- when Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)
462
+ App::Terminal::command(['git fetch -p'], App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE))
463
+ when App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)
464
464
  @origin_updated_db = true
465
- Brightpearl::Terminal::command(['git fetch -p'], Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
465
+ App::Terminal::command(['git fetch -p'], App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB))
466
466
  else
467
467
  @origin_updated_code = true
468
468
  @origin_updated_db = true
469
469
  repo_loop.each do |repo_dir_inner|
470
- Brightpearl::Terminal::command(['git fetch -p'], repo_dir_inner)
470
+ App::Terminal::command(['git fetch -p'], repo_dir_inner)
471
471
  end
472
472
  end
473
473
  end
@@ -478,13 +478,13 @@ module Brightpearl
478
478
  # @return void
479
479
  def merge_master_into_current_branch(repo_dir, push_to_origin = true)
480
480
  current_branch = current_branch_for_repo(repo_dir)
481
- if current_branch == Brightpearl::Git::MASTER
481
+ if current_branch == App::Git::MASTER
482
482
  return
483
483
  end
484
484
  commands = Array.new
485
485
  commands << 'git checkout master'
486
486
  commands << 'git pull'
487
- if current_branch != Brightpearl::Git::MASTER
487
+ if current_branch != App::Git::MASTER
488
488
  commands << "git checkout #{current_branch}"
489
489
  commands << 'git pull'
490
490
  commands << 'git merge master'
@@ -492,7 +492,7 @@ module Brightpearl
492
492
  if push_to_origin
493
493
  commands << 'git push'
494
494
  end
495
- Brightpearl::Terminal::command(commands, repo_dir)
495
+ App::Terminal::command(commands, repo_dir)
496
496
  end
497
497
 
498
498
  # Makes sure that both BP-CODE & BP-DB are on the same branch.
@@ -518,24 +518,25 @@ module Brightpearl
518
518
  end
519
519
 
520
520
  # Checks if you have staged changes in current repo and if so, prompts to stash them.
521
+ # @param force_stash_message -- If a string is passed, will be displayed as the "FORCE STASH WARNING" and a stash will be enforced.
521
522
  # @return void
522
523
  def check_for_uncommitted_files(automatic = false, force_stash_message = false)
523
524
  repo_loop.each do |repo_dir|
524
525
  results = `cd #{repo_dir} && git status | grep 'Changes '`
525
526
  results = results.split("\n")
526
527
  if results.any?
527
- Brightpearl::Terminal::command(['git status'], repo_dir)
528
+ App::Terminal::command(['git status'], repo_dir)
528
529
  current_branch = current_branch_for_repo(repo_dir)
529
- if automatic || Brightpearl::Terminal::prompt_yes_no("Found uncommitted files on branch #{Brightpearl::Terminal::format_branch(current_branch)}", nil, "Would you like to #{Brightpearl::Terminal::format_action('stash')}\x1B[38;5;89m these changes before continuing?")
530
- Brightpearl::Terminal::output('Stashing working changes', Brightpearl::Terminal::MSG_AUTOMATIC) if automatic
531
- Brightpearl::Terminal::command('git stash', repo_dir)
530
+ if automatic || App::Terminal::prompt_yes_no("Found uncommitted files on branch #{App::Terminal::format_branch(current_branch)}", nil, "Would you like to #{App::Terminal::format_action('stash')}\x1B[38;5;89m these changes before continuing?")
531
+ App::Terminal::output('Stashing working changes', App::Terminal::MSG_AUTOMATIC) if automatic
532
+ App::Terminal::command('git stash', repo_dir)
532
533
  else
533
534
  if force_stash_message != false
534
535
  abort_message = force_stash_message.is_a?(String) ? force_stash_message : nil
535
- Brightpearl::Terminal::abort(abort_message,["In this particular scenario, you #{Brightpearl::Terminal::format_invalid('cannot continue', true)} unless you stash your changes."], true, false)
536
+ App::Terminal::abort(abort_message,["In this particular scenario, you #{App::Terminal::format_invalid('cannot continue', true)} unless you stash your changes."], true, false)
536
537
  end
537
- unless Brightpearl::Terminal::prompt_yes_no('Continue without stashing?', "By selecting #{Brightpearl::Terminal::format_action('Yes')}\x1B[38;5;240m, you're changes will be carried over to the next branch.", nil, false)
538
- Brightpearl::Terminal::abort(nil, nil, true, false)
538
+ unless App::Terminal::prompt_yes_no('Continue without stashing?', "By selecting #{App::Terminal::format_action('Yes')}\x1B[38;5;240m, you're changes will be carried over to the next branch.", nil, false)
539
+ App::Terminal::abort(nil, nil, true, false)
539
540
  end
540
541
  end
541
542
  end
@@ -555,14 +556,14 @@ module Brightpearl
555
556
  stashes_to_skip = 0
556
557
  while results.any?
557
558
  stash_name = results[0].split(/:/).first
558
- if automatic || Brightpearl::Terminal::prompt_yes_no("Found the following stash on #{Brightpearl::Terminal::format_branch(current_branch_for_repo(repo_dir))}", "#{results[0]}", "Would you like to #{Brightpearl::Terminal::format_action('apply')}\x1B[38;5;89m this stash now?")
559
- Brightpearl::Terminal::output('Un-stashing working changes', Brightpearl::Terminal::MSG_AUTOMATIC) if automatic
560
- stash_apply_successful = Brightpearl::Terminal::command(["git stash apply #{stash_name}"], repo_dir)
559
+ if automatic || App::Terminal::prompt_yes_no("Found the following stash on #{App::Terminal::format_branch(current_branch_for_repo(repo_dir))}", "#{results[0]}", "Would you like to #{App::Terminal::format_action('apply')}\x1B[38;5;89m this stash now?")
560
+ App::Terminal::output('Un-stashing working changes', App::Terminal::MSG_AUTOMATIC) if automatic
561
+ stash_apply_successful = App::Terminal::command(["git stash apply #{stash_name}"], repo_dir)
561
562
  if stash_apply_successful[0] == true
562
- Brightpearl::Terminal::command("git stash drop #{stash_name}", repo_dir)
563
+ App::Terminal::command("git stash drop #{stash_name}", repo_dir)
563
564
  results = check_for_stash_get_stashes(repo_dir)
564
565
  else
565
- Brightpearl::Terminal::error("Stash could not be applied successfully (and therefore wasn't dropped).", ["#{results[0]}", nil, "Please #{Brightpearl::Terminal::format_action('open an IDE')} and resolve your conflicts before continuing.", "Don't forget to drop your stash afterwards with: #{Brightpearl::Terminal::format_command("git stash drop #{stash_name}")}"], false)
566
+ App::Terminal::error("Stash could not be applied successfully (and therefore wasn't dropped).", ["#{results[0]}", nil, "Please #{App::Terminal::format_action('open an IDE')} and resolve your conflicts before continuing.", "Don't forget to drop your stash afterwards with: #{App::Terminal::format_command("git stash drop #{stash_name}")}"], false)
566
567
  results = []
567
568
  end
568
569
  else
@@ -588,27 +589,29 @@ module Brightpearl
588
589
  end
589
590
 
590
591
  # Checks if both repos are on same branch and displays either ERROR or WARNING.
591
- # @return void
592
+ # @return boolean -- TRUE if same branch, FALSE if not.
592
593
  def check_for_same_branch(display = SAME_BRANCH_WARNING)
593
- branch_code = current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
594
- branch_db = current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
594
+ branch_code = current_branch_for_repo(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE))
595
+ branch_db = current_branch_for_repo(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB))
595
596
  if branch_code != branch_db
596
597
  case display
597
598
  when SAME_BRANCH_WARNING
598
- Brightpearl::Terminal::warning("You're on #{Brightpearl::Terminal::format_highlight('2 different branches')}", [
599
- "#{Brightpearl::Terminal::format_directory(get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)))} is on #{Brightpearl::Terminal::format_branch(branch_code)}",
600
- "#{Brightpearl::Terminal::format_directory(get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)))} is on #{Brightpearl::Terminal::format_branch(branch_db)}"
599
+ App::Terminal::warning("You're on #{App::Terminal::format_highlight('2 different branches')}", [
600
+ "#{App::Terminal::format_directory(get_repo_shorthand(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)))} is on #{App::Terminal::format_branch(branch_code)}",
601
+ "#{App::Terminal::format_directory(get_repo_shorthand(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)))} is on #{App::Terminal::format_branch(branch_db)}"
601
602
  ])
602
603
  when SAME_BRANCH_ERROR
603
604
  else
604
- Brightpearl::Terminal::error("You're on #{Brightpearl::Terminal::format_highlight('2 different branches')}", [
605
- "#{Brightpearl::Terminal::format_directory(get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)))} is on #{Brightpearl::Terminal::format_branch(branch_code)}",
606
- "#{Brightpearl::Terminal::format_directory(get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)))} is on #{Brightpearl::Terminal::format_branch(branch_db)}",
605
+ App::Terminal::error("You're on #{App::Terminal::format_highlight('2 different branches')}", [
606
+ "#{App::Terminal::format_directory(get_repo_shorthand(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)))} is on #{App::Terminal::format_branch(branch_code)}",
607
+ "#{App::Terminal::format_directory(get_repo_shorthand(App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)))} is on #{App::Terminal::format_branch(branch_db)}",
607
608
  nil,
608
609
  'You cannot run this command unless both of your repos are on the same branch.'
609
610
  ])
610
611
  end
612
+ return false
611
613
  end
614
+ true
612
615
  end
613
616
 
614
617
  # Returns an array that include info for BOTH repos. Finds out whether a branch exists and if it's current or not
@@ -621,18 +624,18 @@ module Brightpearl
621
624
  validate_code_db(code_db)
622
625
  case code_db
623
626
  when CODE
624
- if repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)
627
+ if repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)
625
628
  data << nil
626
629
  next
627
630
  end
628
631
  else
629
- if repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)
632
+ if repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE)
630
633
  data << nil
631
634
  next
632
635
  end
633
636
  end
634
637
  end
635
- Brightpearl::Terminal::output("Retrieving branch data for #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x80\x94 (#{get_repo_shorthand(repo_dir)})")
638
+ App::Terminal::output("Retrieving branch data for #{App::Terminal::format_branch(branch_name)} \xe2\x80\x94 (#{get_repo_shorthand(repo_dir)})")
636
639
  repo_data = {}
637
640
  repo_data
638
641
  repo_data[:"#{BRANCH_NAME}"] = branch_name
@@ -650,12 +653,12 @@ module Brightpearl
650
653
  repo_data[:"#{BRANCH_IS_UP_TO_DATE}"] = nil
651
654
  end
652
655
  # Check branch exists
653
- unless branch_exists(branch_name, repo_dir, Brightpearl::Git::LOCAL)
656
+ unless branch_exists(branch_name, repo_dir, App::Git::LOCAL)
654
657
  repo_data[:"#{BRANCH_EXISTS_LOCALLY}"] = false
655
- Brightpearl::Terminal::output("Branch #{Brightpearl::Terminal::format_branch(branch_name)} not found #{Brightpearl::Terminal::format_action('locally')} in #{Brightpearl::Terminal::format_directory(get_repo_shorthand(repo_dir))}", Brightpearl::Terminal::MSG_WARNING) if verbose
656
- Brightpearl::Terminal::output('Checking origin') if verbose
657
- unless branch_exists(branch_name, repo_dir, Brightpearl::Git::REMOTE)
658
- Brightpearl::Terminal::output("Branch #{Brightpearl::Terminal::format_branch(branch_name)} not found #{Brightpearl::Terminal::format_action('remotely')} in #{Brightpearl::Terminal::format_directory(get_repo_shorthand(repo_dir))}", Brightpearl::Terminal::MSG_WARNING) if verbose
658
+ App::Terminal::output("Branch #{App::Terminal::format_branch(branch_name)} not found #{App::Terminal::format_action('locally')} in #{App::Terminal::format_directory(get_repo_shorthand(repo_dir))}", App::Terminal::MSG_WARNING) if verbose
659
+ App::Terminal::output('Checking origin') if verbose
660
+ unless branch_exists(branch_name, repo_dir, App::Git::REMOTE)
661
+ App::Terminal::output("Branch #{App::Terminal::format_branch(branch_name)} not found #{App::Terminal::format_action('remotely')} in #{App::Terminal::format_directory(get_repo_shorthand(repo_dir))}", App::Terminal::MSG_WARNING) if verbose
659
662
  repo_data[:"#{BRANCH_EXISTS}"] = false
660
663
  data << repo_data
661
664
  next
@@ -736,11 +739,58 @@ module Brightpearl
736
739
  # @return Array
737
740
  def repo_loop
738
741
  Array[
739
- Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE),
740
- Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)
742
+ App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE),
743
+ App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)
741
744
  ]
742
745
  end
743
746
 
747
+ # Returns short-hand string for repo.
748
+ # @return String
749
+ def get_repo_shorthand(repo_dir)
750
+ repo_dir == App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE) ? 'brightpearl-code' : 'brightpearl-db'
751
+ end
752
+
753
+ # Checks that a branch DOESN'T exist anywhere (local, remote, code and db). If it does, will exit with error.
754
+ # @return void
755
+ def check_branch_does_not_exist_anywhere(branch_name)
756
+ App::Terminal::info("Checking that branch #{App::Terminal::format_branch(branch_name)} doesn't already exist somewhere")
757
+ if branch_exists_anywhere(branch_name)
758
+ App::Terminal::error('Branch already exists', "Cannot continue because a branch named #{App::Terminal::format_branch(branch_name)}\x1B[38;5;240m already exists somewhere.", true)
759
+ end
760
+ end
761
+
762
+ # Checks that a branch DOES exist somewhere (local, remote, code or db). If it does not, will exit with error.
763
+ # @return void
764
+ def check_branch_exists_somewhere(branch_name)
765
+ unless branch_exists_anywhere(branch_name)
766
+ App::Terminal::error("Branch doesn't exist", "Cannot continue because branch #{App::Terminal::format_branch(branch_name)}\x1B[38;5;240m doesn't exist.", true)
767
+ end
768
+ end
769
+
770
+ # Asks if you would like to setup remote tracking. WILL ASSUME that branch doesn't have this (but won't actually check).
771
+ # @return void
772
+ def ask_to_setup_remote_tracking(current_branch, repo_dir)
773
+ tracking_setup_command = "git branch --set-upstream-to=origin/#{current_branch} #{current_branch}"
774
+ if App::Terminal::prompt_yes_no('Setup remote tracking?', ["No tracking information found for #{App::Terminal::format_branch(current_branch)} on #{App::Terminal::format_directory(get_repo_shorthand(repo_dir))}", "By continuing, the script will automatically setup your tracking information with: #{tracking_setup_command}"])
775
+ App::Terminal::output("Setting tracking information for this branch to origin/#{current_branch}")
776
+ if !branch_exists(current_branch, repo_dir, App::Git::REMOTE)
777
+ App::Terminal::command("git push -u origin #{current_branch}", repo_dir)
778
+ end
779
+ App::Terminal::command(tracking_setup_command, repo_dir)
780
+ else
781
+ App::Terminal::warning('No remote tracking setup', "You have not setup remote tracking for branch #{App::Terminal::format_branch(current_branch)}", false)
782
+ end
783
+ end
784
+
785
+ # Get list of files that have changed between 2 branches
786
+ # @return Array
787
+ def get_changed_files(repo_dir, branch_to_compare_to = "origin/#{App::Git::MASTER}")
788
+ validate_repo_dir(repo_dir)
789
+ command = "git diff #{branch_to_compare_to}..#{current_branch_for_repo(repo_dir)} --name-only"
790
+ App::Terminal::command_capture(command, repo_dir)
791
+ end
792
+
793
+
744
794
  # Validates that a parameter is either 'local' or 'remote'
745
795
  # @return void
746
796
  def validate_local_remote(local_remote)
@@ -761,8 +811,8 @@ module Brightpearl
761
811
  # @return void
762
812
  def validate_repo_dir(repo_dir)
763
813
  unless Array[
764
- Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE),
765
- Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)
814
+ App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_CODE),
815
+ App::Config.param(App::Config::WORKSTATION_PATH_TO_BP_DB)
766
816
  ].include?(repo_dir)
767
817
  abort("'#{repo_dir}' is not a valid directory.")
768
818
  end
@@ -776,41 +826,6 @@ module Brightpearl
776
826
  end
777
827
  end
778
828
 
779
- # Returns short-hand string for repo.
780
- # @return String
781
- def get_repo_shorthand(repo_dir)
782
- repo_dir == Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE) ? 'brightpearl-code' : 'brightpearl-db'
783
- end
784
-
785
- # Checks that a branch DOESN'T exist anywhere (local, remote, code and db). If it does, will exit with error.
786
- # @return void
787
- def check_branch_does_not_exist_anywhere(branch_name)
788
- Brightpearl::Terminal::info("Checking that branch #{Brightpearl::Terminal::format_branch(branch_name)} doesn't already exist somewhere")
789
- if branch_exists_anywhere(branch_name)
790
- Brightpearl::Terminal::error('Branch already exists', "Cannot continue because a branch named #{Brightpearl::Terminal::format_branch(branch_name)}\x1B[38;5;240m already exists somewhere.", true)
791
- end
792
- end
793
-
794
- # Checks that a branch DOES exist somewhere (local, remote, code or db). If it does not, will exit with error.
795
- # @return void
796
- def check_branch_exists_somewhere(branch_name)
797
- unless branch_exists_anywhere(branch_name)
798
- Brightpearl::Terminal::error("Branch doesn't exist", "Cannot continue because branch #{Brightpearl::Terminal::format_branch(branch_name)}\x1B[38;5;240m doesn't exist.", true)
799
- end
800
- end
801
-
802
- # Asks if you would like to setup remote tracking. WILL ASSUME that branch doesn't have this (but won't actually check).
803
- # @return void
804
- def ask_to_setup_remote_tracking(current_branch, repo_dir)
805
- tracking_setup_command = "git branch --set-upstream-to=origin/#{current_branch} #{current_branch}"
806
- if Brightpearl::Terminal::prompt_yes_no('Setup remote tracking?', ["No tracking information found for #{Brightpearl::Terminal::format_branch(current_branch)} on #{Brightpearl::Terminal::format_directory(get_repo_shorthand(repo_dir))}", "By continuing, the script will automatically setup your tracking information with: #{tracking_setup_command}"], Brightpearl::Terminal::MSG_WARNING)
807
- Brightpearl::Terminal::output("Setting tracking information for this branch to origin/#{current_branch}")
808
- Brightpearl::Terminal::command(tracking_setup_command, repo_dir)
809
- else
810
- Brightpearl::Terminal::warning('No remote tracking setup', "You have not setup remote tracking for branch #{Brightpearl::Terminal::format_branch(current_branch)}", false)
811
- end
812
- end
813
-
814
829
  end
815
830
 
816
831
  end
@@ -0,0 +1,89 @@
1
+ module App
2
+
3
+ class GitDelete
4
+
5
+ def self.delete_local(branch_name, confirm = true, git = nil)
6
+
7
+ @git = git.nil? ? App::Git.new : git
8
+
9
+ App::Terminal::output("Must check that branch is up-to-date with it's remote counter-part, otherwise DO NOT delete!", App::Terminal::MSG_TODO)
10
+ App::Terminal::output('Must check branch even exists.', App::Terminal::MSG_TODO)
11
+
12
+ if confirm
13
+ unless App::Terminal::prompt_yes_no("#{App::Terminal::format_action('locally delete')} branch #{App::Terminal::format_branch(branch_name)}?")
14
+ App::Terminal::abort
15
+ end
16
+ end
17
+
18
+ @git.repo_loop.each do |repo_dir|
19
+ commands = []
20
+ if @git.current_branch_for_repo(repo_dir) == branch_name
21
+ commands << 'git checkout master'
22
+ end
23
+ commands << "git branch -d #{branch_name}"
24
+ App::Terminal::command_capture(commands, repo_dir)
25
+ end
26
+
27
+ App::Terminal::success('Branch deleted', "Successfully #{App::Terminal::format_highlight('locally')} #{App::Terminal::format_action('deleted')} branch #{App::Terminal::format_branch(branch_name)}")
28
+
29
+ end
30
+
31
+ def self.delete_remote(branch_name, confirm = true, git = nil)
32
+
33
+ @git = git.nil? ? App::Git.new : git
34
+
35
+ App::Terminal::output('Must check branch even exists.', App::Terminal::MSG_TODO)
36
+
37
+ if confirm
38
+ unless App::Terminal::prompt_yes_no("#{App::Terminal::format_action('remotely delete')} branch #{App::Terminal::format_branch(branch_name)}?")
39
+ App::Terminal::abort
40
+ end
41
+ end
42
+
43
+ @git.repo_loop.each do |repo_dir|
44
+ unless @git.branch_exists(branch_name, repo_dir, App::Git::REMOTE)
45
+ puts "Branch \x1B[32m[#{branch_name}]\x1B[0m not found in: \x1B[33m#{repo_dir}\x1B[0m. Aborting \x1B[35mREMOTE DELETE\x1B[0m for this repo."
46
+ next
47
+ end
48
+ commands = [
49
+ "git branch --unset-upstream #{branch_name}",
50
+ "git push origin --delete #{branch_name}",
51
+ ]
52
+ App::Terminal::command_capture(commands, repo_dir)
53
+ end
54
+
55
+ App::Terminal::success('Branch deleted', "Successfully #{App::Terminal::format_highlight('remotely')} #{App::Terminal::format_action('deleted')} branch #{App::Terminal::format_branch(branch_name)}")
56
+
57
+ end
58
+
59
+ def self.delete_both(branch_name, confirm = true, git = nil)
60
+
61
+ @git = git.nil? ? App::Git.new : git
62
+
63
+ App::Terminal::output("Must check that branch is up-to-date with it's remote counter-part, otherwise DO NOT delete!", App::Terminal::MSG_TODO)
64
+ App::Terminal::output('Must check branch even exists.', App::Terminal::MSG_TODO)
65
+
66
+ if confirm
67
+ unless App::Terminal::prompt_yes_no("#{App::Terminal::format_action('locally & remotely delete')} branch #{App::Terminal::format_branch(branch_name)}?")
68
+ App::Terminal::abort
69
+ end
70
+ end
71
+
72
+ @git.repo_loop.each do |repo_dir|
73
+ commands = []
74
+ if @git.current_branch_for_repo(repo_dir) == branch_name
75
+ commands << 'git checkout master'
76
+ end
77
+ commands << "git branch -d #{branch_name}"
78
+ commands << "git branch --unset-upstream #{branch_name}"
79
+ commands << "git push origin --delete #{branch_name}"
80
+ App::Terminal::command_capture(commands, repo_dir)
81
+ end
82
+
83
+ App::Terminal::success('Branch deleted', "Successfully #{App::Terminal::format_highlight('locally')} and #{App::Terminal::format_highlight('remotely')} #{App::Terminal::format_action('deleted')} branch #{App::Terminal::format_branch(branch_name)}")
84
+
85
+ end
86
+
87
+ end
88
+
89
+ end
data/lib/core/jira.rb CHANGED
@@ -1,4 +1,4 @@
1
- module Brightpearl
1
+ module App
2
2
 
3
3
  class Jira
4
4
 
@@ -19,7 +19,7 @@ module Brightpearl
19
19
  end
20
20
  end
21
21
  if jira_number.nil?
22
- Brightpearl::Terminal::error('Invalid Jira Number', "The Jira Number must be a 4-5 digit number. You tried to pass: #{Brightpearl::Terminal::format_invalid(argument)}", true)
22
+ App::Terminal::error('Invalid Jira Number', "The Jira Number must be a 4-5 digit number. You tried to pass: #{App::Terminal::format_invalid(argument)}", true)
23
23
  end
24
24
  jira_number
25
25
  end