brightpearl-cli 2.5.0 → 2.6.0

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
  SHA1:
3
- metadata.gz: 5511302aa94c45f7e4df5f5403ce2e4e0d960990
4
- data.tar.gz: 385903c655d76a683bb9b7209beb46ce92546daa
3
+ metadata.gz: 51a9cc4563e9b20fd81701be0bdadfa0940b7f46
4
+ data.tar.gz: fcf47560efc4fa89341b7ac5170baeb72965b990
5
5
  SHA512:
6
- metadata.gz: 58f651cea48fb26cfd926c3b5833b75ea5e91f1219237bfc3cf5d5b9b3e1e575e311e6092f538c5ace5e33e92e922aff3d37226f29319bd202888e19756ec494
7
- data.tar.gz: aea53efeae952d2cf08beb008c2e6a8402c39ad07b3a8c5763ee975ed122be0dc2820fda45b660597d7dd6473d2c8d9a819936181f3d734e8247ef563f131cf1
6
+ metadata.gz: 1bdec6a11746ae770483a1e8f0598e6ad10c6511e96b2d69a459ad5fbead22bcf36e816541084286d3c87a471c738b726d193c441afa49901ce09b434e82a0be
7
+ data.tar.gz: d4e30df9916e8ff9a8e024eea98533998910c9094bf6f23e57a21592b90b37596a29ba3fd3293889aefa52dcf57d6df60cb01bd753e1cec7b85b2f71afc0c1c4
@@ -13,9 +13,7 @@ require 'core/pom'
13
13
  require 'core/sql_update'
14
14
  require 'core/tools'
15
15
  require 'core/validate'
16
- require 'core/vm'
17
16
  require 'routes/build'
18
- require 'routes/dummy_order'
19
17
  require 'routes/fix'
20
18
  require 'routes/git_branch'
21
19
  require 'routes/git_checkout'
@@ -42,15 +40,19 @@ require 'routes/test'
42
40
  # SHARED
43
41
  require 'core/config'
44
42
  require 'core/encrypter'
43
+ require 'core/ssh'
45
44
  require 'core/terminal'
46
45
  require 'core/utils_files'
47
46
  require 'core/utils_routes'
48
47
  require 'core/utils_strings'
48
+ require 'core/utils_tools'
49
49
  require 'routes/setup'
50
50
  require 'routes/ssh'
51
51
 
52
52
  module App
53
53
 
54
+ DEFAULT_OPTION = "\xe2\x80\x94 \x1B[38;5;148mDefault\x1B[0m"
55
+
54
56
  def self.execute
55
57
 
56
58
  begin
@@ -64,6 +66,8 @@ module App
64
66
  # COLOR OF TITLE TEXT
65
67
  title_color = 255
66
68
 
69
+ beta = App::Config::param(ConfigUnique::BETA) == 'true' ? true : false
70
+
67
71
  app.version VERSION
68
72
  app.summary "\x1B[38;5;166mBRIGHTPEARL-CLI\x1B[0m \x1B[38;5;240m\xe2\x80\x94 BETA\x1B[0m"
69
73
  app.description "\x1B[38;5;#{title_color}mA command line utility for Brightpearl developers and QAs.\nUsed for automating daily work flows & completing repetitive tasks quicker with less errors.\nDesigned to work from anywhere on your workstation.\n\nUse #{App::Terminal::format_command('app')}\x1B[38;5;#{title_color}m or #{App::Terminal::format_command('bp')}\x1B[38;5;#{title_color}m to run.\x1B[0m"
@@ -72,7 +76,7 @@ module App
72
76
  app.command :build, :aliases => [:b] do |build|
73
77
  build.summary 'Build (and deploy) Java services'
74
78
  build.options do |opts|
75
- opts.opt :serviceOnly, 'Build service only (default)', :short => '-s', :long => '--service-only', :type => :boolean
79
+ opts.opt :serviceOnly, "Build service only #{DEFAULT_OPTION}", :short => '-s', :long => '--service-only', :type => :boolean
76
80
  opts.opt :apiOnly, 'Build API only', :short => '-a', :long => '--api-only', :type => :boolean
