swa 0.8.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.beads/.gitignore +18 -0
  3. data/.beads/issues.jsonl +5 -0
  4. data/.rubocop.yml +39 -0
  5. data/AGENTS.md +541 -0
  6. data/CLAUDE.md +5 -0
  7. data/Gemfile +9 -1
  8. data/README.md +0 -5
  9. data/Rakefile +2 -0
  10. data/bin/console +1 -0
  11. data/exe/swa +2 -1
  12. data/lib/swa/athena/catalog.rb +4 -0
  13. data/lib/swa/athena/database.rb +4 -0
  14. data/lib/swa/athena/query_execution.rb +4 -0
  15. data/lib/swa/athena/work_group.rb +4 -0
  16. data/lib/swa/cli/athena_command.rb +93 -42
  17. data/lib/swa/cli/base_command.rb +22 -14
  18. data/lib/swa/cli/cloud_formation_command.rb +11 -4
  19. data/lib/swa/cli/cloudtrail_command.rb +130 -0
  20. data/lib/swa/cli/collection_behaviour.rb +4 -2
  21. data/lib/swa/cli/data_output.rb +12 -11
  22. data/lib/swa/cli/ec2_command.rb +21 -37
  23. data/lib/swa/cli/elb_command.rb +5 -3
  24. data/lib/swa/cli/filter_options.rb +6 -1
  25. data/lib/swa/cli/glue_command.rb +84 -36
  26. data/lib/swa/cli/iam_command.rb +42 -33
  27. data/lib/swa/cli/item_behaviour.rb +4 -2
  28. data/lib/swa/cli/kms_command.rb +26 -5
  29. data/lib/swa/cli/lake_formation_command.rb +72 -11
  30. data/lib/swa/cli/main_command.rb +19 -9
  31. data/lib/swa/cli/s3_command.rb +32 -24
  32. data/lib/swa/cli/selector.rb +4 -0
  33. data/lib/swa/cli/tag_filter_options.rb +6 -2
  34. data/lib/swa/cloud_formation/stack.rb +5 -1
  35. data/lib/swa/cloud_trail/event.rb +49 -0
  36. data/lib/swa/data_presentation.rb +23 -22
  37. data/lib/swa/ec2/image.rb +7 -5
  38. data/lib/swa/ec2/instance.rb +5 -1
  39. data/lib/swa/ec2/key_pair.rb +4 -0
  40. data/lib/swa/ec2/security_group.rb +5 -3
  41. data/lib/swa/ec2/snapshot.rb +6 -4
  42. data/lib/swa/ec2/subnet.rb +5 -3
  43. data/lib/swa/ec2/tagged_resource.rb +4 -0
  44. data/lib/swa/ec2/volume.rb +7 -5
  45. data/lib/swa/ec2/vpc.rb +5 -3
  46. data/lib/swa/elb/load_balancer.rb +4 -0
  47. data/lib/swa/glue/crawl.rb +5 -1
  48. data/lib/swa/glue/crawler.rb +5 -1
  49. data/lib/swa/glue/database.rb +5 -0
  50. data/lib/swa/glue/job.rb +4 -0
  51. data/lib/swa/glue/job_bookmark_entry.rb +4 -0
  52. data/lib/swa/glue/job_run.rb +5 -1
  53. data/lib/swa/glue/partition.rb +5 -1
  54. data/lib/swa/glue/table.rb +4 -0
  55. data/lib/swa/iam/credentials.rb +7 -7
  56. data/lib/swa/iam/group.rb +5 -3
  57. data/lib/swa/iam/instance_profile.rb +5 -3
  58. data/lib/swa/iam/policy.rb +5 -3
  59. data/lib/swa/iam/role.rb +10 -3
  60. data/lib/swa/iam/role_policy.rb +5 -3
  61. data/lib/swa/iam/user.rb +5 -3
  62. data/lib/swa/kms/alias.rb +4 -0
  63. data/lib/swa/kms/key.rb +4 -0
  64. data/lib/swa/lake_formation/data_lake_settings.rb +15 -0
  65. data/lib/swa/lake_formation/permission.rb +5 -1
  66. data/lib/swa/lake_formation/resource_info.rb +4 -0
  67. data/lib/swa/lake_formation/tag.rb +25 -0
  68. data/lib/swa/polyfill.rb +3 -1
  69. data/lib/swa/record.rb +5 -3
  70. data/lib/swa/resource.rb +3 -1
  71. data/lib/swa/s3/bucket.rb +5 -3
  72. data/lib/swa/s3/object.rb +7 -5
  73. data/lib/swa/s3/object_list_entry.rb +4 -0
  74. data/lib/swa/s3/object_version.rb +13 -7
  75. data/lib/swa/version.rb +5 -1
  76. data/lib/swa.rb +2 -0
  77. data/swa.gemspec +29 -25
  78. metadata +63 -29
