brightpearl-cli 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +21 -0
- data/bin/bp +5 -0
- data/bin/brightpearl +5 -0
- data/lib/brightpearl_cli.rb +351 -0
- data/lib/core/api.rb +7 -0
- data/lib/core/config.rb +175 -0
- data/lib/core/enums.rb +9 -0
- data/lib/core/git.rb +771 -0
- data/lib/core/jira.rb +43 -0
- data/lib/core/mysql.rb +48 -0
- data/lib/core/terminal.rb +389 -0
- data/lib/core/tools.rb +78 -0
- data/lib/core/validate.rb +7 -0
- data/lib/routes/build.rb +83 -0
- data/lib/routes/dummy_order.rb +151 -0
- data/lib/routes/git_branch.rb +55 -0
- data/lib/routes/git_checkout.rb +155 -0
- data/lib/routes/git_delete.rb +120 -0
- data/lib/routes/git_merge.rb +288 -0
- data/lib/routes/git_pull.rb +16 -0
- data/lib/routes/git_push.rb +16 -0
- data/lib/routes/git_stash.rb +27 -0
- data/lib/routes/git_update.rb +125 -0
- data/lib/routes/jira.rb +51 -0
- data/lib/routes/less.rb +37 -0
- data/lib/routes/reset.rb +33 -0
- data/lib/routes/review.rb +16 -0
- data/lib/routes/scripts_code_sniffer.rb +36 -0
- data/lib/routes/scripts_color.rb +52 -0
- data/lib/routes/setup.rb +15 -0
- data/lib/routes/tests.rb +69 -0
- data/lib/routes/update.rb +35 -0
- metadata +169 -0
@@ -0,0 +1,288 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class GitMerge < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
@git = Brightpearl::Git.new
|
10
|
+
|
11
|
+
@source_branches = []
|
12
|
+
@target_branch = nil
|
13
|
+
|
14
|
+
opts_validate
|
15
|
+
opts_routing
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
def opts_validate
|
20
|
+
|
21
|
+
unless @args.any?
|
22
|
+
unless @opts[:from_file]
|
23
|
+
system('bp g m -h')
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
if @args[0] == Brightpearl::Git::MASTER
|
29
|
+
Brightpearl::Terminal::error('Not allowed', "You cannot merge #{Brightpearl::Terminal::format_branch(Brightpearl::Git::MASTER)}\x1B[38;5;240m to #{Brightpearl::Terminal::format_branch(Brightpearl::Git::MASTER)}", true)
|
30
|
+
end
|
31
|
+
|
32
|
+
if @opts[:from_file]
|
33
|
+
unless @args[1].nil?
|
34
|
+
Brightpearl::Terminal::error('Too many parameters', ["When using the #{Brightpearl::Terminal::format_flag('f')}\x1B[38;5;240m, system only expects one #{Brightpearl::Terminal::format_action('optional')}\x1B[38;5;240m parameter \xe2\x80\x94 the target branch.", "The amount of parameters you tried to pass is: #{@args.length}"], true)
|
35
|
+
end
|
36
|
+
unless File.file?(@opts[:from_file])
|
37
|
+
Brightpearl::Terminal::error('File not found', "The file: #{Brightpearl::Terminal::format_directory(@opts[:from_file])}\x1B[38;5;240m doesn't exist.", true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def opts_routing
|
44
|
+
|
45
|
+
retrieve_source_branches
|
46
|
+
retrieve_target_branches
|
47
|
+
|
48
|
+
merge
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def merge
|
53
|
+
|
54
|
+
puts "\x1B[38;5;40m@TODO \xe2\x80\x94 If no source branches, must throw error.\x1B[0m"
|
55
|
+
|
56
|
+
unless Brightpearl::Terminal::prompt_yes_no("You're about to #{Brightpearl::Terminal::format_action('merge')} the following branch(es):", generate_source_target_text, "Would you like to #{Brightpearl::Terminal::format_action('CONTINUE')}\x1B[38;5;89m")
|
57
|
+
Brightpearl::Terminal::abort(nil, nil, true, false)
|
58
|
+
end
|
59
|
+
|
60
|
+
atleast_one_branch_found = false
|
61
|
+
atleast_one_error = false
|
62
|
+
current_branch_cd = @git.current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
|
63
|
+
current_branch_db = @git.current_branch_for_repo(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
|
64
|
+
cd_repo = Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)
|
65
|
+
db_repo = Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)
|
66
|
+
non_existent_branches_cd = []
|
67
|
+
non_existent_branches_db = []
|
68
|
+
branches_with_stashes_cd = []
|
69
|
+
branches_with_stashes_db = []
|
70
|
+
changed_files = []
|
71
|
+
|
72
|
+
# # SANITY CHECK SCRIPT
|
73
|
+
# @source_branches.each do |x|
|
74
|
+
# grep_string = x.split('-')
|
75
|
+
# grep_string = "BP-#{grep_string[grep_string.count - 1]}"
|
76
|
+
# puts "\x1B[38;5;39m#{x}\x1B[0m \xe2\x80\x94 (#{grep_string})"
|
77
|
+
# system("cd #{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)} && git log | grep '#{grep_string}' --color=auto")
|
78
|
+
# system("cd #{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)} && git log | grep '#{grep_string}' --color=auto")
|
79
|
+
# end
|
80
|
+
# puts
|
81
|
+
# exit
|
82
|
+
|
83
|
+
# UPDATE MASTER & CHECKOUT BRANCH TO MERGE TO
|
84
|
+
Brightpearl::Terminal::output("Updating #{Brightpearl::Terminal::format_branch(@target_branch)}")
|
85
|
+
target_branch_data = @git.branch_data(@target_branch, nil, false)
|
86
|
+
if target_branch_data[0][:"#{Brightpearl::Git::BRANCH_EXISTS}"] == false || target_branch_data[1][:"#{Brightpearl::Git::BRANCH_EXISTS}"] == false
|
87
|
+
Brightpearl::Terminal::error("Target branch #{Brightpearl::Terminal::format_branch(@target_branch)} doesn't exist", 'Please check your spelling and try again.', true)
|
88
|
+
end
|
89
|
+
commands = [
|
90
|
+
"git checkout #{Brightpearl::Git::MASTER}",
|
91
|
+
'git pull',
|
92
|
+
"git checkout #{@target_branch}",
|
93
|
+
'git pull',
|
94
|
+
"git merge #{Brightpearl::Git::MASTER}"
|
95
|
+
]
|
96
|
+
@git.repo_loop.each do |repo_dir|
|
97
|
+
Brightpearl::Terminal::command(commands, repo_dir)
|
98
|
+
end
|
99
|
+
|
100
|
+
# GET DATA FIRST
|
101
|
+
branches_data = []
|
102
|
+
@source_branches.each do |branch_name|
|
103
|
+
branches_data << @git.branch_data(branch_name, nil, false)
|
104
|
+
end
|
105
|
+
|
106
|
+
# RUN CHECKS
|
107
|
+
branches_data.each do |branch_data|
|
108
|
+
if branch_data[0][:"#{Brightpearl::Git::BRANCH_EXISTS}"] || branch_data[1][:"#{Brightpearl::Git::BRANCH_EXISTS}"]
|
109
|
+
atleast_one_branch_found = true
|
110
|
+
end
|
111
|
+
if branch_data[0][:"#{Brightpearl::Git::BRANCH_EXISTS}"] == false
|
112
|
+
non_existent_branches_cd << branch_data[0][:"#{Brightpearl::Git::BRANCH_NAME}"]
|
113
|
+
end
|
114
|
+
if branch_data[1][:"#{Brightpearl::Git::BRANCH_EXISTS}"] == false
|
115
|
+
non_existent_branches_db << branch_data[0][:"#{Brightpearl::Git::BRANCH_NAME}"]
|
116
|
+
end
|
117
|
+
if branch_data[0][:"#{Brightpearl::Git::BRANCH_HAS_STASH}"]
|
118
|
+
branches_with_stashes_cd << branch_data[0][:"#{Brightpearl::Git::BRANCH_NAME}"]
|
119
|
+
end
|
120
|
+
if branch_data[1][:"#{Brightpearl::Git::BRANCH_HAS_STASH}"]
|
121
|
+
branches_with_stashes_db << branch_data[1][:"#{Brightpearl::Git::BRANCH_NAME}"]
|
122
|
+
end
|
123
|
+
if branch_data[0][:"#{Brightpearl::Git::BRANCH_EXISTS_LOCALLY}"] == false && branch_data[0][:"#{Brightpearl::Git::BRANCH_EXISTS}"]
|
124
|
+
commands_cd = [
|
125
|
+
"git checkout #{branch_data[0][:"#{Brightpearl::Git::BRANCH_NAME}"]}",
|
126
|
+
'git pull',
|
127
|
+
"git checkout #{current_branch_cd}"
|
128
|
+
]
|
129
|
+
Brightpearl::Terminal::command(commands_cd, Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
|
130
|
+
end
|
131
|
+
if branch_data[1][:"#{Brightpearl::Git::BRANCH_EXISTS_LOCALLY}"] == false && branch_data[1][:"#{Brightpearl::Git::BRANCH_EXISTS}"]
|
132
|
+
commands_db = [
|
133
|
+
"git checkout #{branch_data[1][:"#{Brightpearl::Git::BRANCH_NAME}"]}",
|
134
|
+
'git pull',
|
135
|
+
"git checkout #{current_branch_db}"
|
136
|
+
]
|
137
|
+
Brightpearl::Terminal::command(commands_db, Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
puts # DO NOT REMOVE.
|
142
|
+
|
143
|
+
# STOP HERE IF THERE ARE FAILURES
|
144
|
+
if non_existent_branches_cd.any?
|
145
|
+
Brightpearl::Terminal::warning("The following branches could not be found in: #{Brightpearl::Terminal::format_directory(@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)))}", non_existent_branches_cd, false)
|
146
|
+
atleast_one_error = true
|
147
|
+
end
|
148
|
+
if non_existent_branches_db.any?
|
149
|
+
Brightpearl::Terminal::warning("The following branches could not be found in: #{Brightpearl::Terminal::format_directory(@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)))}", non_existent_branches_db, false)
|
150
|
+
atleast_one_error = true
|
151
|
+
end
|
152
|
+
if branches_with_stashes_cd.any?
|
153
|
+
Brightpearl::Terminal::error("The following branches have stashes (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))})", branches_with_stashes_cd, false)
|
154
|
+
atleast_one_error = true
|
155
|
+
end
|
156
|
+
if branches_with_stashes_db.any?
|
157
|
+
Brightpearl::Terminal::error("The following branches have stashes (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))})", branches_with_stashes_db, false)
|
158
|
+
atleast_one_error = true
|
159
|
+
end
|
160
|
+
if atleast_one_branch_found == false
|
161
|
+
Brightpearl::Terminal::error('All the branches you specified cannot be found.', 'Nothing to merge. Aborting script.', true)
|
162
|
+
end
|
163
|
+
|
164
|
+
source_target_text = generate_source_target_text
|
165
|
+
source_target_text.unshift('')
|
166
|
+
if atleast_one_error
|
167
|
+
source_target_text.unshift('Although issues were detected, the script determined that these are non-fatal and can continue with the merge.')
|
168
|
+
end
|
169
|
+
source_target_text.unshift("This is officially the \x1B[38;5;196mPOINT OF NO RETURN\x1B[38;5;240m. Please make sure everything is OK before continuing.")
|
170
|
+
|
171
|
+
unless Brightpearl::Terminal::prompt_yes_no("You're about to #{Brightpearl::Terminal::format_action('merge')} the following branch(es):", source_target_text, "Are you absolutely sure you would like to #{Brightpearl::Terminal::format_action('CONTINUE')}\x1B[38;5;89m with the merge?")
|
172
|
+
Brightpearl::Terminal::abort(nil, nil, true, false)
|
173
|
+
end
|
174
|
+
|
175
|
+
# DO THE MERGE
|
176
|
+
branches_data.each do |branch_data|
|
177
|
+
|
178
|
+
branch_name = branch_data[0][:"#{Brightpearl::Git::BRANCH_NAME}"]
|
179
|
+
commands1 = []
|
180
|
+
commands1 << "git checkout #{branch_name}"
|
181
|
+
commands1 << 'git pull'
|
182
|
+
commands2 = ["git merge #{Brightpearl::Git::MASTER}"]
|
183
|
+
commands3 = [
|
184
|
+
'git push',
|
185
|
+
"git checkout #{@target_branch}"
|
186
|
+
]
|
187
|
+
commands4 = ["git merge #{branch_name}"]
|
188
|
+
|
189
|
+
# CODE BRANCHES
|
190
|
+
unless non_existent_branches_cd.include?(branch_name)
|
191
|
+
Brightpearl::Terminal::command(commands1, cd_repo)
|
192
|
+
merge_master_result = Brightpearl::Terminal::command(commands2, cd_repo)
|
193
|
+
if merge_master_result[0] == false
|
194
|
+
Brightpearl::Terminal::error('Merge conflict occurred', "Unable to successfully merge #{Brightpearl::Terminal::format_branch(Brightpearl::Git::MASTER)} \xe2\x86\x92 #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x80\x94 (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))})", true)
|
195
|
+
end
|
196
|
+
Brightpearl::Terminal::command(commands3, cd_repo)
|
197
|
+
merge_to_target = Brightpearl::Terminal::command(commands4, cd_repo)
|
198
|
+
if merge_to_target == false
|
199
|
+
Brightpearl::Terminal::error('Merge conflict occurred', "Unable to successfully merge #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x86\x92 #{Brightpearl::Terminal::format_branch(@target_branch)} \xe2\x80\x94 (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))})", true)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
# DB BRANCHES
|
204
|
+
if non_existent_branches_db.include?(branch_name)
|
205
|
+
# Brightpearl::Terminal::warning("Skipping #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x80\x94 (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))})", 'Branch not found.')
|
206
|
+
else
|
207
|
+
Brightpearl::Terminal::command(commands1, db_repo)
|
208
|
+
merge_master_result = Brightpearl::Terminal::command(commands2, db_repo)
|
209
|
+
if merge_master_result[0] == false
|
210
|
+
Brightpearl::Terminal::error('Merge conflict occurred', "Unable to successfully merge #{Brightpearl::Terminal::format_branch(Brightpearl::Git::MASTER)} \xe2\x86\x92 #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x80\x94 (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))})", true)
|
211
|
+
end
|
212
|
+
Brightpearl::Terminal::command(commands3, db_repo, false)
|
213
|
+
merge_to_target = Brightpearl::Terminal::command(commands4, db_repo)
|
214
|
+
if merge_to_target == false
|
215
|
+
Brightpearl::Terminal::error('Merge conflict occurred', "Unable to successfully merge #{Brightpearl::Terminal::format_branch(branch_name)} \xe2\x86\x92 #{Brightpearl::Terminal::format_branch(@target_branch)} \xe2\x80\x94 (#{@git.get_repo_shorthand(Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))})", true)
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
end
|
220
|
+
|
221
|
+
Brightpearl::Terminal::success('It seems as if everything ran smoothly', "#{@source_branches.count} #{(@source_branches.count) == 1 ? 'branch has' : 'branches have'} been successfully merged to #{Brightpearl::Terminal::format_branch(@target_branch)}")
|
222
|
+
if Brightpearl::Terminal::prompt_yes_no('Just to be safe, would you like to run a sanity check?', ["This will execute #{Brightpearl::Terminal::format_command('git log')}\x1B[38;5;240m on #{Brightpearl::Terminal::format_branch(@target_branch)}\x1B[38;5;240m and #{Brightpearl::Terminal::format_command('grep')}\x1B[38;5;240m for Jira numbers relating to", 'to all the branches you have just merged. This way we can double-check they have', 'actually been merged', nil, "Please note this process may not be \x1B[38;5;250m100%\x1B[38;5;240m reliable"])
|
223
|
+
|
224
|
+
# SANITY CHECK SCRIPT
|
225
|
+
@source_branches.each do |x|
|
226
|
+
grep_string = x.split('-')
|
227
|
+
grep_string = "BP-#{grep_string[grep_string.count - 1]}"
|
228
|
+
puts "\x1B[38;5;39m#{x}\x1B[0m \xe2\x80\x94 (#{grep_string})"
|
229
|
+
system("cd #{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)} && git log | grep '#{grep_string}' --color=auto")
|
230
|
+
system("cd #{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB)} && git log | grep '#{grep_string}' --color=auto")
|
231
|
+
end
|
232
|
+
puts
|
233
|
+
|
234
|
+
end
|
235
|
+
|
236
|
+
end
|
237
|
+
|
238
|
+
private
|
239
|
+
|
240
|
+
def retrieve_source_branches
|
241
|
+
if @opts[:from_file]
|
242
|
+
File.open(@opts[:from_file]).each do |line|
|
243
|
+
line_trimmed = line.gsub(/\s+/, '')
|
244
|
+
if line_trimmed != ''
|
245
|
+
line_split = line_trimmed.split(',')
|
246
|
+
@source_branches.concat(line_split)
|
247
|
+
end
|
248
|
+
end
|
249
|
+
else
|
250
|
+
source_branches = @args[0].split(',')
|
251
|
+
@source_branches.concat(source_branches)
|
252
|
+
end
|
253
|
+
@source_branches.sort_by! { |m| m.downcase }
|
254
|
+
@source_branches.uniq!
|
255
|
+
end
|
256
|
+
|
257
|
+
def retrieve_target_branches
|
258
|
+
if @opts[:from_file]
|
259
|
+
if @args[0].nil?
|
260
|
+
@target_branch = Brightpearl::Git::MASTER
|
261
|
+
else
|
262
|
+
@target_branch = @args[0]
|
263
|
+
end
|
264
|
+
else
|
265
|
+
if @args[1].nil?
|
266
|
+
@target_branch = Brightpearl::Git::MASTER
|
267
|
+
else
|
268
|
+
@target_branch = @args[1]
|
269
|
+
end
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
def generate_source_target_text
|
274
|
+
source_branches_dup = @source_branches.dup
|
275
|
+
source_branch_text = ["Source branch(es): \x1B[38;5;117m#{source_branches_dup.shift}"]
|
276
|
+
unless source_branches_dup.empty?
|
277
|
+
source_branches_dup.each do |sb|
|
278
|
+
source_branch_text << " \x1B[38;5;117m#{sb}"
|
279
|
+
end
|
280
|
+
source_branch_text << ''
|
281
|
+
end
|
282
|
+
source_branch_text << " Target branch: \x1B[38;5;40m#{@target_branch}"
|
283
|
+
source_branch_text
|
284
|
+
end
|
285
|
+
|
286
|
+
end
|
287
|
+
|
288
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class GitPull < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
Convoy::Logger.output.puts "Command: #{command_name}"
|
8
|
+
Convoy::Logger.output.puts "Options: #{options}"
|
9
|
+
Convoy::Logger.output.puts "Command options: #{command_options}"
|
10
|
+
Convoy::Logger.output.puts "Arguments: #{arguments}"
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class GitPush < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
Convoy::Logger.output.puts "Command: #{command_name}"
|
8
|
+
Convoy::Logger.output.puts "Options: #{options}"
|
9
|
+
Convoy::Logger.output.puts "Command options: #{command_options}"
|
10
|
+
Convoy::Logger.output.puts "Arguments: #{arguments}"
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class GitStash < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
opts_validate
|
10
|
+
opts_routing
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def opts_validate
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def opts_routing
|
19
|
+
|
20
|
+
# SHOW WHAT FILES HAVE CHANGED IN A STASH
|
21
|
+
system('git stash show --name-only stash@{0}')
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class GitUpdate < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
@git = Brightpearl::Git.new
|
7
|
+
@opts = command_options
|
8
|
+
opts_validate
|
9
|
+
opts_routing
|
10
|
+
end
|
11
|
+
|
12
|
+
def opts_validate
|
13
|
+
end
|
14
|
+
|
15
|
+
def opts_routing
|
16
|
+
|
17
|
+
if @opts[:all]
|
18
|
+
|
19
|
+
Brightpearl::Terminal::error('Note yet implemented', "Must write code to update ALL branches.\nCould get complicated as there will likely be merge conflicts.\nMust think about this...", true)
|
20
|
+
|
21
|
+
# update_branch_all
|
22
|
+
else
|
23
|
+
update_branch_single
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
# Updates the current branch.
|
29
|
+
# @return void
|
30
|
+
def update_branch_single
|
31
|
+
ran_smoothly = true
|
32
|
+
@git.stash_staged_changes
|
33
|
+
@git.repo_loop.each do |repo_dir|
|
34
|
+
current_branch = @git.current_branch_for_repo(repo_dir)
|
35
|
+
commands = Array.new
|
36
|
+
if current_branch != Brightpearl::Git::MASTER
|
37
|
+
commands << 'git checkout master'
|
38
|
+
end
|
39
|
+
commands << 'git pull'
|
40
|
+
if current_branch != Brightpearl::Git::MASTER
|
41
|
+
commands << "git checkout #{current_branch}"
|
42
|
+
commands << 'git pull'
|
43
|
+
commands << 'git merge master'
|
44
|
+
end
|
45
|
+
results = Brightpearl::Terminal::command(commands, repo_dir)
|
46
|
+
if results[4] == false
|
47
|
+
Brightpearl::Terminal::error('Merge conflict occurred', ["Unable to successfully merge #{Brightpearl::Terminal::format_branch(Brightpearl::Git::MASTER)} \xe2\x86\x92 #{Brightpearl::Terminal::format_branch(current_branch)} \xe2\x80\x94 (#{@git.get_repo_shorthand(repo_dir)})", "Please #{Brightpearl::Terminal::format_action('open an IDE')}\x1B[38;5;240m and resolve your conflicts as soon as this script has finished executing."], false)
|
48
|
+
ran_smoothly = false
|
49
|
+
next
|
50
|
+
end
|
51
|
+
if @opts[:push] && (current_branch != Brightpearl::Git::MASTER)
|
52
|
+
Brightpearl::Terminal::command('git push', repo_dir)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
if ran_smoothly
|
57
|
+
@git.check_for_stash
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Updates ALL local branches.
|
62
|
+
# @return void
|
63
|
+
# def update_branch_all
|
64
|
+
# Brightpearl::Tools::verify_internet_access
|
65
|
+
# repos = []
|
66
|
+
# brightpearl_code, brightpearl_db = @git.get_branches_as_array(Brightpearl::Git::SORT_REFNAME, Brightpearl::Git::LOCAL)
|
67
|
+
# Array[brightpearl_code, brightpearl_db].each do |repo_data|
|
68
|
+
# branches = []
|
69
|
+
# repo_data.each do |branch_name|
|
70
|
+
# if branch_name[0..6] != Brightpearl::Git::MERGED_PREFIX
|
71
|
+
# branches << branch_name
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
# repos << branches
|
75
|
+
# end
|
76
|
+
# message = [
|
77
|
+
# "You are about to merge master into ALL of the following branches:\n\n",
|
78
|
+
# "\x1B[33mbrightpearl-code \xe2\x86\x92 \x1B[0m\x1B[32m#{repos[0].join(', ')}\x1B[0m",
|
79
|
+
# "\x1B[33mbrightpearl-db \xe2\x86\x92 \x1B[0m\x1B[32m#{repos[1].join(', ')}\x1B[0m\n\n",
|
80
|
+
# 'This script will pull from master, merge master into ALL of your branches & then push your branches back up to /origin.'
|
81
|
+
# ]
|
82
|
+
# branch_count = repos[0].length + repos[1].length
|
83
|
+
# if (branch_count) > 9
|
84
|
+
# message << "\n\x1B[41m WARNING \x1B[0m You're about to update \x1B[32m#{branch_count}\x1B[0m branches. This could take a while.."
|
85
|
+
# end
|
86
|
+
# Brightpearl::Terminal::prompt_enter(message)
|
87
|
+
#
|
88
|
+
# # Update master on both repos.
|
89
|
+
# @git.repo_loop.each do |repo_dir|
|
90
|
+
# current_branch = @git.current_branch_for_repo(repo_dir)
|
91
|
+
# commands = Array.new
|
92
|
+
# if current_branch != Brightpearl::Git::MASTER
|
93
|
+
# commands << 'git checkout master'
|
94
|
+
# end
|
95
|
+
# commands << 'git pull'
|
96
|
+
# Brightpearl::Terminal::command(commands, repo_dir)
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# # Update ALL the branches, one-by-one.
|
100
|
+
# repos[0].each do |branch|
|
101
|
+
# update_branch(branch, Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE))
|
102
|
+
# end
|
103
|
+
# repos[1].each do |branch|
|
104
|
+
# update_branch(branch, Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_DB))
|
105
|
+
# end
|
106
|
+
#
|
107
|
+
# end
|
108
|
+
|
109
|
+
# Updates a single branch.
|
110
|
+
# @return void
|
111
|
+
# def update_branch(branch_name, repo_dir)
|
112
|
+
# if branch_name != Brightpearl::Git::MASTER
|
113
|
+
# puts "\x1B[45m Check-out \x1B[0m \x1B[32m\xe2\x86\x92\x1B[0m \x1B[35m#{branch_name}\x1B[0m"
|
114
|
+
# commands = Array.new
|
115
|
+
# commands << "git checkout #{branch_name}"
|
116
|
+
# # commands << 'git pull'
|
117
|
+
# commands << 'git merge --no-commit --no-ff master | grep CONFLICT'
|
118
|
+
# # commands << 'git push'
|
119
|
+
# Brightpearl::Terminal::command(commands, repo_dir)
|
120
|
+
# end
|
121
|
+
# end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|
data/lib/routes/jira.rb
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class JiraCard < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
@jira = Brightpearl::Jira.new
|
10
|
+
opts_validate
|
11
|
+
opts_routing
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
def opts_validate
|
16
|
+
|
17
|
+
if @opts[:card] == false
|
18
|
+
if @args.any?
|
19
|
+
@opts[:card] = true
|
20
|
+
else
|
21
|
+
system('bp j -h')
|
22
|
+
end
|
23
|
+
exit
|
24
|
+
end
|
25
|
+
|
26
|
+
if @opts[:card]
|
27
|
+
if @args[0].nil? || @args[0] == ''
|
28
|
+
Brightpearl::Terminal::error('Argument required', 'You must supply a valid Jira Number as an argument.', true)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
def opts_routing
|
35
|
+
|
36
|
+
if @opts[:card]
|
37
|
+
get_card_info
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_card_info
|
43
|
+
|
44
|
+
jira_number = @jira.get_jira_number_from_arg(@args[0])
|
45
|
+
puts jira_number
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/routes/less.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class Less < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
opts_validate
|
10
|
+
opts_routing
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def opts_validate
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
|
19
|
+
def opts_routing
|
20
|
+
|
21
|
+
compile_less_file
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
def compile_less_file
|
26
|
+
|
27
|
+
unless @opts[:skipConfirm]
|
28
|
+
puts "\nYou are about to #{Brightpearl::Terminal::format_action('COMPILE THE BRIGHTPEARL LESS FILE')}"
|
29
|
+
Brightpearl::Terminal::enter_to_continue
|
30
|
+
end
|
31
|
+
Brightpearl::Terminal.command(['lessc -x less/screen.less screen.css'], "#{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)}/brightpearl/public/brightpearl/includes/css")
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
data/lib/routes/reset.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class Reset < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
opts_validate
|
10
|
+
opts_routing
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def opts_validate
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def opts_routing
|
19
|
+
|
20
|
+
if @opts[:fitnesseDump]
|
21
|
+
reset_fitnesse_dump
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
def reset_fitnesse_dump
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class Review < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
Convoy::Logger.output.puts "Command: #{command_name}"
|
8
|
+
Convoy::Logger.output.puts "Options: #{options}"
|
9
|
+
Convoy::Logger.output.puts "Command options: #{command_options}"
|
10
|
+
Convoy::Logger.output.puts "Arguments: #{arguments}"
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module BrightpearlCommand
|
2
|
+
|
3
|
+
class ScriptsCodeSniffer < ::Convoy::ActionCommand::Base
|
4
|
+
|
5
|
+
def execute
|
6
|
+
|
7
|
+
@opts = command_options
|
8
|
+
@args = arguments
|
9
|
+
opts_validate
|
10
|
+
opts_routing
|
11
|
+
|
12
|
+
end
|
13
|
+
|
14
|
+
def opts_validate
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
def opts_routing
|
19
|
+
|
20
|
+
run_code_sniffer
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
def run_code_sniffer
|
25
|
+
|
26
|
+
@todo
|
27
|
+
command = "phpcs --report=full --standard=#{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)}/brightpearl/private/tests/phpcs/phpcs.xml #{Brightpearl::Config.param(Brightpearl::Config::WORKSTATION_PATH_TO_BP_CODE)}/brightpearl/private/library/Lib/#{@args[0]}"
|
28
|
+
puts command
|
29
|
+
exit
|
30
|
+
system(command)
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|