77
81
  opts.opt :both, 'Build both', :short => '-b', :long => '--both', :type => :boolean
78
82
  opts.opt :deploy, 'Deploy to SkyFactory', :short => '-d', :long => '--deploy', :type => :boolean
@@ -82,39 +86,12 @@ module App
82
86
  end
83
87
  end
84
88
 
85
- # DUMMY
86
- app.command :dummy, :aliases => [:d] do |dummy|
87
-
88
- dummy.summary 'Insert dummy data into the App'
89
-
90
- # DUMMY ORDER
91
- dummy.command :order, :aliases => [:o] do |dummy_order|
92
- dummy_order.summary 'Create dummy orders'
93
- dummy_order.options do |opts|
94
- opts.opt :salesOrder, 'Create sales order', :short => '-s', :long => '--sales-order', :type => :boolean
95
- opts.opt :salesCredit, 'Create sales credit', :short => '-S', :long => '--sales-credit', :type => :boolean
96
- opts.opt :purchaseOrder, 'Create purchase order', :short => '-p', :long => '--purchase-order', :type => :boolean
97
- opts.opt :purchaseCredit, 'Create purchase credit', :short => '-P', :long => '--purchase-credit', :type => :boolean
98
- opts.opt :times, 'Specify number of orders (maximum 50)', :short => '-x', :long => '--times', :type => :int
99
- end
100
- dummy_order.action do |opts, args|
101
- AppCommand::DummyOrder.new(opts, args).execute
102
- end
103
- end
104
-
105
- # CREATE (DEFAULT)
106
- dummy.action do
107
- system('bp d -h')
108
- end
109
-
110
- end
111
-
112
89
  # FIX
113
90
  app.command :fix, :aliases => [:f] do |fix|
114
91
  fix.summary 'Quick fixes for common problems'
115
92
  fix.options do |opts|
116
- opts.opt :login_sessions, 'LOGIN - Clear sessions to fix login problem(s)', :short => '-l', :long => '--login-sessions', :type => :boolean
117
- opts.opt :sql_updates, 'SQL UPDATE(S) - Run SQL updates from a specific update (specified as 1st argument).', :short => '-s', :long => '--sql-updates', :type => :boolean
93
+ opts.opt :login_sessions, 'Fix login problem(s) by clearing out the sessions table.', :short => '-l', :long => '--login-sessions', :type => :boolean
94
+ opts.opt :sql_mode, 'Fix problem when SQL goes into "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" mode.', :short => '-s', :long => '--sql-mode', :type => :boolean
118
95
  end
119
96
  fix.action do |opts, args|
120
97
  AppCommand::Fix.new(opts, args).execute
@@ -122,7 +99,6 @@ module App
122
99
  end
123
100
 
124
101
  # GIT
125
-
126
102
  app.command :git, :aliases => [:g] do |git|
127
103
 
128
104
  git.summary 'All git related functionality'
@@ -134,7 +110,7 @@ module App
134
110
  opts.opt :local, 'List local branches', :short => '-l', :long => '--local', :type => :boolean
135
111
  opts.opt :remote, 'List remote branches', :short => '-r', :long => '--remote', :type => :boolean
136
112
  opts.opt :sortDate, 'Sort by date', :short => '-d', :long => '--sort-date', :type => :boolean
137
- opts.opt :sortRefname, 'Sort by branch name (default)', :short => '-n', :long => '--sort-refname', :type => :boolean
113
+ opts.opt :sortRefname, "Sort by branch name #{DEFAULT_OPTION}", :short => '-n', :long => '--sort-refname', :type => :boolean
138
114
  opts.opt :detailed, 'Show a more detailed output w/Jira data, etc. (takes longer)', :short => '-D', :long => '--detailed', :type => :boolean