data/lib/swa/iam/role.rb CHANGED
@@ -1,9 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/resource"
2
4
  require "swa/iam/credentials"
5
+ require "swa/iam/policy"
3
6
  require "swa/iam/role_policy"
4
7
  require "uri"
5
8
 
6
9
  module Swa
10
+
7
11
  module IAM
8
12
 
9
13
  class Role < Resource
@@ -20,6 +24,10 @@ module Swa
20
24
  role.name
21
25
  end
22
26
 
27
+ def attached_policies
28
+ Policy.list(role.attached_policies)
29
+ end
30
+
23
31
  def policies
24
32
  RolePolicy.list(role.policies)
25
33
  end
@@ -32,11 +40,10 @@ module Swa
32
40
  URI.decode_uri_component(role.assume_role_policy_document)
33
41
  end
34
42
 
35
- private
36
-
37
- alias_method :role, :aws_resource
43
+ alias role aws_resource
38
44
 
39
45
  end
40
46
 
41
47
  end
48
+
42
49
  end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "cgi"
2
4
  require "swa/resource"
3
5
 
4
6
  module Swa
7
+
5
8
  module IAM
6
9
 
7
10
  class RolePolicy < Resource
@@ -18,11 +21,10 @@ module Swa
18
21
  CGI.unescape(role_policy.policy_document)
19
22
  end
20
23
 
21
- private
22
-
23
- alias_method :role_policy, :aws_resource
24
+ alias role_policy aws_resource
24
25
 
25
26
  end
26
27
 
27
28
  end
29
+
28
30
  end
data/lib/swa/iam/user.rb CHANGED
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/resource"
2
4
 
3
5
  module Swa
6
+
4
7
  module IAM
5
8
 
6
9
  class User < Resource
@@ -13,11 +16,10 @@ module Swa
13
16
  user.name
14
17
  end
15
18
 
16
- private
17
-
18
- alias_method :user, :aws_resource
19
+ alias user aws_resource
19
20
 
20
21
  end
21
22
 
22
23
  end
24
+
23
25
  end
data/lib/swa/kms/alias.rb CHANGED
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/record"
2
4
 
3
5
  module Swa
6
+
4
7
  module KMS
5
8
 
6
9
  class Alias < Record
@@ -27,4 +30,5 @@ module Swa
27
30
  end
28
31
 
29
32
  end
33
+
30
34
  end
data/lib/swa/kms/key.rb CHANGED
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/record"
2
4
 
3
5
  module Swa
6
+
4
7
  module KMS
5
8
 
6
9
  class Key < Record
@@ -20,4 +23,5 @@ module Swa
20
23
  end
21
24
 
22
25
  end
26
+
23
27
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "swa/record"
4
+
5
+ module Swa
6
+
7
+ module LakeFormation
8
+
9
+ class DataLakeSettings < Record
10
+
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/record"
2
4
 
3
5
  module Swa
6
+
4
7
  module LakeFormation
5
8
 
6
9
  class Permission < Record
