brightpearl-cli 1.3.0 → 1.4.0

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.
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