139
115
  end
140
116
  git_branch.action do |opts, args|
@@ -187,19 +163,20 @@ module App
187
163
  d << "\n"
188
164
  d << "\nAlternatively, use the #{App::Terminal::format_flag('o', false)} and #{App::Terminal::format_flag('f', false)} flags to specify your source branches using a temporary file:"
189
165
  d << "\n"
190
- d << "\n #{App::Terminal::format_flag('o', false)} opens #{App::Terminal::format_directory(App::Enum::GIT_MERGE_DEFAULT_FILE)}"
191
- d << "\n #{App::Terminal::format_flag('f', false)} parses the contents of #{App::Terminal::format_directory(App::Enum::GIT_MERGE_DEFAULT_FILE)} as source branches (one branch per line)"
166
+ d << "\n #{App::Terminal::format_flag('o', false)} opens #{App::Terminal::format_directory(App::Git::GIT_MERGE_DEFAULT_FILE)}"
167
+ d << "\n #{App::Terminal::format_flag('f', false)} parses the contents of #{App::Terminal::format_directory(App::Git::GIT_MERGE_DEFAULT_FILE)} as source branches (one branch per line)"
192
168
  d << "\n"
193
169
  d << "\n #{App::Terminal::format_command('bp g m -o')} \x1B[0m"
194
170
  d << "\n #{App::Terminal::format_command('bp g m -f')} \x1B[0m"
195
171
  d << "\n #{App::Terminal::format_command('bp g m -f target_branch')} \x1B[0m"
196
172
  git_merge.description d
197
173
  git_merge.options do |opts|
198
- opts.opt :open_file, "Creates (and opens) #{App::Terminal::format_directory(App::Enum::GIT_MERGE_DEFAULT_FILE)}", :short => '-o', :long => '--open-file', :type => :boolean
174
+ opts.opt :open_file, "Creates (and opens) #{App::Terminal::format_directory(App::Git::GIT_MERGE_DEFAULT_FILE)}", :short => '-o', :long => '--open-file', :type => :boolean
199
175
  opts.opt :from_file, 'Get branch names from file (1 branch per line)', :short => '-f', :long => '--from-file', :type => :boolean
200
- opts.opt :delete_source_branches_local, "Delete all source branches (locally) in #{App::Terminal::format_directory(App::Enum::GIT_MERGE_DEFAULT_FILE)}", :short => '-d', :long => '--delete-local', :type => :boolean
201
- opts.opt :delete_source_branches_remote, "Delete all source branches (remotely) in #{App::Terminal::format_directory(App::Enum::GIT_MERGE_DEFAULT_FILE)}", :short => '-D', :long => '--delete-remote', :type => :boolean
176
+ opts.opt :delete_source_branches_local, "Delete all source branches (locally) in #{App::Terminal::format_directory(App::Git::GIT_MERGE_DEFAULT_FILE)}", :short => '-d', :long => '--delete-local', :type => :boolean
177
+ opts.opt :delete_source_branches_remote, "Delete all source branches (remotely) in #{App::Terminal::format_directory(App::Git::GIT_MERGE_DEFAULT_FILE)}", :short => '-D', :long => '--delete-remote', :type => :boolean
202
178
  opts.opt :sanity_check, 'Run sanity check. Submit source/target branches same as you would during a merge.', :short => '-s', :long => '--sanity-check', :type => :boolean
179
+ opts.opt :build_services, "Determine what services need to be built before merging to #{App::Terminal::format_branch(App::Git::MASTER)}.", :short => '-b', :long => '--build-services', :type => :boolean
203
180
  end
204
181
  git_merge.action do |opts, args|
205
182
  AppCommand::GitMerge.new(opts, args).execute
@@ -286,7 +263,7 @@ module App
286
263
  production.command :logs, :aliases => [:l] do |production_logs|
287
264
  production_logs.summary 'Scan production logs'
288
265
  production_logs.options do |opts|