@@ -23,10 +26,11 @@ module Swa
23
26
  def resource_summary
24
27
  h = aws_record.resource.to_hash.compact
25
28
  type, details = h.first
26
- "#{type}:#{details.values.join("/")}"
29
+ "#{type}:#{details.values.join('/')}"
27
30
  end
28
31
 
29
32
  end
30
33
 
31
34
  end
35
+
32
36
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/record"
2
4
 
3
5
  module Swa
6
+
4
7
  module LakeFormation
5
8
 
6
9
  class ResourceInfo < Record
@@ -18,4 +21,5 @@ module Swa
18
21
  end
19
22
 
20
23
  end
24
+
21
25
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "swa/record"
4
+
5
+ module Swa
6
+
7
+ module LakeFormation
8
+
9
+ class Tag < Record
10
+
11
+ def summary
12
+ [
13
+ tag_key,
14
+ tag_values.join(",")
15
+ ].join("=")
16
+ end
17
+
18
+ delegate :tag_key
19
+ delegate :tag_values
20
+
21
+ end
22
+
23
+ end
24
+
25
+ end
data/lib/swa/polyfill.rb CHANGED
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # Polyfills for older Rubies
2
4
 
3
5
  class Array
4
6
 
5
7
  unless method_defined?(:to_h)
6
8
  def to_h
7
- Hash[self]
9
+ to_h
8
10
  end
9
11
  end
10
12
 
data/lib/swa/record.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "forwardable"
2
4
  require "swa/data_presentation"
3
5
 
@@ -10,9 +12,9 @@ module Swa
10
12
  end
11
13
 
12
14
  def self.list_from_query(client, query_method, response_key, **query_args)
13
- records = client.public_send(query_method, **query_args).each.lazy.flat_map { |page|
14
- page.public_send(response_key)
15
- }
15
+ records = client.public_send(query_method, **query_args).each.lazy.flat_map do |page|
16
+ response_key ? page.public_send(response_key) : page
17
+ end
16
18
  list(records)
17
19
  end
18
20
 
data/lib/swa/resource.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "forwardable"
2
4
  require "swa/data_presentation"
3
5
 
@@ -14,7 +16,7 @@ module Swa
14
16
  end
15
17
 
16
18
  attr_reader :aws_resource
17
- alias_method :_resource_, :aws_resource
19
+ alias _resource_ aws_resource
18
20
 
19
21
  include DataPresentation
20
22
 
data/lib/swa/s3/bucket.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "multi_json"
2
4
  require "swa/resource"
3
5
  require "swa/s3/object"
@@ -5,6 +7,7 @@ require "swa/s3/object_list_entry"
5
7
  require "swa/s3/object_version"
6
8
 
7
9
  module Swa
10
+
8
11
  module S3
9
12
 
10
13
  class Bucket < Resource
@@ -58,11 +61,10 @@ module Swa
58
61
  bucket.delete
59
62
  end
60
63
 
61
- private
62
-
63
- alias_method :bucket, :aws_resource
64
+ alias bucket aws_resource
64
65
 
65
66
  end
66
67
 
67
68
  end
69
+
68
70
  end
data/lib/swa/s3/object.rb CHANGED
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/resource"
2
4
  require "swa/s3/object_version"
3
5
 
4
6
  module Swa
7
+
5
8
  module S3
6
9
 
7
10
  class Object < Resource
@@ -26,7 +29,7 @@ module Swa
26
29
  uri
27
30
  end
28
31
 
29
- def get_body
32
+ def body
30
33
  object.get.body
31
34
  end
32
35
 
@@ -35,7 +38,7 @@ module Swa
35
38
  end
36
39
 
37
40
  def put(io, options = {})
38
- object.put(options.merge(:body => io))
41
+ object.put(options.merge(body: io))
39
42
  end
40
43
 
41
44
  def upload_from(file_name)
@@ -50,11 +53,10 @@ module Swa
50
53
  Swa::S3::ObjectVersion.new(object.version(version_id))
