swa 0.8.4 → 0.8.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f97ea85d4f432b6ea61fb652ce14f5ea50f1827aa3056437869f9eb6fcd28f83
4
- data.tar.gz: 00e6d4f165f754f6dc4d03d4c45c09075b7235961527d1792eec649f8475b67e
3
+ metadata.gz: 5c07723e018108852c4b08553e806bdd53e80e88988e2fa1dbdef99b8aebbab3
4
+ data.tar.gz: 2835192e6d525d1bdb79ae94b698f8435f3311bba1deb145d20a5ab9257e373e
5
5
  SHA512:
6
- metadata.gz: da5a54d7e1ec1da3b3860cf27ae60e5548eb007679ff7158eb6c8e0ae7f82b49592c553b6920b230773302a7318d5f2d651ba2bfc1d5c7c37d9256bc51fc1aa6
7
- data.tar.gz: 10134f56ec3a62439470d5f0148a8e3df4804338ff86a18c824da2795866fd1512cfab71c75f8bd9de45b1f3f5b1ab7b3c092825e4d88b6c89c47c3640bf084c
6
+ metadata.gz: 0cc932811e45b02d1d1b254ca52ba54e188281f59764e4b0efaae4164bdc2695f7c7cfcbab3f0ab92c6cbcfd417b3ef17e05e5a76ce2b29820c7c936cfb65a47
7
+ data.tar.gz: fc6105d43f360c2db2be74a594bd855a4567618143edbefb6343f46c5dd137af87971468a1d85c9cad5ef2a0b7d2c952f8b9b10c02b60f29f90c910f615e8587
@@ -112,7 +112,11 @@ module Swa
112
112
  )
113
113
  wait_for_query(start_query_response.query_execution_id)
114
114
  query_results = athena_client.get_query_results(query_execution_id: start_query_response.query_execution_id)
115
- output_results_as_csv(query_results.result_set)
115
+ if query =~ /\AEXPLAIN/
116
+ output_explain_result(query_results.result_set)
117
+ else
118
+ output_results_as_csv(query_results.result_set)
119
+ end
116
120
  end
117
121
 
118
122
  private
@@ -127,6 +131,12 @@ module Swa
127
131
  signal_error error.response.query_execution.status.state_change_reason
128
132
  end
129
133
 
134
+ def output_explain_result(result_set)
135
+ result_set.rows.drop(1).each do |row|
136
+ puts row.data.first.var_char_value
137
+ end
138
+ end
139
+
130
140
  end
131
141
 
132
142
  subcommand ["workgroups", "wgs"], "Show work-groups" do
@@ -27,6 +27,8 @@ module Swa
27
27
  super(arguments)
28
28
  rescue Aws::Errors::MissingCredentialsError
29
29
  signal_error "no credentials provided"
30
+ rescue Aws::Errors::MissingRegionError, Aws::Errors::InvalidRegionError => e
31
+ signal_error e.message
30
32
  rescue Aws::Errors::ServiceError => e
31
33
  signal_error e.message
32
34
  end
@@ -68,7 +68,28 @@ module Swa
68
68
  parameter "FILE", "file name", :attribute_name => :file_name
69
69
 
70
70
  def execute
71
- object.upload(file_name)
71
+ object.upload_from(file_name)
72
+ end
73
+
74
+ end
75
+
76
+ subcommand "download", "download object to local file" do
77
+
78
+ option %w(-T --to), "TARGET", "file or directory to download into", default: ".", attribute_name: :target
79
+
80
+ def execute
81
+ object.download_into(target_file_path, &method(:log_download_progress))
82
+ logger.info "Downloaded to #{target_file_path}"
83
+ end
84
+
85
+ private
86
+
87
+ def target_file_path
88
+ if File.directory?(target)
89
+ File.join(target, File.basename(object_key))
90
+ else
91
+ target
92
+ end
72
93
  end
73
94
 
74
95
  end
@@ -96,6 +117,27 @@ module Swa
96
117
 
97
118
  end
98
119
 
120
+ subcommand "download", "download version to local file" do
121
+
122
+ option %w(-T --to), "TARGET", "file or directory to download into", default: ".", attribute_name: :target
123
+
124
+ def execute
125
+ version.download_into(target_file_path)
126
+ logger.info "Downloaded to #{target_file_path}"
127
+ end
128
+
129
+ private
130
+
131
+ def target_file_path
132
+ if File.directory?(target)
133
+ File.join(target, File.basename(object_key))
134
+ else
135
+ target
136
+ end
137
+ end
138
+
139
+ end
140
+
99
141
  protected
100
142
 
101
143
  def version
@@ -263,6 +305,12 @@ module Swa
263
305
  resource_model.list(aws_resources)
264
306
  end
265
307
 
308
+ def log_download_progress(bytes, part_sizes, file_size)
309
+ # total_bytes = bytes.sum
310
+ # percent_done = "%.1f" % [100.0 * total_bytes / file_size]
311
+ # logger.debug "Downloaded #{total_bytes} of #{file_size}; #{percent_done}% done"
312
+ end
313
+
266
314
  end
267
315
 
268
316
  end
data/lib/swa/s3/object.rb CHANGED
@@ -30,11 +30,15 @@ module Swa
30
30
  object.get.body
31
31
  end
32
32
 
33
+ def download_into(file_name, &progress_callback)
34
+ object.download_file(file_name, progress_callback: progress_callback)
35
+ end
36
+
33
37
  def put(io, options = {})
34
38
  object.put(options.merge(:body => io))
35
39
  end
36
40
 
37
- def upload(file_name)
41
+ def upload_from(file_name)
38
42
  object.upload_file(file_name)
39
43
  end
40
44
 
@@ -34,6 +34,17 @@ module Swa
34
34
  version.get.body
35
35
  end
36
36
 
37
+ def download_into(file_name, &progress_callback)
38
+ downloader = Aws::S3::FileDownloader.new(client: aws_resource.client)
39
+ options = {
40
+ bucket: version.bucket_name,
41
+ key: version.object_key,
42
+ version_id: version.id,
43
+ progress_callback: progress_callback,
44
+ }
45
+ downloader.download(file_name, options)
46
+ end
47
+
37
48
  def delete
38
49
  version.delete
39
50
  end
data/lib/swa/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Swa
2
- VERSION = "0.8.4"
2
+ VERSION = "0.8.6"
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.8.4
4
+ version: 0.8.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Williams
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-09 00:00:00.000000000 Z
11
+ date: 2024-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -360,7 +360,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
360
360
  - !ruby/object:Gem::Version
361
361
  version: '0'
362
362
  requirements: []
363
- rubygems_version: 3.5.3
363
+ rubygems_version: 3.5.10
364
364
  signing_key:
365
365
  specification_version: 4
366
366
  summary: AWS, backwards