289
- opts.opt :watchPHP, 'Watch PHP logs (default)', :short => '-p', :long => '--watch-php-logs', :type => :boolean
266
+ opts.opt :watchPHP, "Watch PHP logs #{DEFAULT_OPTION}", :short => '-p', :long => '--watch-php-logs', :type => :boolean
290
267
  opts.opt :watchJava, 'Watch Java logs', :short => '-j', :long => '--watch-java-logs', :type => :boolean
291
268
  opts.opt :skipFetch, 'Skip fetching of new logs (quicker)', :short => '-s', :long => '--skip-fetch', :type => :boolean
292
269
  opts.opt :compare, 'Compare logs between 2 versions (requires 2 parameters -- source & target version)', :short => '-c', :long => '--compare', :type => :boolean
@@ -381,7 +358,7 @@ module App
381
358
  end
382
359
 
383
360
  # SSH - SSH
384
- app.command :ssh, :aliases => [:s] do |ssh|
361
+ app.command :ssh, :aliases => [:sh] do |ssh|
385
362
  ssh.summary 'SSH into various stuff.'
386
363
  ssh.action do |opts, args|
387
364
  AppCommand::SSH.new(opts, args).execute
@@ -390,7 +367,13 @@ module App
390
367
 
391
368
  # TAIL
392
369
  app.command :tail, :aliases => [:T] do |tail|
393
- tail.summary 'Tail various logs (all catalina.out by default)'
370
+ tail.summary 'Tail various logs'
371
+ tail.options do |opts|
372
+ opts.opt :catalina, "Tail #{App::Terminal::format_directory('/var/log/tomcat/*/catalina.out')}", :short => '-c', :long => '--catalina', :type => :boolean
373
+ opts.opt :access, "Tail #{App::Terminal::format_directory('/var/log/tomcat/*/access*')}", :short => '-a', :long => '--access', :type => :boolean
374
+ opts.opt :php, "Tail #{App::Terminal::format_directory('/var/log/php/php.log')}", :short => '-p', :long => '--php', :type => :boolean
375
+ opts.opt :phpunit, "Tail #{App::Terminal::format_directory('/tmp/phpunit.error.log')}", :short => '-P', :long => '--php-unit', :type => :boolean
376
+ end
394
377
  tail.action do |opts, args|
395
378
  AppCommand::Tail.new(opts, args).execute
396
379
  end
@@ -398,12 +381,12 @@ module App
398
381
 
399
382
  # TEST
400
383
  app.command :test, :aliases => [:t] do |test|
401
- test.summary 'Run various tests (PHPUnit by default)'
384
+ test.summary 'Run various tests'
402
385
  test.options do |opts|
403
386
  opts.opt :cucumber, 'Run Cucumber tests', :short => '-c', :long => '--cucumber', :type => :boolean
404
387
  opts.opt :fitnesse, 'Run FitNesse tests', :short => '-f', :long => '--fitnesse', :type => :boolean
405
- opts.opt :php, 'Run PHPUnit tests (default)', :short => '-p', :long => '--php-unit', :type => :boolean
406
- opts.opt :php_local, 'Run PHPUnit tests locally', :short => '-P', :long => '--php-unit-local', :type => :boolean
388
+ opts.opt :php, "Run PHPUnit tests #{DEFAULT_OPTION}", :short => '-p', :long => '--php-unit', :type => :boolean
389
+ opts.opt :behat, 'Run Behat tests', :short => '-b', :long => '--behat', :type => :boolean
407
390
  opts.opt :ruby, 'Run Ruby UI tests', :short => '-r', :long => '--ruby-ui', :type => :boolean
408
391
  end
409
392
  test.action do |opts, args|
data/lib/core/config.rb CHANGED
@@ -44,7 +44,7 @@ module App
44
44
  puts "CLI stands for 'Command Line Interface'."
45
45
  puts
46
46
  puts "The first thing you'll need to do is setup your configuration file."