51
54
  end
52
55
 
53
- private
54
-
55
- alias_method :object, :aws_resource
56
+ alias object aws_resource
56
57
 
57
58
  end
58
59
 
59
60
  end
61
+
60
62
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/record"
2
4
 
3
5
  module Swa
6
+
4
7
  module S3
5
8
 
6
9
  class ObjectListEntry < Record
@@ -63,4 +66,5 @@ module Swa
63
66
  end
64
67
 
65
68
  end
69
+
66
70
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/resource"
2
4
 
3
5
  module Swa
6
+
4
7
  module S3
5
8
 
6
9
  class ObjectVersion < Resource
@@ -8,8 +11,8 @@ module Swa
8
11
  def summary
9
12
  [
10
13
  version.last_modified.iso8601,
11
- rpad(version.size, 10),
12
- pad(version.id, 32),
14
+ rpad(size, 10),
15
+ pad(id, 32),
13
16
  uri
14
17
  ].join(" ")
15
18
  end
@@ -22,6 +25,10 @@ module Swa
22
25
  version.id
23
26
  end
24
27
 
28
+ def size
29
+ version.data.to_h.fetch(:size, "-")
30
+ end
31
+
25
32
  def uri
26
33
  "s3://#{version.bucket_name}/#{version.key}"
27
34
  end
@@ -30,7 +37,7 @@ module Swa
30
37
  uri
31
38
  end
32
39
 
33
- def get_body
40
+ def body
34
41
  version.get.body
35
42
  end
36
43
 
@@ -40,7 +47,7 @@ module Swa
40
47
  bucket: version.bucket_name,
41
48
  key: version.object_key,
42
49
  version_id: version.id,
43
- progress_callback: progress_callback,
50
+ progress_callback: progress_callback
44
51
  }
45
52
  downloader.download(file_name, options)
46
53
  end
@@ -49,11 +56,10 @@ module Swa
49
56
  version.delete
50
57
  end
51
58
 
52
- private
53
-
54
- alias_method :version, :aws_resource
59
+ alias version aws_resource
55
60
 
56
61
  end
57
62
 
58
63
  end
64
+
59
65
  end
data/lib/swa/version.rb CHANGED
@@ -1,3 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Swa
2
- VERSION = "0.8.6"
4
+
5
+ VERSION = "1.0.0"
6
+
3
7
  end
data/lib/swa.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "swa/version"
2
4
 
3
5
  module Swa
