firespring_dev_commands 2.1.27 → 2.5.0.pre.alpha.1
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.
- checksums.yaml +4 -4
- data/lib/firespring_dev_commands/audit/report.rb +2 -9
- data/lib/firespring_dev_commands/common.rb +0 -9
- data/lib/firespring_dev_commands/docker/status.rb +0 -20
- data/lib/firespring_dev_commands/docker.rb +0 -45
- data/lib/firespring_dev_commands/eol.rb +2 -12
- data/lib/firespring_dev_commands/git.rb +22 -17
- data/lib/firespring_dev_commands/node.rb +1 -1
- data/lib/firespring_dev_commands/php.rb +12 -28
- data/lib/firespring_dev_commands/platform.rb +31 -38
- data/lib/firespring_dev_commands/ruby.rb +3 -6
- data/lib/firespring_dev_commands/target_process/query.rb +4 -30
- data/lib/firespring_dev_commands/target_process.rb +1 -3
- data/lib/firespring_dev_commands/templates/aws.rb +6 -14
- data/lib/firespring_dev_commands/templates/docker/application.rb +2 -2
- data/lib/firespring_dev_commands/templates/docker/node/application.rb +5 -28
- data/lib/firespring_dev_commands/templates/docker/php/application.rb +16 -31
- data/lib/firespring_dev_commands/templates/docker/ruby/application.rb +5 -27
- data/lib/firespring_dev_commands/templates/eol.rb +2 -3
- data/lib/firespring_dev_commands/templates/git.rb +0 -17
- data/lib/firespring_dev_commands/version.rb +1 -1
- data/lib/firespring_dev_commands.rb +1 -1
- metadata +37 -49
- data/lib/firespring_dev_commands/bloom_growth/rock.rb +0 -34
- data/lib/firespring_dev_commands/bloom_growth/seat.rb +0 -16
- data/lib/firespring_dev_commands/bloom_growth/user.rb +0 -43
- data/lib/firespring_dev_commands/bloom_growth.rb +0 -132
- data/lib/firespring_dev_commands/certificate.rb +0 -59
- data/lib/firespring_dev_commands/coverage/base.rb +0 -16
- data/lib/firespring_dev_commands/coverage/cobertura.rb +0 -86
- data/lib/firespring_dev_commands/coverage/none.rb +0 -21
- data/lib/firespring_dev_commands/docker/desktop.rb +0 -59
- data/lib/firespring_dev_commands/os.rb +0 -35
- data/lib/firespring_dev_commands/port.rb +0 -24
- data/lib/firespring_dev_commands/templates/certificate.rb +0 -41
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e146e8c9d9c3422dfd7641c6a09ca8c2cdfad6ed430d73aec5808de28ed5d880
|
|
4
|
+
data.tar.gz: 273923aae5ccce231fc77174ed89cbe0e4f5ad59b52219b04303f983e9966e1d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 67223e6ba12a10f798d7fee6b1cab844da41cd3dc65a449330e8c8bd0ef86180cc297889b7365b7b68f5ca8054919e9881693707ecfde02e539d0a7e22c6af51
|
|
7
|
+
data.tar.gz: ada0e13a3f2d8022687a2542503bad6bc847bf32fc17604116d17e06ed46ee7efa18aea35635c31a26c07f5ccdd6a3c5083235edaafd77684528bc487c17f3c7
|
|
@@ -3,12 +3,11 @@ module Dev
|
|
|
3
3
|
class Audit
|
|
4
4
|
# The class containing standardized information about an audit report
|
|
5
5
|
class Report
|
|
6
|
-
attr_accessor :items, :min_severity, :
|
|
6
|
+
attr_accessor :items, :min_severity, :ignorelist, :filtered_items
|
|
7
7
|
|
|
8
8
|
def initialize(
|
|
9
9
|
items,
|
|
10
10
|
min_severity: ENV.fetch('MIN_SEVERITY', nil),
|
|
11
|
-
error_on_unknown: ENV.fetch('ERROR_ON_UNKNOWN', nil),
|
|
12
11
|
ignorelist: ENV['IGNORELIST'].to_s.split(/\s*,\s*/)
|
|
13
12
|
)
|
|
14
13
|
# Items should be an array of Item objects
|
|
@@ -16,18 +15,12 @@ module Dev
|
|
|
16
15
|
raise 'items must all be report items' unless @items.all?(Dev::Audit::Report::Item)
|
|
17
16
|
|
|
18
17
|
@min_severity = min_severity || Level::HIGH
|
|
19
|
-
@error_on_unknown = error_on_unknown
|
|
20
18
|
@ignorelist = Array(ignorelist).compact
|
|
21
19
|
end
|
|
22
20
|
|
|
23
21
|
# Get all severities greater than or equal to the minimum severity
|
|
24
22
|
def desired_severities
|
|
25
|
-
|
|
26
|
-
-1
|
|
27
|
-
else
|
|
28
|
-
-2
|
|
29
|
-
end
|
|
30
|
-
LEVELS.slice(LEVELS.find_index(min_severity)..max_severity)
|
|
23
|
+
LEVELS.slice(LEVELS.find_index(min_severity)..-1)
|
|
31
24
|
end
|
|
32
25
|
|
|
33
26
|
# Run the filters against the report items and filter out any which should be excluded
|
|
@@ -187,14 +187,5 @@ module Dev
|
|
|
187
187
|
return false
|
|
188
188
|
end
|
|
189
189
|
end
|
|
190
|
-
|
|
191
|
-
# Center the string and pad on either side with the given padding character
|
|
192
|
-
def center_pad(string = '', pad: '-', len: 80)
|
|
193
|
-
string = " #{string} " unless string.strip.empty?
|
|
194
|
-
center_dash = len / 2
|
|
195
|
-
string = string.to_s
|
|
196
|
-
center_str = string.length / 2
|
|
197
|
-
string.rjust(center_dash + center_str - 1, pad).ljust(len - 1, pad)
|
|
198
|
-
end
|
|
199
190
|
end
|
|
200
191
|
end
|
|
@@ -33,26 +33,6 @@ module Dev
|
|
|
33
33
|
EXITED,
|
|
34
34
|
DEAD
|
|
35
35
|
].freeze
|
|
36
|
-
|
|
37
|
-
# TODO: Can we use 'curses' here and overwrite the correct line?
|
|
38
|
-
def response_callback(response)
|
|
39
|
-
response.split("\n").each do |line|
|
|
40
|
-
data = JSON.parse(line)
|
|
41
|
-
if data.include?('status')
|
|
42
|
-
if data['id']
|
|
43
|
-
LOG.info "#{data['id']}: #{data['status']}"
|
|
44
|
-
else
|
|
45
|
-
LOG.info (data['status']).to_s
|
|
46
|
-
end
|
|
47
|
-
elsif data.include?('errorDetail')
|
|
48
|
-
raise data['errorDetail']['message']
|
|
49
|
-
elsif data.include?('aux')
|
|
50
|
-
next
|
|
51
|
-
else
|
|
52
|
-
raise "Unrecognized message from docker: #{data}"
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
36
|
end
|
|
57
37
|
end
|
|
58
38
|
end
|
|
@@ -117,44 +117,6 @@ module Dev
|
|
|
117
117
|
format('%.1f %s', size.to_f / (1024**exp), units[exp])
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
# Push the local version of the docker image to the defined remote repository
|
|
121
|
-
def push_image(image, name, tag = nil)
|
|
122
|
-
unless tag
|
|
123
|
-
if name.include?(':')
|
|
124
|
-
name, tag = name.split(':')
|
|
125
|
-
else
|
|
126
|
-
tag = 'latest'
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
puts "Pushing to #{name}:#{tag}"
|
|
131
|
-
image.push(::Docker.creds, repo_tag: "#{name}:#{tag}") { |response| Dev::Docker::Status.new.response_callback(response) }
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
# Push the remote version of the docker image from the defined remote repository
|
|
135
|
-
def pull_image(name, tag = nil)
|
|
136
|
-
unless tag
|
|
137
|
-
if name.include?(':')
|
|
138
|
-
name, tag = name.split(':')
|
|
139
|
-
else
|
|
140
|
-
tag = 'latest'
|
|
141
|
-
end
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
puts "\nPulling #{name}:#{tag}"
|
|
145
|
-
opts = {
|
|
146
|
-
fromImage: "#{name}:#{tag}",
|
|
147
|
-
platform: Dev::Platform.new.architecture
|
|
148
|
-
}
|
|
149
|
-
::Docker::Image.create(**opts) { |response| Dev::Docker::Status.new.response_callback(response) }
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
# Remove the local version of the given docker image
|
|
153
|
-
def untag_image(image, name, tag)
|
|
154
|
-
puts "Untagging #{name}:#{tag}"
|
|
155
|
-
image.remove(name: "#{name}:#{tag}")
|
|
156
|
-
end
|
|
157
|
-
|
|
158
120
|
# Remove docker images with the "force" option set to true
|
|
159
121
|
# This will remove the images even if they are currently in use and cause unintended side effects.
|
|
160
122
|
def force_remove_images(name_and_tag)
|
|
@@ -176,14 +138,8 @@ module Dev
|
|
|
176
138
|
Docker::Compose.new.mapped_public_port(name, private_port)
|
|
177
139
|
end
|
|
178
140
|
|
|
179
|
-
# Gets the default working dir of the container
|
|
180
|
-
def working_dir(container)
|
|
181
|
-
container.json['Config']['WorkingDir']
|
|
182
|
-
end
|
|
183
|
-
|
|
184
141
|
# Copies the source path on your local machine to the destination path on the container
|
|
185
142
|
def copy_to_container(container, source_path, dest_path)
|
|
186
|
-
dest_path = File.join(working_dir(container), dest_path) unless dest_path.start_with?(File::SEPARATOR)
|
|
187
143
|
LOG.info "Copying #{source_path} to #{dest_path}... "
|
|
188
144
|
|
|
189
145
|
container.archive_in(source_path, dest_path, overwrite: true)
|
|
@@ -198,7 +154,6 @@ module Dev
|
|
|
198
154
|
# Copies the source path on the container to the destination path on your local machine
|
|
199
155
|
# If required is set to true, the command will fail if the source path does not exist on the container
|
|
200
156
|
def copy_from_container(container, source_path, dest_path, required: true)
|
|
201
|
-
source_path = File.join(working_dir(container), source_path) unless source_path.start_with?(File::SEPARATOR)
|
|
202
157
|
LOG.info "Copying #{source_path} to #{dest_path}... "
|
|
203
158
|
|
|
204
159
|
tar = StringIO.new
|
|
@@ -46,23 +46,13 @@ module Dev
|
|
|
46
46
|
@products
|
|
47
47
|
end
|
|
48
48
|
|
|
49
|
-
# Prints all of the product version statuses
|
|
50
|
-
def status
|
|
51
|
-
product_versions.sort_by(&:name).each(&:print_status)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# Returns true if any of the products are EOL
|
|
55
|
-
def eol?
|
|
56
|
-
product_versions.any?(&:eol)
|
|
57
|
-
end
|
|
58
|
-
|
|
59
49
|
# Prints all of the product version statuses
|
|
60
50
|
# Raises an error if any products are EOL
|
|
61
51
|
def check
|
|
62
52
|
puts
|
|
63
|
-
|
|
53
|
+
product_versions.sort_by(&:name).each(&:print_status)
|
|
64
54
|
puts
|
|
65
|
-
raise 'found EOL versions' if eol
|
|
55
|
+
raise 'found EOL versions' if product_versions.any?(&:eol)
|
|
66
56
|
end
|
|
67
57
|
end
|
|
68
58
|
end
|
|
@@ -113,10 +113,10 @@ module Dev
|
|
|
113
113
|
next unless File.exist?(project_dir)
|
|
114
114
|
|
|
115
115
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
116
|
-
header = "#{repo_basename} (#{original_branches[project_dir]})"
|
|
117
|
-
puts
|
|
116
|
+
header = " #{repo_basename} (#{original_branches[project_dir]}) "
|
|
117
|
+
puts center_pad(header).light_green
|
|
118
118
|
@success &= status(dir: project_dir)
|
|
119
|
-
puts
|
|
119
|
+
puts center_pad.light_green
|
|
120
120
|
end
|
|
121
121
|
puts
|
|
122
122
|
|
|
@@ -165,10 +165,10 @@ module Dev
|
|
|
165
165
|
next unless File.exist?(project_dir)
|
|
166
166
|
|
|
167
167
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
168
|
-
header = "#{repo_basename} (#{original_branches[project_dir]})"
|
|
169
|
-
puts
|
|
168
|
+
header = " #{repo_basename} (#{original_branches[project_dir]}) "
|
|
169
|
+
puts center_pad(header).light_green
|
|
170
170
|
reset(dir: project_dir)
|
|
171
|
-
puts
|
|
171
|
+
puts center_pad.light_green
|
|
172
172
|
end
|
|
173
173
|
puts
|
|
174
174
|
end
|
|
@@ -191,9 +191,10 @@ module Dev
|
|
|
191
191
|
next unless File.exist?(project_dir)
|
|
192
192
|
|
|
193
193
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
194
|
-
|
|
194
|
+
header = " #{repo_basename} "
|
|
195
|
+
puts center_pad(header).light_green
|
|
195
196
|
@success &= checkout(branch, dir: project_dir)
|
|
196
|
-
puts
|
|
197
|
+
puts center_pad.light_green
|
|
197
198
|
end
|
|
198
199
|
puts
|
|
199
200
|
|
|
@@ -284,9 +285,10 @@ module Dev
|
|
|
284
285
|
next unless File.exist?(project_dir)
|
|
285
286
|
|
|
286
287
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
287
|
-
|
|
288
|
+
header = " #{repo_basename} "
|
|
289
|
+
puts center_pad(header).light_green
|
|
288
290
|
@success &= merge(branch, dir: project_dir)
|
|
289
|
-
puts
|
|
291
|
+
puts center_pad.light_green
|
|
290
292
|
end
|
|
291
293
|
puts
|
|
292
294
|
|
|
@@ -332,9 +334,10 @@ module Dev
|
|
|
332
334
|
next unless File.exist?(project_dir)
|
|
333
335
|
|
|
334
336
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
335
|
-
|
|
337
|
+
header = " #{repo_basename} "
|
|
338
|
+
puts center_pad(header).light_green
|
|
336
339
|
@success &= pull(dir: project_dir)
|
|
337
|
-
puts
|
|
340
|
+
puts center_pad.light_green
|
|
338
341
|
end
|
|
339
342
|
puts
|
|
340
343
|
|
|
@@ -370,9 +373,10 @@ module Dev
|
|
|
370
373
|
next unless File.exist?(project_dir)
|
|
371
374
|
|
|
372
375
|
repo_basename = File.basename(File.realpath(project_dir))
|
|
373
|
-
|
|
376
|
+
header = " #{repo_basename} "
|
|
377
|
+
puts center_pad(header).light_green
|
|
374
378
|
@success &= push(dir: project_dir)
|
|
375
|
-
puts
|
|
379
|
+
puts center_pad.light_green
|
|
376
380
|
end
|
|
377
381
|
puts
|
|
378
382
|
|
|
@@ -435,10 +439,11 @@ module Dev
|
|
|
435
439
|
end
|
|
436
440
|
|
|
437
441
|
# Center the string and pad on either side with the given padding character
|
|
438
|
-
# @deprecated Please use {Dev::Common#center_pad} instead
|
|
439
442
|
def center_pad(string = '', pad: '-', len: 80)
|
|
440
|
-
|
|
441
|
-
|
|
443
|
+
center_dash = len / 2
|
|
444
|
+
string = string.to_s
|
|
445
|
+
center_str = string.length / 2
|
|
446
|
+
string.rjust(center_dash + center_str - 1, pad).ljust(len - 1, pad)
|
|
442
447
|
end
|
|
443
448
|
|
|
444
449
|
# Exclude the command from the message and print all error lines
|
|
@@ -8,12 +8,11 @@ module Dev
|
|
|
8
8
|
DEFAULT_PACKAGE_FILE = 'composer.json'.freeze
|
|
9
9
|
|
|
10
10
|
# Config object for setting top level git config options
|
|
11
|
-
Config = Struct.new(:container_path, :local_path, :package_file
|
|
11
|
+
Config = Struct.new(:container_path, :local_path, :package_file) do
|
|
12
12
|
def initialize
|
|
13
13
|
self.container_path = DEFAULT_PATH
|
|
14
14
|
self.local_path = DEV_COMMANDS_ROOT_DIR
|
|
15
15
|
self.package_file = DEFAULT_PACKAGE_FILE
|
|
16
|
-
self.coverage = nil
|
|
17
16
|
end
|
|
18
17
|
end
|
|
19
18
|
|
|
@@ -31,14 +30,12 @@ module Dev
|
|
|
31
30
|
alias_method :configure, :config
|
|
32
31
|
end
|
|
33
32
|
|
|
34
|
-
attr_accessor :container_path, :local_path, :package_file
|
|
33
|
+
attr_accessor :container_path, :local_path, :package_file
|
|
35
34
|
|
|
36
|
-
def initialize(container_path: nil, local_path: nil, package_file: nil
|
|
35
|
+
def initialize(container_path: nil, local_path: nil, package_file: nil)
|
|
37
36
|
@container_path = container_path || self.class.config.container_path
|
|
38
37
|
@local_path = local_path || self.class.config.local_path
|
|
39
38
|
@package_file = package_file || self.class.config.package_file
|
|
40
|
-
@coverage = coverage || Dev::Coverage::None.new
|
|
41
|
-
raise 'coverage must be an instance of the base class' unless @coverage.is_a?(Dev::Coverage::Base)
|
|
42
39
|
end
|
|
43
40
|
|
|
44
41
|
# The base npm command that is the starting point for all subsequent commands
|
|
@@ -61,12 +58,9 @@ module Dev
|
|
|
61
58
|
end
|
|
62
59
|
|
|
63
60
|
# Build the command to fix any security vulnerabilities that were found
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
# audit_fix.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
68
|
-
# audit_fix
|
|
69
|
-
# end
|
|
61
|
+
def audit_fix_command
|
|
62
|
+
raise 'not implemented'
|
|
63
|
+
end
|
|
70
64
|
|
|
71
65
|
# Build the php install command
|
|
72
66
|
def install_command
|
|
@@ -79,7 +73,7 @@ module Dev
|
|
|
79
73
|
# Build the php lint command
|
|
80
74
|
def lint_command
|
|
81
75
|
lint = base_command
|
|
82
|
-
lint << 'lint'
|
|
76
|
+
lint << 'run' << 'lint'
|
|
83
77
|
lint.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
84
78
|
lint
|
|
85
79
|
end
|
|
@@ -87,7 +81,7 @@ module Dev
|
|
|
87
81
|
# Build the php lint fix command
|
|
88
82
|
def lint_fix_command
|
|
89
83
|
lint_fix = base_command
|
|
90
|
-
lint_fix << 'lint-fix'
|
|
84
|
+
lint_fix << 'run' << 'lint-fix'
|
|
91
85
|
lint_fix.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
92
86
|
lint_fix
|
|
93
87
|
end
|
|
@@ -95,24 +89,14 @@ module Dev
|
|
|
95
89
|
# Build the php test command
|
|
96
90
|
def test_command
|
|
97
91
|
test = []
|
|
98
|
-
|
|
99
|
-
test.concat(coverage.php_options) if coverage
|
|
92
|
+
lint_fix << 'run' << 'test'
|
|
100
93
|
test.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
101
94
|
test
|
|
102
95
|
end
|
|
103
96
|
|
|
104
|
-
#
|
|
105
|
-
def
|
|
106
|
-
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
# Build the php fast test command
|
|
110
|
-
def test_fast_command(processes = 4)
|
|
111
|
-
test = []
|
|
112
|
-
test << './vendor/bin/paratest'
|
|
113
|
-
test.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
114
|
-
test << "-p#{processes}" << '--runner=WrapperRunner'
|
|
115
|
-
test
|
|
97
|
+
# Build the php test (with coverage) command
|
|
98
|
+
def test_coverage_command
|
|
99
|
+
raise 'not implemented'
|
|
116
100
|
end
|
|
117
101
|
end
|
|
118
102
|
end
|
|
@@ -1,46 +1,39 @@
|
|
|
1
1
|
module Dev
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
# If an architecture was specified in the ENV, use that. Otherwise auto-deted based of the OS reported architecture
|
|
8
|
-
def architecture
|
|
9
|
-
arch = env_architecture || os_architecture
|
|
10
|
-
raise "Invalid DOCKER_ARCHITECTURE: #{arch} (allowed are #{ALLOWED_ARCHITECTURES.join(', ')})" unless ALLOWED_ARCHITECTURES.include?(arch)
|
|
11
|
-
|
|
12
|
-
arch
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
# Check to see if a docker architecture has been specified in the ENV
|
|
16
|
-
# If it has, verify the format and the value
|
|
17
|
-
private def env_architecture
|
|
18
|
-
arch = ENV['DOCKER_ARCHITECTURE'].to_s.strip.downcase
|
|
19
|
-
return nil if arch.empty?
|
|
2
|
+
class Common
|
|
3
|
+
# Class which returns information about the current platform
|
|
4
|
+
class Platform
|
|
5
|
+
# Constant containing all supported architectures
|
|
6
|
+
ALLOWED_ARCHITECTURES = %w(arm64 amd64).freeze
|
|
20
7
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
8
|
+
# Normalize the ruby platform to return a docker platform architecture format
|
|
9
|
+
def determine_compute_architecture
|
|
10
|
+
case RUBY_PLATFORM
|
|
11
|
+
when /x86_64|amd64/
|
|
12
|
+
'linux/amd64' # 64-bit Intel/AMD architecture
|
|
13
|
+
when /arm|aarch64/
|
|
14
|
+
'linux/arm64' # ARM architecture
|
|
15
|
+
else
|
|
16
|
+
raise 'Unknown or unsupported architecture'
|
|
17
|
+
end
|
|
18
|
+
end
|
|
24
19
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
# Determine the platform architecture
|
|
21
|
+
# If one was specified in the DOCKER_ARCHITECTURE variable, use it
|
|
22
|
+
# Otherwise, use the RUBY_PLATFORM built-in to auto-detect and architecture
|
|
23
|
+
def architecture
|
|
24
|
+
docker_architecture = ENV['DOCKER_ARCHITECTURE'].to_s.strip.downcase
|
|
25
|
+
if docker_architecture.empty?
|
|
26
|
+
determine_compute_architecture
|
|
27
|
+
else
|
|
28
|
+
raise "Missing 'linux/' prefix in DOCKER_ARCHITECTURE: #{docker_architecture}" unless docker_architecture.start_with?('linux/')
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
end
|
|
30
|
+
architecture_name = docker_architecture.split('/')[1]
|
|
31
|
+
unless ALLOWED_ARCHITECTURES.include?(architecture_name)
|
|
32
|
+
raise "Invalid DOCKER_ARCHITECTURE: #{architecture_name}. Allowed architectures are #{ALLOWED_ARCHITECTURES.join(', ')}"
|
|
33
|
+
end
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
# Class which returns information about the current platform
|
|
38
|
-
class Platform < Platform
|
|
39
|
-
# Initializer for the deprecated class
|
|
40
|
-
# @deprecated Please use {Dev::Platform#new} instead
|
|
41
|
-
def initialize
|
|
42
|
-
warn '[DEPRECATION] `Dev::Common::Platform#new` is deprecated. Please use `Dev::Platform#new` instead.'
|
|
43
|
-
super
|
|
35
|
+
docker_architecture
|
|
36
|
+
end
|
|
44
37
|
end
|
|
45
38
|
end
|
|
46
39
|
end
|
|
@@ -90,16 +90,14 @@ module Dev
|
|
|
90
90
|
|
|
91
91
|
# Build the bundle lint command
|
|
92
92
|
def lint_command
|
|
93
|
-
lint =
|
|
94
|
-
lint << 'exec' << 'rubocop'
|
|
93
|
+
lint = ['rubocop']
|
|
95
94
|
lint.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
96
95
|
lint
|
|
97
96
|
end
|
|
98
97
|
|
|
99
98
|
# Build the bundle lint fix command
|
|
100
99
|
def lint_fix_command
|
|
101
|
-
lint_fix =
|
|
102
|
-
lint_fix << 'exec' << 'rubocop'
|
|
100
|
+
lint_fix = ['rubocop']
|
|
103
101
|
lint_fix << '-A'
|
|
104
102
|
lint_fix.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
105
103
|
lint_fix
|
|
@@ -107,8 +105,7 @@ module Dev
|
|
|
107
105
|
|
|
108
106
|
# Build the bundle test command
|
|
109
107
|
def test_command
|
|
110
|
-
test =
|
|
111
|
-
test << 'exec' << 'rspec'
|
|
108
|
+
test = ['rspec']
|
|
112
109
|
test.concat(Dev::Common.new.tokenize(ENV['OPTS'].to_s))
|
|
113
110
|
test
|
|
114
111
|
end
|
|
@@ -2,13 +2,12 @@ module Dev
|
|
|
2
2
|
class TargetProcess
|
|
3
3
|
# Class for writing target process query statements
|
|
4
4
|
class Query
|
|
5
|
-
attr_accessor :where, :incl, :take
|
|
5
|
+
attr_accessor :where, :incl, :take
|
|
6
6
|
|
|
7
7
|
def initialize
|
|
8
8
|
@where = []
|
|
9
9
|
@incl = []
|
|
10
10
|
@take = 250
|
|
11
|
-
@empty = false
|
|
12
11
|
end
|
|
13
12
|
|
|
14
13
|
# Add a new query clause
|
|
@@ -34,11 +33,6 @@ module Dev
|
|
|
34
33
|
end
|
|
35
34
|
end
|
|
36
35
|
|
|
37
|
-
# Check if any of the "in" statements were empty. If so then we don't want to actually run the query
|
|
38
|
-
def empty?
|
|
39
|
-
@empty == true
|
|
40
|
-
end
|
|
41
|
-
|
|
42
36
|
# Generate the string representation for this query
|
|
43
37
|
def generate
|
|
44
38
|
{}.tap do |clause|
|
|
@@ -56,38 +50,22 @@ module Dev
|
|
|
56
50
|
# TODO: Do these need moved to their associated entities?
|
|
57
51
|
# Add a filter that looks for stories whose id is contained in the list of ids given
|
|
58
52
|
def filter_by_user_story_ids(user_story_ids)
|
|
59
|
-
if user_story_ids.nil? || user_story_ids.empty?
|
|
60
|
-
@empty = true
|
|
61
|
-
return
|
|
62
|
-
end
|
|
63
53
|
self << "(Id in ('#{user_story_ids.join("', '")}'))"
|
|
64
54
|
end
|
|
65
55
|
|
|
66
56
|
# Add a filter that looks for stories whose team id is contained in the list of ids given
|
|
67
57
|
def filter_by_team_ids(team_ids)
|
|
68
|
-
|
|
69
|
-
@empty = true
|
|
70
|
-
return
|
|
71
|
-
end
|
|
72
|
-
self << "(Team.Id in ('#{team_ids.join("', '")}'))"
|
|
58
|
+
self << "(Team.Id in ('#{team_ids.join("', '")}'))" unless team_ids.nil? || team_ids.empty?
|
|
73
59
|
end
|
|
74
60
|
|
|
75
61
|
# Add a filter that looks for stories whose project id is contained in the list of ids given
|
|
76
62
|
def filter_by_project(projects)
|
|
77
|
-
if projects.nil? || projects.empty?
|
|
78
|
-
@empty = true
|
|
79
|
-
return
|
|
80
|
-
end
|
|
81
63
|
self << "(Project.Name in ('#{projects.join("', '")}'))"
|
|
82
64
|
end
|
|
83
65
|
|
|
84
66
|
# Add a filter that looks for stories whose state is contained in the list of states given
|
|
85
67
|
def filter_by_states(states)
|
|
86
|
-
|
|
87
|
-
@empty = true
|
|
88
|
-
return
|
|
89
|
-
end
|
|
90
|
-
self << "(EntityState.Name in ('#{states.join("', '")}'))"
|
|
68
|
+
self << "(EntityState.Name in ('#{states.join("', '")}'))" unless states.nil? || states.empty?
|
|
91
69
|
end
|
|
92
70
|
|
|
93
71
|
# Add a filter that looks for stories whose state is set to final
|
|
@@ -136,11 +114,7 @@ module Dev
|
|
|
136
114
|
|
|
137
115
|
# Add a filter that looks for assignable ids which are included in the given array
|
|
138
116
|
def filter_by_entity_ids(entity_ids)
|
|
139
|
-
|
|
140
|
-
@empty = true
|
|
141
|
-
return
|
|
142
|
-
end
|
|
143
|
-
self << "(Assignable.Id in ('#{entity_ids.join("', '")}'))"
|
|
117
|
+
self << "(Assignable.Id in ('#{entity_ids.join("', '")}'))" unless entity_ids.nil? || entity_ids.empty?
|
|
144
118
|
end
|
|
145
119
|
|
|
146
120
|
# Add a filter that looks for a custom deploy date between the given dates`
|
|
@@ -15,7 +15,7 @@ module Dev
|
|
|
15
15
|
# The text of the url variable key
|
|
16
16
|
TP_URL = 'TP_URL'.freeze
|
|
17
17
|
|
|
18
|
-
# Config object for setting top level
|
|
18
|
+
# Config object for setting top level jira config options
|
|
19
19
|
Config = Struct.new(:username, :password, :url, :http_debug) do
|
|
20
20
|
def initialize
|
|
21
21
|
Dotenv.load(CONFIG_FILE) if File.exist?(CONFIG_FILE)
|
|
@@ -117,8 +117,6 @@ module Dev
|
|
|
117
117
|
# Call the given block (if present) with each piece of data
|
|
118
118
|
# Return all pieces of data
|
|
119
119
|
def get(path, query, &)
|
|
120
|
-
return [] if query.empty?
|
|
121
|
-
|
|
122
120
|
query_string = query.generate
|
|
123
121
|
url = "/api/v1/#{path}"
|
|
124
122
|
url << "?#{URI.encode_www_form(query_string)}" unless query_string.empty?
|
|
@@ -101,22 +101,14 @@ module Dev
|
|
|
101
101
|
|
|
102
102
|
DEV_COMMANDS_TOP_LEVEL.instance_eval do
|
|
103
103
|
return if exclude.include?(:eol)
|
|
104
|
-
return if ENV.fetch('CHECK_AWS', nil).to_s.strip == 'false'
|
|
105
104
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
105
|
+
desc 'Compares the current date to the EOL date for supported resources'
|
|
106
|
+
task eol: %w(init ensure_aws_credentials) do
|
|
107
|
+
account_id = Dev::Aws::Profile.new.current
|
|
108
|
+
account_name = Dev::Aws::Account.new.name_by_account(account_id)
|
|
109
|
+
LOG.info " Current AWS Account is #{account_name} (#{account_id})".light_yellow
|
|
109
110
|
|
|
110
|
-
|
|
111
|
-
desc 'Compares the current date to the EOL date for supported aws resources'
|
|
112
|
-
task aws: %w(init ensure_aws_credentials) do
|
|
113
|
-
account_id = Dev::Aws::Profile.new.current
|
|
114
|
-
account_name = Dev::Aws::Account.new.name_by_account(account_id)
|
|
115
|
-
LOG.info " Current AWS Account is #{account_name} (#{account_id})".light_yellow
|
|
116
|
-
puts
|
|
117
|
-
Dev::EndOfLife.new(product_versions: Dev::EndOfLife::Aws.new.default_products).status
|
|
118
|
-
puts
|
|
119
|
-
end
|
|
111
|
+
Dev::EndOfLife.new(product_versions: Dev::EndOfLife::Aws.new.default_products).check
|
|
120
112
|
end
|
|
121
113
|
end
|
|
122
114
|
end
|
|
@@ -72,7 +72,7 @@ module Dev
|
|
|
72
72
|
return if exclude.include?(:sh)
|
|
73
73
|
|
|
74
74
|
desc "Open a shell into a running #{application} container"
|
|
75
|
-
task sh: %W(init_docker #{application}:
|
|
75
|
+
task sh: %W(init_docker #{application}:up _pre_sh_hooks) do
|
|
76
76
|
Dev::Docker::Compose.new(services: [application]).sh
|
|
77
77
|
Rake::Task[:_post_sh_hooks].execute
|
|
78
78
|
end
|
|
@@ -154,7 +154,7 @@ module Dev
|
|
|
154
154
|
return if exclude.include?(:reload)
|
|
155
155
|
|
|
156
156
|
desc "Reloads the #{application} container"
|
|
157
|
-
task reload: %w(init_docker _pre_reload_hooks down
|
|
157
|
+
task reload: %w(init_docker _pre_reload_hooks down up) do
|
|
158
158
|
Rake::Task[:_post_reload_hooks].execute
|
|
159
159
|
end
|
|
160
160
|
end
|