47
- puts "The file is located at: #{App::Terminal::format_directory(App::Config)}"
47
+ puts "The file is located at: #{App::Terminal::format_directory(ConfigUnique::CONFIG_FILE)}"
48
48
  puts
49
49
  puts "You probably won't have this file so the program will create it for you."
50
50
  puts "\n"
@@ -101,6 +101,19 @@ module App
101
101
  @params.has_key?(param_name)
102
102
  end
103
103
 
104
+ # Get custom keys from the config file (IE: ssh_ec2=user|host|pem)
105
+ # @return String
106
+ def self.get_custom_key(prefix, config_key)
107
+ if config_key.nil?
108
+ App::Terminal::error("The script requires a config parameter from your #{App::Terminal::format_directory(ConfigUnique::CONFIG_FILE)} file", "The key should have a prefix of: #{App::Terminal::format_highlight(prefix)}", true)
109
+ end
110
+ config_param = (config_key =~ /\A#{prefix}\S+\z/i) ? config_key : "#{prefix}#{config_key}"
111
+ unless App::Config::param_exists(config_param)
112
+ App::Terminal::error('Invalid config parameter', "Cannot find #{App::Terminal::format_highlight('key')} #{App::Terminal::format_invalid("\"#{config_param}\"")} in: #{App::Terminal::format_directory(ConfigUnique::CONFIG_FILE)}", true)
113
+ end
114
+ App::Config.param(config_param)
115
+ end
116
+
104
117
  end
105
118
 
106
119
  end
@@ -12,15 +12,12 @@ module ConfigUnique
12
12
  LINUX = 'linux'
13
13
 
14
14
  # STORED PARAMETERS
15
- WORKSTATION_IP = 'workstation_ip'
16
15
  WORKSTATION_OS = 'workstation_os'
17
16
  WORKSTATION_PATH_TO_BP_CODE = 'workstation_path_to_bp_code'
18
17
  WORKSTATION_PATH_TO_BP_DB = 'workstation_path_to_bp_db'
19
18
  VM_IP = 'vm_ip'
20
19
  VM_USER = 'vm_user'
21
20
  VM_USER_PASSWORD = 'vm_user_password'
22
- VM_ROOT = 'vm_root'
23
- VM_ROOT_PASSWORD = 'vm_root_password'
24
21
  VM_MYSQL_USER = 'vm_mysql_user'
25
22
  VM_MYSQL_PASSWORD = 'vm_mysql_password'
26
23
  PREFERRED_TEXT_EDITOR = 'preferred_text_editor'
@@ -31,7 +28,23 @@ module ConfigUnique
31
28
  EC2_USER = 'ec2_user'
32
29
  EC2_PASS = 'ec2_pass'
33
30
 
31
+ # BETA
32
+ BETA = 'beta'
33
+
34
34
  def param(param_name)
35
+
36
+ # IF RETRIEVING DIRECTORIES
37
+ if [
38
+ WORKSTATION_PATH_TO_BP_CODE,
39
+ WORKSTATION_PATH_TO_BP_DB,
40
+ ].include?(param_name)
41
+ begin
42
+ return "/#{App::UtilsStrings.remove_surrounding_slashes(File.expand_path(@params[param_name]))}"
43
+ rescue Exception => e
44
+ App::Terminal::error("Something went wrong trying to get parameter: #{param_name}", e.message)
45
+ end
46
+ end
47
+
35
48
  @params[param_name]
36
49
  end
37
50
 
