firespring_dev_commands 1.5.4 → 2.0.0.pre.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/firespring_dev_commands/audit/report.rb +1 -1
- data/lib/firespring_dev_commands/aws/account.rb +9 -21
- data/lib/firespring_dev_commands/aws/cloudformation.rb +7 -7
- data/lib/firespring_dev_commands/aws/codepipeline.rb +1 -1
- data/lib/firespring_dev_commands/aws/credentials.rb +5 -9
- data/lib/firespring_dev_commands/aws/login.rb +12 -14
- data/lib/firespring_dev_commands/aws/parameter.rb +2 -2
- data/lib/firespring_dev_commands/aws/s3.rb +1 -1
- data/lib/firespring_dev_commands/docker/compose.rb +16 -7
- data/lib/firespring_dev_commands/docker.rb +3 -8
- data/lib/firespring_dev_commands/git.rb +3 -3
- data/lib/firespring_dev_commands/jira/user.rb +1 -1
- data/lib/firespring_dev_commands/jira.rb +5 -5
- data/lib/firespring_dev_commands/node/audit.rb +1 -1
- data/lib/firespring_dev_commands/templates/aws.rb +1 -1
- data/lib/firespring_dev_commands/templates/base_interface.rb +1 -1
- data/lib/firespring_dev_commands/templates/ci.rb +2 -2
- data/lib/firespring_dev_commands/templates/docker/node/application.rb +5 -5
- data/lib/firespring_dev_commands/templates/docker/php/application.rb +5 -5
- data/lib/firespring_dev_commands/templates/docker/ruby/application.rb +5 -5
- data/lib/firespring_dev_commands/templates/eol.rb +1 -1
- data/lib/firespring_dev_commands/templates/git.rb +1 -1
- data/lib/firespring_dev_commands/version.rb +1 -1
- data/lib/firespring_dev_commands.rb +2 -0
- metadata +31 -187
- data/lib/firespring_dev_commands/slack/global.rb +0 -32
- data/lib/firespring_dev_commands/slack.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0b0b0b93719ba8c6b8ddb34f39777bf1f2e4ee5eb95e85c1a1eb0f45e78a9441
|
4
|
+
data.tar.gz: '08d558e6e2b846d266b158ebf8b6b8eba3e620e3e2002ab77a7876dec65189ec'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5065bf94f9f4f0492794b4b944a01c017f31eab27d659827fa82c1512bec2c91b9da331e3fa114a49ba9afab75bcce94375955a55d4f00d0066a6149b960beb5
|
7
|
+
data.tar.gz: 3accee26e593d454a1c87f2cdcb865a723ab5cd12be8b3da1960b86fc5aa12eff6303f2fcc1f8f69e280e14487be132f2b2b27c879d33699ed92e193900a38e9
|
@@ -23,10 +23,6 @@ module Dev
|
|
23
23
|
# The name of the file containing the Aws settings
|
24
24
|
CONFIG_FILE = "#{Dev::Aws::CONFIG_DIR}/config".freeze
|
25
25
|
|
26
|
-
def self.config_ini
|
27
|
-
IniFile.new(filename: CONFIG_FILE, default: 'default')
|
28
|
-
end
|
29
|
-
|
30
26
|
# TODO: registry is deprecated and should be removed on the next major release
|
31
27
|
attr_accessor :root, :children, :default, :registry, :ecr_registry_ids
|
32
28
|
|
@@ -79,7 +75,7 @@ module Dev
|
|
79
75
|
puts 'Configuring default login values'
|
80
76
|
|
81
77
|
# Write region and mfa serial to config file
|
82
|
-
cfgini =
|
78
|
+
cfgini = IniFile.new(filename: "#{Dev::Aws::CONFIG_DIR}/config", default: 'default')
|
83
79
|
defaultini = cfgini['default']
|
84
80
|
|
85
81
|
region_default = defaultini['region'] || ENV['AWS_DEFAULT_REGION'] || Dev::Aws::DEFAULT_REGION
|
@@ -105,7 +101,7 @@ module Dev
|
|
105
101
|
# Setup Aws account specific settings
|
106
102
|
def setup!(account)
|
107
103
|
# Run base setup if it doesn't exist
|
108
|
-
Rake::Task['aws:configure:default'].invoke unless File.exist?(CONFIG_FILE)
|
104
|
+
Rake::Task['aws:configure:default'].invoke unless File.exist?(CONFIG_FILE)
|
109
105
|
|
110
106
|
puts
|
111
107
|
puts "Configuring #{account} login values"
|
@@ -119,7 +115,7 @@ module Dev
|
|
119
115
|
raise 'Configure default account settings first (rake aws:configure:default)' unless File.exist?(CONFIG_FILE)
|
120
116
|
|
121
117
|
# Parse the ini file and load values
|
122
|
-
cfgini =
|
118
|
+
cfgini = IniFile.new(filename: CONFIG_FILE, default: 'default')
|
123
119
|
defaultini = cfgini['default']
|
124
120
|
profileini = cfgini["profile #{account}"]
|
125
121
|
|
@@ -128,21 +124,13 @@ module Dev
|
|
128
124
|
region_default = profileini['region'] || defaultini['region'] || ENV['AWS_DEFAULT_REGION'] || Dev::Aws::DEFAULT_REGION
|
129
125
|
profileini['region'] = Dev::Common.new.ask('Default region name', region_default)
|
130
126
|
|
131
|
-
# NOTE:
|
132
|
-
#
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
elsif profileini['role_arn']
|
137
|
-
profileini['role_arn']&.split(%r{role/})&.last
|
138
|
-
else
|
139
|
-
self.class.config.default_login_role_name
|
140
|
-
end
|
141
|
-
role_name = Dev::Common.new.ask('Default role name', role_name_default)
|
142
|
-
profileini['role_arn'] = "arn:aws:iam::#{account}:role/#{role_name}"
|
143
|
-
# TODO: role_name is deprecated. Eventually, we should delete the role_name entry from the config. Leaving it for now
|
127
|
+
# NOTE: We had an old config for "role_arn" which included the entire arn. We deprecated that config since
|
128
|
+
# it made it much more difficult to switch between different accounts.
|
129
|
+
role_name_default = profileini['role_name'] || profileini['role_arn']&.split(%r{role/})&.last || self.class.config.default_login_role_name
|
130
|
+
profileini['role_name'] = Dev::Common.new.ask('Default role name', role_name_default)
|
131
|
+
# TODO: role_arn is deprecated. Eventually, we should delete the role_arn entry from the config. Leaving it for now
|
144
132
|
# because some projects may be using older versions of the dev_commands library
|
145
|
-
# profileini.delete('
|
133
|
+
# profileini.delete('role_arn')
|
146
134
|
|
147
135
|
cfgini.write
|
148
136
|
end
|
@@ -49,9 +49,9 @@ module Dev
|
|
49
49
|
# Create the cloudformation stack
|
50
50
|
client.create_stack(
|
51
51
|
stack_name: name,
|
52
|
-
template_url
|
52
|
+
template_url:,
|
53
53
|
parameters: parameters.default,
|
54
|
-
capabilities
|
54
|
+
capabilities:,
|
55
55
|
on_failure: failure_behavior
|
56
56
|
)
|
57
57
|
@state = STARTED
|
@@ -77,9 +77,9 @@ module Dev
|
|
77
77
|
# Update the cloudformation stack
|
78
78
|
client.update_stack(
|
79
79
|
stack_name: name,
|
80
|
-
template_url
|
80
|
+
template_url:,
|
81
81
|
parameters: parameters.preserve,
|
82
|
-
capabilities:
|
82
|
+
capabilities:
|
83
83
|
)
|
84
84
|
@state = STARTED
|
85
85
|
LOG.info "#{name} stack update started at #{Time.now.to_s.light_yellow}"
|
@@ -144,8 +144,8 @@ module Dev
|
|
144
144
|
|
145
145
|
client.wait_until(
|
146
146
|
:"stack_#{type}",
|
147
|
-
{stack_name:
|
148
|
-
{max_attempts
|
147
|
+
{stack_name:},
|
148
|
+
{max_attempts:, delay:}
|
149
149
|
)
|
150
150
|
rescue ::Aws::Waiters::Errors::WaiterFailed => e
|
151
151
|
raise "Action failed to complete: #{e.message}"
|
@@ -181,7 +181,7 @@ module Dev
|
|
181
181
|
s3 = Dev::Aws::S3.new
|
182
182
|
template_bucket = s3.cf_bucket.name
|
183
183
|
key = "#{File.basename(filename)}/#{SecureRandom.uuid}"
|
184
|
-
s3.put(bucket: template_bucket, key
|
184
|
+
s3.put(bucket: template_bucket, key:, filename:)
|
185
185
|
end
|
186
186
|
end
|
187
187
|
end
|
@@ -39,7 +39,7 @@ module Dev
|
|
39
39
|
|
40
40
|
# Find all pipelines matching the regex_match and find the status for each of them
|
41
41
|
def status(name)
|
42
|
-
pipeline = client.get_pipeline_state(name:
|
42
|
+
pipeline = client.get_pipeline_state(name:)
|
43
43
|
print_pipeline_information(pipeline)
|
44
44
|
rescue ::Aws::CodePipeline::Errors::PipelineNotFoundException
|
45
45
|
LOG.error "No pipeline found with name #{name}".light_yellow
|
@@ -11,10 +11,6 @@ module Dev
|
|
11
11
|
# The local file where temporary credentials are stored
|
12
12
|
CONFIG_FILE = "#{Dev::Aws::CONFIG_DIR}/credentials".freeze
|
13
13
|
|
14
|
-
def self.config_ini
|
15
|
-
IniFile.new(filename: CONFIG_FILE, default: 'default')
|
16
|
-
end
|
17
|
-
|
18
14
|
# The account the profile is currently logged in to
|
19
15
|
def logged_in_account
|
20
16
|
::Aws::STS::Client.new.get_caller_identity.account
|
@@ -49,7 +45,7 @@ module Dev
|
|
49
45
|
|
50
46
|
# Check for expired credentials
|
51
47
|
begin
|
52
|
-
::Aws::STS::Client.new(profile:
|
48
|
+
::Aws::STS::Client.new(profile:).get_caller_identity
|
53
49
|
rescue
|
54
50
|
return false
|
55
51
|
end
|
@@ -57,7 +53,7 @@ module Dev
|
|
57
53
|
# Check for invalid credentials
|
58
54
|
begin
|
59
55
|
# TODO: Is there a better check we can do here?
|
60
|
-
::Aws::SSM::Client.new(profile:
|
56
|
+
::Aws::SSM::Client.new(profile:).describe_parameters(max_results: 1)
|
61
57
|
rescue
|
62
58
|
return false
|
63
59
|
end
|
@@ -76,7 +72,7 @@ module Dev
|
|
76
72
|
puts 'Configuring default credential values'
|
77
73
|
|
78
74
|
# Write access key / secret key in the credentials file
|
79
|
-
credini =
|
75
|
+
credini = IniFile.new(filename: "#{Dev::Aws::CONFIG_DIR}/credentials", default: 'default')
|
80
76
|
defaultini = credini['default']
|
81
77
|
|
82
78
|
access_key_default = defaultini['aws_access_key_id']
|
@@ -91,7 +87,7 @@ module Dev
|
|
91
87
|
# Write Aws account specific settings to the credentials file
|
92
88
|
def write!(account, creds)
|
93
89
|
# Write access key / secret key / session token in the credentials file
|
94
|
-
credini =
|
90
|
+
credini = IniFile.new(filename: CONFIG_FILE, default: 'default')
|
95
91
|
defaultini = credini[account]
|
96
92
|
|
97
93
|
defaultini['aws_access_key_id'] = creds.access_key_id
|
@@ -136,7 +132,7 @@ module Dev
|
|
136
132
|
return unless File.exist?(CONFIG_FILE)
|
137
133
|
|
138
134
|
# Otherwise load access key / secret key / session token from the credentials file into the environment
|
139
|
-
credini =
|
135
|
+
credini = IniFile.new(filename: CONFIG_FILE, default: 'default')
|
140
136
|
profile_credentials = credini[Dev::Aws::Profile.new.current]
|
141
137
|
return unless profile_credentials
|
142
138
|
|
@@ -42,11 +42,9 @@ module Dev
|
|
42
42
|
serial = "arn:aws:iam::#{Dev::Aws::Account.new.root.id}:mfa/#{serial}" if serial
|
43
43
|
serial ||= profileini['mfa_serial'] || defaultini['mfa_serial']
|
44
44
|
|
45
|
-
role = profileini['
|
46
|
-
|
47
|
-
|
48
|
-
role ||= "arn:aws:iam::#{account}:role/#{profileini['role_name'] || defaultini['role_name']}"
|
49
|
-
# TODO: role_name is deprecated. Eventually, we should remove the above line
|
45
|
+
role = profileini['role_name'] || defaultini['role_name']
|
46
|
+
role = "arn:aws:iam::#{account}:role/#{role}" if role
|
47
|
+
role ||= profileini['role_arn'] || defaultini['role_arn']
|
50
48
|
|
51
49
|
session_name = profileini['role_session_name'] || defaultini['role_session_name']
|
52
50
|
session_duration = profileini['session_duration'] || defaultini['session_duration']
|
@@ -58,7 +56,7 @@ module Dev
|
|
58
56
|
code = ENV['AWS_TOKEN_CODE'] || Dev::Common.new.ask("Enter the MFA code for the #{ENV.fetch('USERNAME', '')} user serial #{serial}")
|
59
57
|
raise 'MFA is required' unless code.to_s.strip
|
60
58
|
|
61
|
-
sts = ::Aws::STS::Client.new(profile: 'default', region:
|
59
|
+
sts = ::Aws::STS::Client.new(profile: 'default', region:)
|
62
60
|
creds = sts.assume_role(
|
63
61
|
serial_number: serial,
|
64
62
|
role_arn: role,
|
@@ -74,10 +72,10 @@ module Dev
|
|
74
72
|
# Returns the config ini file
|
75
73
|
# Runs the setup for our current account if it's not already setup
|
76
74
|
def setup_cfgini(account)
|
77
|
-
cfgini = Dev::Aws::
|
75
|
+
cfgini = IniFile.new(filename: "#{Dev::Aws::CONFIG_DIR}/config", default: 'default')
|
78
76
|
unless cfgini.has_section?("profile #{account}")
|
79
77
|
Dev::Aws::Account.new.write!(account)
|
80
|
-
cfgini = Dev::Aws::
|
78
|
+
cfgini = IniFile.new(filename: "#{Dev::Aws::CONFIG_DIR}/config", default: 'default')
|
81
79
|
end
|
82
80
|
cfgini
|
83
81
|
end
|
@@ -90,7 +88,7 @@ module Dev
|
|
90
88
|
return if registry_ids.empty?
|
91
89
|
|
92
90
|
puts
|
93
|
-
registry_ids.each { |id| registry_login!(registry_id: id, region:
|
91
|
+
registry_ids.each { |id| registry_login!(registry_id: id, region:) }
|
94
92
|
puts
|
95
93
|
end
|
96
94
|
|
@@ -103,8 +101,8 @@ module Dev
|
|
103
101
|
raise 'region is required' if region.to_s.strip.empty?
|
104
102
|
|
105
103
|
registry = "#{registry_id}.dkr.ecr.#{region}.amazonaws.com"
|
106
|
-
docker_cli_login!(registry
|
107
|
-
docker_lib_login!(registry_id
|
104
|
+
docker_cli_login!(registry:, region:)
|
105
|
+
docker_lib_login!(registry_id:, region:)
|
108
106
|
|
109
107
|
ENV['ECR_REGISTRY_ID'] ||= registry_id
|
110
108
|
ENV['ECR_REGISTRY'] ||= registry
|
@@ -117,7 +115,7 @@ module Dev
|
|
117
115
|
registry_id ||= Dev::Aws::Account.new.ecr_registry_ids.first
|
118
116
|
region ||= Dev::Aws::Credentials.new.logged_in_region || Dev::Aws::DEFAULT_REGION
|
119
117
|
warn '[DEPRECATION] `Dev::Aws::Login#docker_login!` is deprecated. Please use `Dev::Aws::Login#registry_login!` instead.'
|
120
|
-
docker_cli_login!(registry: "#{registry_id}.dkr.ecr.#{region}.amazonaws.com", region:
|
118
|
+
docker_cli_login!(registry: "#{registry_id}.dkr.ecr.#{region}.amazonaws.com", region:)
|
121
119
|
puts
|
122
120
|
end
|
123
121
|
|
@@ -137,13 +135,13 @@ module Dev
|
|
137
135
|
registry_id ||= Dev::Aws::Account.new.ecr_registry_ids.first
|
138
136
|
region ||= Dev::Aws::Credentials.new.logged_in_region || Dev::Aws::DEFAULT_REGION
|
139
137
|
warn '[DEPRECATION] `Dev::Aws::Login#ecr_login!` is deprecated. Please use `Dev::Aws::Login#registry_login!` instead.'
|
140
|
-
docker_lib_login!(registry_id
|
138
|
+
docker_lib_login!(registry_id:, region:)
|
141
139
|
end
|
142
140
|
|
143
141
|
# Authroizes the docker ruby library to pull/push images from the Aws container registry
|
144
142
|
private def docker_lib_login!(registry_id:, region:)
|
145
143
|
# Grab your authentication token from AWS ECR
|
146
|
-
ecr_client = ::Aws::ECR::Client.new(region:
|
144
|
+
ecr_client = ::Aws::ECR::Client.new(region:)
|
147
145
|
tokens = ecr_client.get_authorization_token(registry_ids: Array(registry_id)).authorization_data
|
148
146
|
tokens.each do |token|
|
149
147
|
# Remove the https:// to authenticate
|
@@ -18,12 +18,12 @@ module Dev
|
|
18
18
|
|
19
19
|
# Get the value of the given parameter name
|
20
20
|
def get_value(name, with_decryption: true)
|
21
|
-
get(name, with_decryption:
|
21
|
+
get(name, with_decryption:)&.value
|
22
22
|
end
|
23
23
|
|
24
24
|
# Retrieve the ssm parameter object with the given name
|
25
25
|
def get(name, with_decryption: true)
|
26
|
-
client.get_parameter(name
|
26
|
+
client.get_parameter(name:, with_decryption:)&.parameter
|
27
27
|
rescue ::Aws::SSM::Errors::ParameterNotFound
|
28
28
|
raise "parameter #{name} does not exist in #{Dev::Aws::Profile.new.current}"
|
29
29
|
end
|
@@ -22,7 +22,7 @@ module Dev
|
|
22
22
|
def put(bucket:, key:, filename:, acl: 'private')
|
23
23
|
begin
|
24
24
|
File.open(filename, 'rb') do |file|
|
25
|
-
client.put_object(bucket
|
25
|
+
client.put_object(bucket:, key:, body: file, acl:)
|
26
26
|
end
|
27
27
|
rescue => e
|
28
28
|
raise "s3 file upload failed: #{e.message}"
|
@@ -8,8 +8,9 @@ module Dev
|
|
8
8
|
# Class containing methods for interfacing with the docker compose cli
|
9
9
|
class Compose
|
10
10
|
# Config object for setting top level docker compose config options
|
11
|
-
Config = Struct.new(:project_dir, :project_name, :compose_files, :min_version, :max_version) do
|
11
|
+
Config = Struct.new(:executable_name, :project_dir, :project_name, :compose_files, :min_version, :max_version) do
|
12
12
|
def initialize
|
13
|
+
self.executable_name = EXECUTABLE_NAME
|
13
14
|
self.project_dir = DEV_COMMANDS_ROOT_DIR
|
14
15
|
self.project_name = DEV_COMMANDS_PROJECT_NAME
|
15
16
|
self.compose_files = ["#{DEV_COMMANDS_ROOT_DIR}/docker-compose.yml"]
|
@@ -69,12 +70,12 @@ module Dev
|
|
69
70
|
# Checks the min and max version against the current docker version if they have been configured
|
70
71
|
def check_version
|
71
72
|
min_version = self.class.config.min_version
|
72
|
-
|
73
|
-
|
73
|
+
version_too_low = min_version && !Dev::Common.new.version_greater_than(min_version, self.class.version)
|
74
|
+
raise "requires #{self.class.config.executable_name} version >= #{min_version} (found #{self.class.version})" if version_too_low
|
74
75
|
|
75
76
|
max_version = self.class.config.max_version
|
76
|
-
|
77
|
-
|
77
|
+
version_too_high = max_version && Dev::Common.new.version_greater_than(max_version, self.class.version)
|
78
|
+
raise "requires #{self.class.config.executable_name} version < #{max_version} (found #{self.class.version})" if version_too_high
|
78
79
|
end
|
79
80
|
|
80
81
|
# Pull in supported env settings and call build
|
@@ -83,6 +84,7 @@ module Dev
|
|
83
84
|
def build
|
84
85
|
merge_options('--parallel')
|
85
86
|
merge_env_pull_option
|
87
|
+
merge_env_push_option
|
86
88
|
merge_env_cache_option
|
87
89
|
execute_command(build_command('build'))
|
88
90
|
end
|
@@ -181,6 +183,13 @@ module Dev
|
|
181
183
|
merge_options('--pull') if ENV['PULL'].to_s.strip == 'true'
|
182
184
|
end
|
183
185
|
|
186
|
+
# Merge --push option if PUSH is set to true and no existing push options are present
|
187
|
+
private def merge_env_push_option
|
188
|
+
return if @options.any? { |it| it.include?('push') }
|
189
|
+
|
190
|
+
merge_options('--push') if ENV['PUSH'].to_s.strip == 'true'
|
191
|
+
end
|
192
|
+
|
184
193
|
# Merge --no-build option unless BUILD is set to true and no existing build options are present
|
185
194
|
private def merge_env_build_option
|
186
195
|
return if @options.any? { |it| it.include?('build') }
|
@@ -230,7 +239,7 @@ module Dev
|
|
230
239
|
|
231
240
|
# Build the compose command with the given inputs
|
232
241
|
private def build_command(action, *cmd)
|
233
|
-
command =
|
242
|
+
command = self.class.config.executable_name.split(/\s+/)
|
234
243
|
command << '--project-directory' << project_dir
|
235
244
|
command << '-p' << project_name if project_name
|
236
245
|
Array(compose_files).compact.each { |file| command << '-f' << file }
|
@@ -264,7 +273,7 @@ module Dev
|
|
264
273
|
# Print the compose command that will be executed and then execute it
|
265
274
|
private def execute_command(command)
|
266
275
|
LOG.debug " > #{command.join(' ')}"
|
267
|
-
::Dev::Common.new.run_command(command, capture:
|
276
|
+
::Dev::Common.new.run_command(command, capture:)
|
268
277
|
end
|
269
278
|
end
|
270
279
|
end
|
@@ -74,7 +74,7 @@ module Dev
|
|
74
74
|
def prune_volumes
|
75
75
|
opts = {}
|
76
76
|
opts[:filters] = {all: ['true']}.to_json if Dev::Common.new.version_greater_than('22.9999.0', self.class.version) && ENV['ALL_VOLUMES'].to_s.strip != 'false'
|
77
|
-
_prune('volumes', opts:
|
77
|
+
_prune('volumes', opts:)
|
78
78
|
end
|
79
79
|
|
80
80
|
# Prunes/removes all unused images
|
@@ -88,7 +88,7 @@ module Dev
|
|
88
88
|
format_prune(type, response)
|
89
89
|
rescue ::Docker::Error::ServerError => e
|
90
90
|
# Specifically check for 'prune already running' error and retry if found
|
91
|
-
if
|
91
|
+
if e.to_s.include?('already running')
|
92
92
|
sleep 2
|
93
93
|
retry
|
94
94
|
end
|
@@ -201,8 +201,6 @@ module Dev
|
|
201
201
|
private def image_info(image)
|
202
202
|
[].tap do |ary|
|
203
203
|
arch = image.json&.dig('Architecture')
|
204
|
-
variant = image.json&.dig('Variant')
|
205
|
-
arch = "#{arch}/#{variant}" if variant
|
206
204
|
id = image.info&.dig('id')&.split(':')&.last&.slice(0..11)
|
207
205
|
created = timesince(Time.at(image.info&.dig('Created')))
|
208
206
|
size = filesize(image.info&.dig('Size'))
|
@@ -255,10 +253,7 @@ module Dev
|
|
255
253
|
private def container_info(container)
|
256
254
|
id = container.id&.slice(0..11)
|
257
255
|
image = container.info&.dig('Image')
|
258
|
-
|
259
|
-
arch = image_json&.dig('Architecture')
|
260
|
-
variant = image_json&.dig('Variant')
|
261
|
-
arch = "#{arch}/#{variant}" if variant
|
256
|
+
arch = ::Docker::Image.get(image).json&.dig('Architecture')
|
262
257
|
command = container.info&.dig('Command')
|
263
258
|
created = timesince(Time.at(container.info&.dig('Created')))
|
264
259
|
status = container.info&.dig('Status')
|
@@ -289,7 +289,7 @@ module Dev
|
|
289
289
|
raise 'branch does not exist' unless branch_exists?(dir, branch)
|
290
290
|
|
291
291
|
# No need to merge into ourself
|
292
|
-
current_branch = branch_name(dir:
|
292
|
+
current_branch = branch_name(dir:)
|
293
293
|
return true if current_branch == branch
|
294
294
|
|
295
295
|
indent "Merging #{branch} into #{current_branch}"
|
@@ -326,7 +326,7 @@ module Dev
|
|
326
326
|
g = ::Git.open(dir)
|
327
327
|
g.fetch('origin', prune: true)
|
328
328
|
|
329
|
-
branch = branch_name(dir:
|
329
|
+
branch = branch_name(dir:)
|
330
330
|
indent "Pulling branch #{branch} from origin"
|
331
331
|
indent g.pull('origin', branch)
|
332
332
|
true
|
@@ -361,7 +361,7 @@ module Dev
|
|
361
361
|
g = ::Git.open(dir)
|
362
362
|
g.fetch('origin', prune: true)
|
363
363
|
|
364
|
-
branch = branch_name(dir:
|
364
|
+
branch = branch_name(dir:)
|
365
365
|
indent "Pushing branch #{branch} to origin"
|
366
366
|
indent g.push('origin', branch)
|
367
367
|
true
|
@@ -23,7 +23,7 @@ module Dev
|
|
23
23
|
# If none is found, it returns a Jira user object with only the id set
|
24
24
|
def self.lookup(id)
|
25
25
|
user = Dev::Jira.config.user_lookup_list&.find { |it| it.id == id }
|
26
|
-
user ||= new(name: '', email: '', id:
|
26
|
+
user ||= new(name: '', email: '', id:)
|
27
27
|
user
|
28
28
|
end
|
29
29
|
end
|
@@ -59,19 +59,19 @@ module Dev
|
|
59
59
|
end
|
60
60
|
|
61
61
|
# Query jira using the given jql and yield each matching result
|
62
|
-
def issues(jql, &
|
62
|
+
def issues(jql, &)
|
63
63
|
start_at = 0
|
64
64
|
max_results = 100
|
65
65
|
|
66
66
|
# Query Jira and yield all issues it returns
|
67
|
-
issues = @client.Issue.jql(jql, start_at
|
68
|
-
issues.map { |data| Issue.new(data) }.each(&
|
67
|
+
issues = @client.Issue.jql(jql, start_at:, max_results:)
|
68
|
+
issues.map { |data| Issue.new(data) }.each(&)
|
69
69
|
|
70
70
|
# If we returned the max_results then there may be more - add the max results to where we start at and query again
|
71
71
|
while issues.length >= max_results
|
72
72
|
start_at += max_results
|
73
|
-
issues = @client.Issue.jql(jql, start_at
|
74
|
-
issues.map { |data| Issue.new(data) }.each(&
|
73
|
+
issues = @client.Issue.jql(jql, start_at:, max_results:)
|
74
|
+
issues.map { |data| Issue.new(data) }.each(&)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative '
|
1
|
+
require_relative 'base_interface'
|
2
2
|
|
3
3
|
module Dev
|
4
4
|
module Template
|
@@ -12,7 +12,7 @@ module Dev
|
|
12
12
|
@cloudformations = Array(cloudformation).sort_by(&:name)
|
13
13
|
raise 'must specify an arry of cloudformation objects' unless @cloudformations.all?(Dev::Aws::Cloudformation)
|
14
14
|
|
15
|
-
super(exclude:
|
15
|
+
super(exclude:)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Create the rake task for creating the codepipeline
|
@@ -11,8 +11,8 @@ module Dev
|
|
11
11
|
|
12
12
|
# Allow for custom container path for the application
|
13
13
|
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
14
|
-
@node = Dev::Node.new(container_path
|
15
|
-
super(application, exclude:
|
14
|
+
@node = Dev::Node.new(container_path:, local_path:)
|
15
|
+
super(application, exclude:)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Create the rake task which runs linting for the application name
|
@@ -36,7 +36,7 @@ module Dev
|
|
36
36
|
|
37
37
|
options = []
|
38
38
|
options << '-T' if Dev::Common.new.running_codebuild?
|
39
|
-
Dev::Docker::Compose.new(services: application, options:
|
39
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*node.lint_command)
|
40
40
|
end
|
41
41
|
|
42
42
|
namespace :lint do
|
@@ -46,7 +46,7 @@ module Dev
|
|
46
46
|
|
47
47
|
options = []
|
48
48
|
options << '-T' if Dev::Common.new.running_codebuild?
|
49
|
-
Dev::Docker::Compose.new(services: application, options:
|
49
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*node.lint_fix_command)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -75,7 +75,7 @@ module Dev
|
|
75
75
|
|
76
76
|
options = []
|
77
77
|
options << '-T' if Dev::Common.new.running_codebuild?
|
78
|
-
Dev::Docker::Compose.new(services: application, options:
|
78
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*node.test_command)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -11,8 +11,8 @@ module Dev
|
|
11
11
|
|
12
12
|
# Allow for custom container path for the application
|
13
13
|
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
14
|
-
@php = Dev::Php.new(container_path
|
15
|
-
super(application, exclude:
|
14
|
+
@php = Dev::Php.new(container_path:, local_path:)
|
15
|
+
super(application, exclude:)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Create the rake task which downloads the vendor directory to your local system for the given application name
|
@@ -80,7 +80,7 @@ module Dev
|
|
80
80
|
|
81
81
|
options = []
|
82
82
|
options << '-T' if Dev::Common.new.running_codebuild?
|
83
|
-
Dev::Docker::Compose.new(services: application, options:
|
83
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*php.lint_command)
|
84
84
|
end
|
85
85
|
|
86
86
|
namespace :lint do
|
@@ -90,7 +90,7 @@ module Dev
|
|
90
90
|
|
91
91
|
options = []
|
92
92
|
options << '-T' if Dev::Common.new.running_codebuild?
|
93
|
-
Dev::Docker::Compose.new(services: application, options:
|
93
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*php.lint_fix_command)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -119,7 +119,7 @@ module Dev
|
|
119
119
|
|
120
120
|
options = []
|
121
121
|
options << '-T' if Dev::Common.new.running_codebuild?
|
122
|
-
Dev::Docker::Compose.new(services: application, options:
|
122
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*php.test_command)
|
123
123
|
end
|
124
124
|
end
|
125
125
|
end
|
@@ -11,8 +11,8 @@ module Dev
|
|
11
11
|
|
12
12
|
# Allow for custom container path for the application
|
13
13
|
def initialize(application, container_path: nil, local_path: nil, exclude: [])
|
14
|
-
@ruby = Dev::Ruby.new(container_path
|
15
|
-
super(application, exclude:
|
14
|
+
@ruby = Dev::Ruby.new(container_path:, local_path:)
|
15
|
+
super(application, exclude:)
|
16
16
|
end
|
17
17
|
|
18
18
|
# Create the rake task which runs linting for the application name
|
@@ -36,7 +36,7 @@ module Dev
|
|
36
36
|
|
37
37
|
options = []
|
38
38
|
options << '-T' if Dev::Common.new.running_codebuild?
|
39
|
-
Dev::Docker::Compose.new(services: application, options:
|
39
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*ruby.lint_command)
|
40
40
|
end
|
41
41
|
|
42
42
|
namespace :lint do
|
@@ -46,7 +46,7 @@ module Dev
|
|
46
46
|
|
47
47
|
options = []
|
48
48
|
options << '-T' if Dev::Common.new.running_codebuild?
|
49
|
-
Dev::Docker::Compose.new(services: application, options:
|
49
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*ruby.lint_fix_command)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
end
|
@@ -75,7 +75,7 @@ module Dev
|
|
75
75
|
|
76
76
|
options = []
|
77
77
|
options << '-T' if Dev::Common.new.running_codebuild?
|
78
|
-
Dev::Docker::Compose.new(services: application, options:
|
78
|
+
Dev::Docker::Compose.new(services: application, options:).exec(*ruby.test_command)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: firespring_dev_commands
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0.pre.alpha.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Firespring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,112 +16,112 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.0.
|
19
|
+
version: 7.0.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.0.
|
26
|
+
version: 7.0.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: aws-sdk-cloudformation
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.83.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 1.
|
40
|
+
version: 1.83.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: aws-sdk-codepipeline
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.
|
47
|
+
version: 1.59.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.
|
54
|
+
version: 1.59.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: aws-sdk-ecr
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: 1.61.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: 1.61.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: aws-sdk-s3
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 1.
|
75
|
+
version: 1.127.0
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 1.
|
82
|
+
version: 1.127.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: aws-sdk-ssm
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.
|
89
|
+
version: 1.154.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.
|
96
|
+
version: 1.154.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: aws-sdk-sts
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 1.
|
103
|
+
version: 1.10.0
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 1.
|
110
|
+
version: 1.10.0
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: colorize
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 1.1.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 1.1.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: docker-api
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -142,28 +142,28 @@ dependencies:
|
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: 2.8.
|
145
|
+
version: 2.8.1
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: 2.8.
|
152
|
+
version: 2.8.1
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: git
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
159
|
+
version: 1.18.0
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
166
|
+
version: 1.18.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: inifile
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,98 +198,28 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - '='
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
201
|
+
version: 4.1.1
|
202
202
|
type: :runtime
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
206
|
- - '='
|
207
207
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
208
|
+
version: 4.1.1
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: public_suffix
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
213
|
- - '='
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: 5.0.
|
215
|
+
version: 5.0.1
|
216
216
|
type: :runtime
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - '='
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: 5.0.
|
223
|
-
- !ruby/object:Gem::Dependency
|
224
|
-
name: rake
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- - "~>"
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: 13.0.0
|
230
|
-
type: :runtime
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
requirements:
|
234
|
-
- - "~>"
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: 13.0.0
|
237
|
-
- !ruby/object:Gem::Dependency
|
238
|
-
name: slack-ruby-client
|
239
|
-
requirement: !ruby/object:Gem::Requirement
|
240
|
-
requirements:
|
241
|
-
- - "~>"
|
242
|
-
- !ruby/object:Gem::Version
|
243
|
-
version: 2.1.0
|
244
|
-
type: :runtime
|
245
|
-
prerelease: false
|
246
|
-
version_requirements: !ruby/object:Gem::Requirement
|
247
|
-
requirements:
|
248
|
-
- - "~>"
|
249
|
-
- !ruby/object:Gem::Version
|
250
|
-
version: 2.1.0
|
251
|
-
- !ruby/object:Gem::Dependency
|
252
|
-
name: builder
|
253
|
-
requirement: !ruby/object:Gem::Requirement
|
254
|
-
requirements:
|
255
|
-
- - "~>"
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
version: 3.2.4
|
258
|
-
type: :development
|
259
|
-
prerelease: false
|
260
|
-
version_requirements: !ruby/object:Gem::Requirement
|
261
|
-
requirements:
|
262
|
-
- - "~>"
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
version: 3.2.4
|
265
|
-
- !ruby/object:Gem::Dependency
|
266
|
-
name: bundler-audit
|
267
|
-
requirement: !ruby/object:Gem::Requirement
|
268
|
-
requirements:
|
269
|
-
- - "~>"
|
270
|
-
- !ruby/object:Gem::Version
|
271
|
-
version: 0.9.0
|
272
|
-
type: :development
|
273
|
-
prerelease: false
|
274
|
-
version_requirements: !ruby/object:Gem::Requirement
|
275
|
-
requirements:
|
276
|
-
- - "~>"
|
277
|
-
- !ruby/object:Gem::Version
|
278
|
-
version: 0.9.0
|
279
|
-
- !ruby/object:Gem::Dependency
|
280
|
-
name: launchy
|
281
|
-
requirement: !ruby/object:Gem::Requirement
|
282
|
-
requirements:
|
283
|
-
- - "~>"
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: 2.5.2
|
286
|
-
type: :development
|
287
|
-
prerelease: false
|
288
|
-
version_requirements: !ruby/object:Gem::Requirement
|
289
|
-
requirements:
|
290
|
-
- - "~>"
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
version: 2.5.2
|
222
|
+
version: 5.0.1
|
293
223
|
- !ruby/object:Gem::Dependency
|
294
224
|
name: rake
|
295
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -297,97 +227,13 @@ dependencies:
|
|
297
227
|
- - "~>"
|
298
228
|
- !ruby/object:Gem::Version
|
299
229
|
version: 13.0.6
|
300
|
-
type: :
|
230
|
+
type: :runtime
|
301
231
|
prerelease: false
|
302
232
|
version_requirements: !ruby/object:Gem::Requirement
|
303
233
|
requirements:
|
304
234
|
- - "~>"
|
305
235
|
- !ruby/object:Gem::Version
|
306
236
|
version: 13.0.6
|
307
|
-
- !ruby/object:Gem::Dependency
|
308
|
-
name: rspec
|
309
|
-
requirement: !ruby/object:Gem::Requirement
|
310
|
-
requirements:
|
311
|
-
- - "~>"
|
312
|
-
- !ruby/object:Gem::Version
|
313
|
-
version: 3.11.0
|
314
|
-
type: :development
|
315
|
-
prerelease: false
|
316
|
-
version_requirements: !ruby/object:Gem::Requirement
|
317
|
-
requirements:
|
318
|
-
- - "~>"
|
319
|
-
- !ruby/object:Gem::Version
|
320
|
-
version: 3.11.0
|
321
|
-
- !ruby/object:Gem::Dependency
|
322
|
-
name: rubocop
|
323
|
-
requirement: !ruby/object:Gem::Requirement
|
324
|
-
requirements:
|
325
|
-
- - "~>"
|
326
|
-
- !ruby/object:Gem::Version
|
327
|
-
version: 1.36.0
|
328
|
-
type: :development
|
329
|
-
prerelease: false
|
330
|
-
version_requirements: !ruby/object:Gem::Requirement
|
331
|
-
requirements:
|
332
|
-
- - "~>"
|
333
|
-
- !ruby/object:Gem::Version
|
334
|
-
version: 1.36.0
|
335
|
-
- !ruby/object:Gem::Dependency
|
336
|
-
name: rubocop-performance
|
337
|
-
requirement: !ruby/object:Gem::Requirement
|
338
|
-
requirements:
|
339
|
-
- - "~>"
|
340
|
-
- !ruby/object:Gem::Version
|
341
|
-
version: 1.15.0
|
342
|
-
type: :development
|
343
|
-
prerelease: false
|
344
|
-
version_requirements: !ruby/object:Gem::Requirement
|
345
|
-
requirements:
|
346
|
-
- - "~>"
|
347
|
-
- !ruby/object:Gem::Version
|
348
|
-
version: 1.15.0
|
349
|
-
- !ruby/object:Gem::Dependency
|
350
|
-
name: rubocop-rake
|
351
|
-
requirement: !ruby/object:Gem::Requirement
|
352
|
-
requirements:
|
353
|
-
- - "~>"
|
354
|
-
- !ruby/object:Gem::Version
|
355
|
-
version: 0.6.0
|
356
|
-
type: :development
|
357
|
-
prerelease: false
|
358
|
-
version_requirements: !ruby/object:Gem::Requirement
|
359
|
-
requirements:
|
360
|
-
- - "~>"
|
361
|
-
- !ruby/object:Gem::Version
|
362
|
-
version: 0.6.0
|
363
|
-
- !ruby/object:Gem::Dependency
|
364
|
-
name: simplecov
|
365
|
-
requirement: !ruby/object:Gem::Requirement
|
366
|
-
requirements:
|
367
|
-
- - "~>"
|
368
|
-
- !ruby/object:Gem::Version
|
369
|
-
version: 0.21.0
|
370
|
-
type: :development
|
371
|
-
prerelease: false
|
372
|
-
version_requirements: !ruby/object:Gem::Requirement
|
373
|
-
requirements:
|
374
|
-
- - "~>"
|
375
|
-
- !ruby/object:Gem::Version
|
376
|
-
version: 0.21.0
|
377
|
-
- !ruby/object:Gem::Dependency
|
378
|
-
name: yard
|
379
|
-
requirement: !ruby/object:Gem::Requirement
|
380
|
-
requirements:
|
381
|
-
- - "~>"
|
382
|
-
- !ruby/object:Gem::Version
|
383
|
-
version: 0.9.28
|
384
|
-
type: :development
|
385
|
-
prerelease: false
|
386
|
-
version_requirements: !ruby/object:Gem::Requirement
|
387
|
-
requirements:
|
388
|
-
- - "~>"
|
389
|
-
- !ruby/object:Gem::Version
|
390
|
-
version: 0.9.28
|
391
237
|
description: Ruby library for creating/maintaining your development environment
|
392
238
|
email: opensource@firespring.com
|
393
239
|
executables: []
|
@@ -437,8 +283,6 @@ files:
|
|
437
283
|
- lib/firespring_dev_commands/ruby.rb
|
438
284
|
- lib/firespring_dev_commands/ruby/audit.rb
|
439
285
|
- lib/firespring_dev_commands/second.rb
|
440
|
-
- lib/firespring_dev_commands/slack.rb
|
441
|
-
- lib/firespring_dev_commands/slack/global.rb
|
442
286
|
- lib/firespring_dev_commands/tar.rb
|
443
287
|
- lib/firespring_dev_commands/tar/pax_header.rb
|
444
288
|
- lib/firespring_dev_commands/tar/type_flag.rb
|
@@ -466,14 +310,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
466
310
|
requirements:
|
467
311
|
- - ">="
|
468
312
|
- !ruby/object:Gem::Version
|
469
|
-
version: '2
|
313
|
+
version: '3.2'
|
470
314
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
471
315
|
requirements:
|
472
|
-
- - "
|
316
|
+
- - ">"
|
473
317
|
- !ruby/object:Gem::Version
|
474
|
-
version:
|
318
|
+
version: 1.3.1
|
475
319
|
requirements: []
|
476
|
-
rubygems_version: 3.
|
320
|
+
rubygems_version: 3.4.10
|
477
321
|
signing_key:
|
478
322
|
specification_version: 4
|
479
323
|
summary: Development environment maintenance command library
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# Load any existing slack auth if we haven't set one in the environment
|
2
|
-
require 'dotenv'
|
3
|
-
|
4
|
-
module Dev
|
5
|
-
class Slack
|
6
|
-
class Global
|
7
|
-
# The filename where we store the local auth information
|
8
|
-
CONFIG_FILE = "#{Dir.home}/.env.slack".freeze
|
9
|
-
|
10
|
-
SLACK_API_TOKEN = 'SLACK_API_TOKEN'.freeze
|
11
|
-
|
12
|
-
def configure
|
13
|
-
# Always load the env slack auth
|
14
|
-
Dotenv.load(CONFIG_FILE) if File.exist?(CONFIG_FILE)
|
15
|
-
|
16
|
-
::Slack.configure do |c|
|
17
|
-
c.token = ENV.fetch('SLACK_API_TOKEN', nil)
|
18
|
-
c.logger = LOG if ENV['ENABLE_SLACK_DEBUG'].to_s.strip == 'true'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
new.configure
|
22
|
-
|
23
|
-
# Write the new slack auth value to the env file
|
24
|
-
def write!(api_token)
|
25
|
-
override = Dev::Env.new(CONFIG_FILE)
|
26
|
-
override.set(SLACK_API_TOKEN, api_token)
|
27
|
-
override.write
|
28
|
-
configure
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'slack'
|
2
|
-
|
3
|
-
module Dev
|
4
|
-
class Slack
|
5
|
-
attr_accessor :client
|
6
|
-
|
7
|
-
def initialize
|
8
|
-
@client = ::Slack::Web::Client.new
|
9
|
-
@client.auth_test
|
10
|
-
end
|
11
|
-
|
12
|
-
def post(channel:, text:)
|
13
|
-
client.chat_postMessage(channel: channel, text: text)
|
14
|
-
end
|
15
|
-
|
16
|
-
def upload_text(channel:, text:, title: 'Text File', filename: 'file.txt')
|
17
|
-
raise 'text should be a string' unless text.is_a?(String)
|
18
|
-
|
19
|
-
file = Faraday::UploadIO.new(StringIO.new(text), 'text/plain')
|
20
|
-
client.files_upload(channels: channel, title: title, file: file, filename: filename, filetype: 'text')
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|