data/swa.gemspec CHANGED
@@ -1,7 +1,8 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path("lib", __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'swa/version'
5
+ require "swa/version"
5
6
 
6
7
  Gem::Specification.new do |spec|
7
8
 
@@ -10,35 +11,38 @@ Gem::Specification.new do |spec|
10
11
  spec.authors = ["Mike Williams"]
11
12
  spec.email = ["mdub@dogbiscuit.org"]
12
13
 
13
- spec.summary = %q{AWS, backwards}
14
+ spec.summary = "AWS, backwards"
14
15
 
15
16
  spec.homepage = "https://github.com/mdub/swa"
16
17
  spec.license = "MIT"
18
+ spec.required_ruby_version = ">= 2.7"
17
19
 
18
20
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
19
21
  spec.bindir = "exe"
20
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
23
  spec.require_paths = ["lib"]
22
24
 
23
- spec.add_development_dependency "bundler", "~> 2.1"
24
- spec.add_development_dependency "rake", "~> 12.0"
25
-
26
- spec.add_runtime_dependency "aws-sdk-athena", "~> 1"
27
- spec.add_runtime_dependency "aws-sdk-cloudformation", "~> 1"
28
- spec.add_runtime_dependency "aws-sdk-ec2", "~> 1"
29
- spec.add_runtime_dependency "aws-sdk-elasticloadbalancing", "~> 1"
30
- spec.add_runtime_dependency "aws-sdk-glue", "~> 1"
31
- spec.add_runtime_dependency "aws-sdk-iam", "~> 1"
32
- spec.add_runtime_dependency "aws-sdk-kms", "~> 1"
33
- spec.add_runtime_dependency "aws-sdk-lakeformation", "~> 1"
34
- spec.add_runtime_dependency "aws-sdk-s3", "~> 1"
35
- spec.add_runtime_dependency "pry"
36
-
37
- spec.add_runtime_dependency "chronic"
38
- spec.add_runtime_dependency "clamp", ">= 1.1.0"
39
- spec.add_runtime_dependency "console_logger"
40
- spec.add_runtime_dependency "multi_json"
41
- spec.add_runtime_dependency "ox"
42
- spec.add_runtime_dependency "stackup", ">= 1.0.0"
43
-
25
+ spec.add_dependency "aws-sdk-athena", "~> 1"
26
+ spec.add_dependency "aws-sdk-cloudformation", "~> 1"
27
+ spec.add_dependency "aws-sdk-cloudtrail", "~> 1"
28
+ spec.add_dependency "aws-sdk-ec2", "~> 1"
29
+ spec.add_dependency "aws-sdk-elasticloadbalancing", "~> 1"
30
+ spec.add_dependency "aws-sdk-glue", "~> 1"
31
+ spec.add_dependency "aws-sdk-iam", "~> 1"
32
+ spec.add_dependency "aws-sdk-kms", "~> 1"
33
+ spec.add_dependency "aws-sdk-lakeformation", "~> 1"
34
+ spec.add_dependency "aws-sdk-s3", "~> 1"
35
+ spec.add_dependency "csv"
36
+ spec.add_dependency "openssl", ">= 3.3.1"
37
+ spec.add_dependency "pry"
38
+
39
+ spec.add_dependency "bytesize"
40
+ spec.add_dependency "chronic"
41
+ spec.add_dependency "clamp", ">= 1.1.0"
42
+ spec.add_dependency "console_logger"
43
+ spec.add_dependency "multi_json"
44
+ spec.add_dependency "ox"
45
+ spec.add_dependency "stackup", ">= 1.0.0"
46
+
47
+ spec.metadata["rubygems_mfa_required"] = "true"
44
48
  end
metadata CHANGED
@@ -1,45 +1,30 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Williams
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-05-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '2.1'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '2.1'
27
- - !ruby/object:Gem::Dependency
28
- name: rake
13
+ name: aws-sdk-athena
29
14
  requirement: !ruby/object:Gem::Requirement
30
15
  requirements:
31
16
  - - "~>"
32
17
  - !ruby/object:Gem::Version
33
- version: '12.0'
34
- type: :development
18
+ version: '1'
19
+ type: :runtime
35
20
  prerelease: false
36
21
  version_requirements: !ruby/object:Gem::Requirement
37
22
  requirements:
38
23
  - - "~>"
39
24
  - !ruby/object:Gem::Version
40
- version: '12.0'
25
+ version: '1'
41
26
  - !ruby/object:Gem::Dependency
42
- name: aws-sdk-athena
27
+ name: aws-sdk-cloudformation
43
28
  requirement: !ruby/object:Gem::Requirement
44
29
  requirements:
45
30
  - - "~>"
@@ -53,7 +38,7 @@ dependencies:
53
38
  - !ruby/object:Gem::Version
54
39
  version: '1'
55
40
  - !ruby/object:Gem::Dependency
56
- name: aws-sdk-cloudformation
41
+ name: aws-sdk-cloudtrail
57
42
  requirement: !ruby/object:Gem::Requirement
58
43
  requirements:
59
44
  - - "~>"
@@ -164,6 +149,34 @@ dependencies:
164
149
  - - "~>"
165
150
  - !ruby/object:Gem::Version
166
151
  version: '1'
152
+ - !ruby/object:Gem::Dependency
153
+ name: csv
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ - !ruby/object:Gem::Dependency
167
+ name: openssl
168
+ requirement: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: 3.3.1
173
+ type: :runtime
174
+ prerelease: false
175
+ version_requirements: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: 3.3.1
167
180
  - !ruby/object:Gem::Dependency
168
181
  name: pry
169
182
  requirement: !ruby/object:Gem::Requirement
@@ -178,6 +191,20 @@ dependencies:
178
191
  - - ">="
179
192
  - !ruby/object:Gem::Version
180
193
  version: '0'
194
+ - !ruby/object:Gem::Dependency
195
+ name: bytesize
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
181
208
  - !ruby/object:Gem::Dependency
182
209
  name: chronic
183
210
  requirement: !ruby/object:Gem::Requirement
@@ -262,7 +289,6 @@ dependencies:
262
289
  - - ">="
263
290
  - !ruby/object:Gem::Version
264
291
  version: 1.0.0
265
- description:
266
292
  email:
267
293
  - mdub@dogbiscuit.org
268
294
  executables:
@@ -270,8 +296,13 @@ executables:
270
296
  extensions: []
271
297
  extra_rdoc_files: []
272
298
  files:
299
+ - ".beads/.gitignore"
300
+ - ".beads/issues.jsonl"
273
301
  - ".gitignore"
302
+ - ".rubocop.yml"
274
303
  - ".travis.yml"
304
+ - AGENTS.md
305
+ - CLAUDE.md
275
306
  - Gemfile
276
307
  - LICENSE.txt
277
308
  - README.md
@@ -287,6 +318,7 @@ files:
287
318
  - lib/swa/cli/athena_command.rb
288
319
  - lib/swa/cli/base_command.rb
289
320
  - lib/swa/cli/cloud_formation_command.rb
321
+ - lib/swa/cli/cloudtrail_command.rb
290
322
  - lib/swa/cli/collection_behaviour.rb
291
323
  - lib/swa/cli/data_output.rb
292
324
  - lib/swa/cli/ec2_command.rb
@@ -302,6 +334,7 @@ files:
302
334
  - lib/swa/cli/selector.rb
303
335
  - lib/swa/cli/tag_filter_options.rb
304
336
  - lib/swa/cloud_formation/stack.rb
337
+ - lib/swa/cloud_trail/event.rb
305
338
  - lib/swa/data_presentation.rb
306
339
  - lib/swa/ec2/image.rb
307
340
  - lib/swa/ec2/instance.rb
@@ -330,8 +363,10 @@ files:
330
363
  - lib/swa/iam/user.rb
331
364
  - lib/swa/kms/alias.rb
332
365
  - lib/swa/kms/key.rb
366
+ - lib/swa/lake_formation/data_lake_settings.rb
333
367
  - lib/swa/lake_formation/permission.rb
334
368
  - lib/swa/lake_formation/resource_info.rb
369
+ - lib/swa/lake_formation/tag.rb
335
370
  - lib/swa/polyfill.rb
336
371
  - lib/swa/record.rb
337
372
  - lib/swa/resource.rb
@@ -344,8 +379,8 @@ files:
344
379
  homepage: https://github.com/mdub/swa
345
380
  licenses:
346
381
  - MIT
347
- metadata: {}
348
- post_install_message:
382
+ metadata:
383
+ rubygems_mfa_required: 'true'
349
384
  rdoc_options: []
350
385
  require_paths:
351
386
  - lib
@@ -353,15 +388,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
353
388
  requirements:
354
389
  - - ">="
355
390
  - !ruby/object:Gem::Version
356
- version: '0'
391
+ version: '2.7'
357
392
  required_rubygems_version: !ruby/object:Gem::Requirement
358
393
  requirements:
359
394
  - - ">="
360
395
  - !ruby/object:Gem::Version
361
396
  version: '0'
362
397
  requirements: []
363
- rubygems_version: 3.5.10
364
- signing_key:
398
+ rubygems_version: 3.6.9
365
399
  specification_version: 4
366
400
  summary: AWS, backwards
367
401
  test_files: []