@@ -39,7 +52,6 @@ module ConfigUnique
39
52
  File.open("#{File.expand_path(CONFIG_FILE)}", 'w') { |file|
40
53
  file.write("# CONFIGURATION FILE -- Use this file to configure brightpearl-cli\n")
41
54
  file.write("\n")
42
- file.write("#{WORKSTATION_IP}=172.27.X.X\n")
43
55
  file.write("#{WORKSTATION_OS}=linux\n")
44
56
  file.write("#{WORKSTATION_PATH_TO_BP_CODE}=~/brightpearl-source/brightpearl-code\n")
45
57
  file.write("#{WORKSTATION_PATH_TO_BP_DB}=~/brightpearl-source/brightpearl-db\n")
@@ -47,8 +59,6 @@ module ConfigUnique
47
59
  file.write("#{VM_IP}=172.27.X.X\n")
48
60
  file.write("#{VM_USER}=\n")
49
61
  file.write("#{VM_USER_PASSWORD}=\n")
50
- file.write("#{VM_ROOT}=root\n")
51
- file.write("#{VM_ROOT_PASSWORD}=peXXXXXXXre\n")
52
62
  file.write("#{VM_MYSQL_USER}=root\n")
53
63
  file.write("#{VM_MYSQL_PASSWORD}=peXXXXXXXre\n")
54
64
  file.write("\n")
@@ -62,15 +72,12 @@ module ConfigUnique
62
72
 
63
73
  def required_config_keys
64
74
  [
65
- WORKSTATION_IP,
66
75
  WORKSTATION_OS,
67
76
  WORKSTATION_PATH_TO_BP_CODE,
68
77
  WORKSTATION_PATH_TO_BP_DB,
69
78
  VM_IP,
70
79
  VM_USER,
71
80
  VM_USER_PASSWORD,
72
- VM_ROOT,
73
- VM_ROOT_PASSWORD,
74
81
  VM_MYSQL_USER,
75
82
  VM_MYSQL_PASSWORD,
76
83
  PREFERRED_TEXT_EDITOR,
data/lib/core/enums.rb CHANGED
@@ -2,17 +2,8 @@ module App
2
2
 
3
3
  class Enum
4
4
 
5
- PORT_ORDER_SERVICE = '9240'
6
-
7
- GIT_MERGE_DEFAULT_FILE = '/tmp/merge.txt'
8
-
9
- # Get PATH to assets, scripts, etc.
10
- # @return String
11
- def self.get_base_path
12
- base_path = File.dirname(File.expand_path(__FILE__))
13
- base_path = base_path.gsub(/\/\w+\/\w+\z/i, '')
14
- base_path
15
- end
5
+ YES = 'yes'
6
+ NO = 'no'
16
7
 
17
8
  end
18
9
 
data/lib/core/git.rb CHANGED
@@ -46,7 +46,9 @@ module App
46
46
  SAME_BRANCH_WARNING = 'same_branch_warning'
47
47
  SAME_BRANCH_ERROR = 'same_branch_error'
48
48
 
49
- RELEASE_BRANCH_REGEX = /release-\d+\.\d+\.\d+-\d{4}/i
49
+ RELEASE_BRANCH_REGEX = /release-\d+\.\d+\.\d+-\d{4}/
50
+
51
+ GIT_MERGE_DEFAULT_FILE = '~/tmp/merge.txt'
50
52
 
51
53
  def initialize
52
54
 
@@ -527,7 +529,7 @@ module App
527
529
  if results.any?
528
530
  App::Terminal::command(['git status'], repo_dir)
529
531
  current_branch = current_branch_for_repo(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?")
532
+ if automatic || App::Terminal::prompt_yes_no("Found uncommitted files in #{App::Terminal::format_directory(get_repo_shorthand(repo_dir))} 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
533
  App::Terminal::output('Stashing working changes', App::Terminal::MSG_AUTOMATIC) if automatic
532
534
  App::Terminal::command('git stash', repo_dir)
533
535
  else
@@ -536,7 +538,7 @@ module App
536
538
  App::Terminal::abort(abort_message, ["In this particular scenario, you #{App::Terminal::format_invalid('cannot continue', true)} unless you stash your changes."], true, false)
537
539
  end
538
540
  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)
541
+ App::Terminal::abort
540
542
  end
541
543
  end
542
544
  end
@@ -556,7 +558,7 @@ module App
556
558
  stashes_to_skip = 0
557
559
  while results.any?
558
560
  stash_name = results[0].split(/:/).first
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?")
561
+ if automatic || App::Terminal::prompt_yes_no("Found the following stash in #{App::Terminal::format_directory(get_repo_shorthand(repo_dir))} on branch #{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
562
  App::Terminal::output('Un-stashing working changes', App::Terminal::MSG_AUTOMATIC) if automatic
561
563
  stash_apply_successful = App::Terminal::command(["git stash apply #{stash_name}"], repo_dir)
562
564
  if stash_apply_successful[0] == true
@@ -577,6 +579,7 @@ module App
577
579
  end
578
580
  end
579
581
  end
582
+ App::Terminal::command('git add .', repo_dir)
580
583
  end
581
584
  end
582
585
  end
@@ -596,12 +599,12 @@ module App
596
599
  if branch_code != branch_db
597
600
  case display
598
601
  when SAME_BRANCH_WARNING
599
- App::Terminal::warning("You're on #{App::Terminal::format_highlight('2 different branches')}", [
602
+ App::Terminal::warning("You're code is on #{App::Terminal::format_highlight('2 different branches')}", [
600
603
  "#{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
604
  "#{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)}"
602
605
  ])
603
606
  when SAME_BRANCH_ERROR
604
- App::Terminal::error("You're on #{App::Terminal::format_highlight('2 different branches')}", [
607
+ App::Terminal::error("You're code is on #{App::Terminal::format_highlight('2 different branches')}", [
605
608
  "#{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)}",
606
609
  "#{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
610
  nil,
@@ -756,7 +759,7 @@ module App
756
759
  # Checks that a branch DOESN'T exist anywhere (local, remote, code and db). If it does, will exit with error.
757
760
  # @return void
758
761
  def check_branch_does_not_exist_anywhere(branch_name)
759
- App::Terminal::info("Checking that branch #{App::Terminal::format_branch(branch_name)} doesn't already exist somewhere")
762
+ App::Terminal::info("Checking if branch #{App::Terminal::format_branch(branch_name)} doesn't already exist somewhere...")
760
763
  if branch_exists_anywhere(branch_name)
761
764
  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)
762
765
  end
@@ -785,12 +788,13 @@ module App
785
788
  end
786
789
  end
787
790
 
788
- # Resolves possible branch names from 12345
791
+ # Resolves possible branch names from jira numbers (IE: BP-12345 from 12345)
789
792
  # @return String
790
- def resolve_branch_for_jira(jira_number)
793
+ def resolve_branch_for_jira(jira_number, ask_to_create = false)
791
794
  resolved_branch = jira_number
792
795
  possible_branches = []
793
796
  if jira_number =~ /\A\d{4,5}\z/
797
+ App::Terminal::automatic("Attempting to resolve branch for: #{App::Terminal::format_highlight(jira_number)}")
794
798
  get_all_branches_as_array.each do |possible_branch|
795
799
  if possible_branch =~ /#{jira_number}/i
796
800
  # If more than one possible branch exists, IE: bug-14145 & bp-14145
@@ -802,13 +806,38 @@ module App
802
806
  end
803
807
  end
804
808
  unless possible_branches.any?
805
- App::Terminal::error("No branch found for jira number: #{App::Terminal::format_highlight(jira_number)}", ['Please check your input and try again.'], true)
809
+ if ask_to_create
810
+ App::Terminal::error("No branch found for jira number: #{App::Terminal::format_highlight(jira_number)}", ['Please check your input and try again.'], true)
811
+
812
+ # unless App::Terminal::prompt_yes_no("No branch found for jira number: #{App::Terminal::format_highlight(jira_number)}", nil, "Would you like to #{App::Terminal::format_action('CREATE')} branch ")
813
+ # App::Terminal::abort
814
+ # end
815
+ #
816
+ # # todo
817
+ # # INSERT CODE TO CREATE NEW BRANCH HERE !!
818
+ # App::Terminal::abort
819
+
820
+ else
821
+ App::Terminal::error("No branch found for jira number: #{App::Terminal::format_highlight(jira_number)}", ['Please check your input and try again.'], true)
822
+ end
806
823
  end
807
824
  resolved_branch = possible_branches[0]
808
825
  end
809
826
  resolved_branch
810
827
  end
811
828
 
829
+ # Resolves jira number from branch (IE: 12345 from BP-12345)
830
+ # @return String|boolean
831
+ def resolve_jira_for_branch(branch_name, exit_script = true)
832
+ if branch_name =~ /\d{4,5}/i
833
+ match = branch_name.match(/\d{4,5}/i)
834
+ match.to_s
835
+ else
836
+ App::Terminal::error("No jira number found for branch #{App::Terminal::format_branch(branch_name)}", nil, exit_script)
837
+ false
838
+ end
839
+ end
840
+
812
841
  # Returns TRUE if changes exist or FALSE if there is nothing to commit.
813
842
  # @return boolean
814
843
  def changes_exist(repo_dir)
@@ -824,6 +853,32 @@ module App
824
853
  changes_exist
825
854
  end
826
855
 
856
+ # Shows prompts asking to 'Commit to GIT' and 'Push to [master]'
857
+ # @return void
858
+ def ask_to_commit_to_git(commit_message, repo_dir, first_answer = nil, second_answer = nil)
859
+ if first_answer == App::Enum::NO
860
+ App::Terminal::warning("Your changes #{App::Terminal::format_highlight('HAVE NOT')} been #{App::Terminal::format_action('committed')} to GIT.", 'You will need to do this manually.', false)
861
+ else
862
+ if first_answer == App::Enum::YES || App::Terminal::prompt_yes_no('Commit to GIT', ["This will commit your changes to GIT with message: #{App::Terminal::format_highlight(commit_message)}"])
863
+ App::Terminal::command(["git commit -m '#{commit_message.gsub("'", "\\'")}'"], repo_dir)
864
+ App::Terminal::info("Your changes have been #{App::Terminal::format_action('committed')} to GIT.")
865
+ else
866
+ App::Terminal::warning("Your changes #{App::Terminal::format_highlight('HAVE NOT')} been #{App::Terminal::format_action('committed')} to GIT.", 'You will need to do this manually.', false)
867
+ return
868
+ end
869
+ end
870
+ if second_answer == App::Enum::NO
871
+ App::Terminal::warning("Your changes #{App::Terminal::format_highlight('HAVE NOT')} been #{App::Terminal::format_action('pushed')} to origin.", 'You will need to do this manually.', false)
872
+ else
873
+ if second_answer == App::Enum::YES || App::Terminal::prompt_yes_no('Push changes to origin')
874
+ App::Terminal::command('git push', repo_dir)
875
+ App::Terminal::info("Your changes have been #{App::Terminal::format_action('pushed')} to origin.")
876
+ else
877
+ App::Terminal::warning("Your changes #{App::Terminal::format_highlight('HAVE NOT')} been #{App::Terminal::format_action('pushed')} to origin.", 'You will need to do this manually.', false)
878
+ end
879
+ end
880
+ end
881
+
827
882
  # Pass the result of App::Terminal::command() and this should do the rest. Bombs out if you don't confirm.
828
883
  # @return void
829
884
  def check_for_conflicts(result, additional_info = nil)
@@ -844,7 +899,7 @@ module App
844
899
  final_info << "Please #{App::Terminal::format_action('open an IDE')} and resolve your conflicts before continuing."
845
900
  if result == false
846
901
  unless App::Terminal::prompt_yes_no('Merge conflict occurred', final_info, "Have you #{App::Terminal::format_highlight('resolved your conflicts', true)}\x1B[38;5;89m and #{App::Terminal::format_action('committed')}\x1B[38;5;89m the changes?")
847
- App::Terminal::abort(nil, nil, true, false)
902
+ App::Terminal::abort
848
903
  end
849
904
  end
850
905
  end