swa 0.7.3 → 0.7.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e104c27cd170b45f520bf23f8ea1c1b3f2c08dfb5b4fbce5c81778d8dac8812
4
- data.tar.gz: 25be55194508205f3d044a22734e144a777972c8b091f99e7658742d3214175f
3
+ metadata.gz: 1db2fa774c68dc5fc72812a3c9962eac1b532bbea246f163fdb705e301d80343
4
+ data.tar.gz: 3752e1fbb76dcd2fc3eeb84fe7b703420f5d87ad36559b05c178d3bdbe043508
5
5
  SHA512:
6
- metadata.gz: e5e1856a85450d6b8194a253cbb7773dd81a8cfa2206ff24853ce1da0e55268b4c4ccf2448a91adc2c934da5ec6d43135b4d0c4d1ac7cb4d05cd97d044d49fc9
7
- data.tar.gz: 700faafa6b9e53f0dd926b7fd63768c0cc9dedae487fb28e74a7bb5a63c9a5ab79015028f5e285666606fb0e3eb732ff0f4f500ea1242cc52e30c1721b15cc93
6
+ metadata.gz: 82fe2ee12f547a35efa664798fd5d52d6313ad60957c6045e13956de5f31662f728636d541a2661031d1068c4a5d110ad255a56c81b9d3ae280270f224f8be62
7
+ data.tar.gz: ffdf5f146091814f926b1af310a44c198dba8b64573d1f3e75f92b50fc50979698f433d9611bb3c0097ffa70f987ecf1fb290591ab0dfa562bb5922fbdbcebc5
@@ -118,6 +118,8 @@ module Swa
118
118
 
119
119
  def wait_for_query(query_execution_id)
120
120
  QueryCompletionWaiter.new(client: athena_client).wait(query_execution_id: query_execution_id)
121
+ rescue Aws::Waiters::Errors::FailureStateError => error
122
+ signal_error error.response.query_execution.status.state_change_reason
121
123
  end
122
124
 
123
125
  end
@@ -66,6 +66,14 @@ module Swa
66
66
  Swa::Glue::Database.new(glue_client.get_database(:name => name).database)
67
67
  end
68
68
 
69
+ subcommand ["delete"], "Delete database" do
70
+
71
+ def execute
72
+ glue_client.delete_database(:name => name)
73
+ end
74
+
75
+ end
76
+
69
77
  subcommand ["table"], "Show table" do
70
78
 
71
79
  parameter "NAME", "table name", attribute_name: :table_name
@@ -84,6 +92,14 @@ module Swa
84
92
 
85
93
  end
86
94
 
95
+ subcommand ["delete"], "Delete table" do
96
+
97
+ def execute
98
+ glue_client.delete_table(:database_name => name, :name => table_name)
99
+ end
100
+
101
+ end
102
+
87
103
  private
88
104
 
89
105
  def item
@@ -120,13 +120,16 @@ module Swa
120
120
 
121
121
  option "--prefix", "PREFIX", "object prefix"
122
122
 
123
- self.default_subcommand = "list"
123
+ self.default_subcommand = "prefixes"
124
124
 
125
125
  subcommand ["list", "ls"], "One-line summary" do
126
126
 
127
+ option %w(-R --recursive), :flag, "list recursively"
128
+
127
129
  def execute
128
- objects.each do |i|
129
- puts i.summary
130
+ delimiter = "/" unless recursive?
131
+ bucket.object_list_entries(prefix: prefix, delimiter: delimiter).each do |e|
132
+ puts e.summary
130
133
  end
131
134
  end
132
135
 
@@ -156,7 +159,7 @@ module Swa
156
159
  protected
157
160
 
158
161
  def objects
159
- bucket.objects(:prefix => prefix)
162
+ bucket.objects(prefix: prefix)
160
163
  end
161
164
 
162
165
  end
data/lib/swa/s3/bucket.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require "multi_json"
2
2
  require "swa/resource"
3
3
  require "swa/s3/object"
4
+ require "swa/s3/object_list_entry"
4
5
  require "swa/s3/object_version"
5
6
 
6
7
  module Swa
@@ -38,6 +39,21 @@ module Swa
38
39
  Swa::S3::ObjectVersion.list(aws_resource.object_versions(options))
39
40
  end
40
41
 
42
+ def object_list_entries(options = {})
43
+ options = options.merge(bucket: bucket.name)
44
+ resp = bucket.client.list_objects_v2(options)
45
+ ::Enumerator.new do |y|
46
+ resp.each_page do |page|
47
+ page.data.common_prefixes.each do |prefix_data|
48
+ y << Swa::S3::ObjectPrefix.new(bucket.name, prefix_data)
49
+ end
50
+ page.data.contents.each do |object_data|
51
+ y << Swa::S3::ObjectSummary.new(bucket.name, object_data)
52
+ end
53
+ end
54
+ end
55
+ end
56
+
41
57
  def delete
42
58
  bucket.delete
43
59
  end
@@ -0,0 +1,66 @@
1
+ require "swa/record"
2
+
3
+ module Swa
4
+ module S3
5
+
6
+ class ObjectListEntry < Record
7
+
8
+ def initialize(bucket_name, aws_record)
9
+ @bucket_name = bucket_name
10
+ super(aws_record)
11
+ end
12
+
13
+ attr_reader :bucket_name
14
+
15
+ def to_s
16
+ uri
17
+ end
18
+
19
+ def summary
20
+ [
21
+ pad(column1, 20),
22
+ rpad(column2, 10),
23
+ uri
24
+ ].join(" ")
25
+ end
26
+
27
+ end
28
+
29
+ class ObjectPrefix < ObjectListEntry
30
+
31
+ delegate :prefix
32
+
33
+ def column1
34
+ ""
35
+ end
36
+
37
+ def column2
38
+ ""
39
+ end
40
+
41
+ def uri
42
+ "s3://#{bucket_name}/#{prefix}"
43
+ end
44
+
45
+ end
46
+
47
+ class ObjectSummary < ObjectListEntry
48
+
49
+ delegate :key, :size, :last_modified
50
+
51
+ def column1
52
+ last_modified.iso8601
53
+ end
54
+
55
+ def column2
56
+ size
57
+ end
58
+
59
+ def uri
60
+ "s3://#{bucket_name}/#{key}"
61
+ end
62
+
63
+ end
64
+
65
+ end
66
+ end
data/lib/swa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Swa
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: swa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-30 00:00:00.000000000 Z
11
+ date: 2024-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -320,6 +320,7 @@ files:
320
320
  - lib/swa/resource.rb
321
321
  - lib/swa/s3/bucket.rb
322
322
  - lib/swa/s3/object.rb
323
+ - lib/swa/s3/object_list_entry.rb
323
324
  - lib/swa/s3/object_version.rb
324
325
  - lib/swa/version.rb
325
326
  - swa.gemspec