swa 0.4.4 → 0.5.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.
- checksums.yaml +4 -4
- data/lib/swa/cli/collection_behaviour.rb +2 -0
- data/lib/swa/cli/main_command.rb +15 -4
- data/lib/swa/cli/s3_command.rb +132 -9
- data/lib/swa/s3/bucket.rb +18 -2
- data/lib/swa/s3/object.rb +51 -0
- data/lib/swa/version.rb +1 -1
- data/swa.gemspec +1 -1
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c2bdd3ea0c87066638304663413a8ce0edeeeb8
|
4
|
+
data.tar.gz: 987819dd756f3c9aa3827adb450b8c78c7f9a705
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56f553cdb20ae6bf1ae7600563694c49635eb52295ef45de523530cb99048177e30296848a52f7d21f5a51d802145342a3ba0f5ceb06c5546ae10b326882f2e9
|
7
|
+
data.tar.gz: 0a1bb1ad8016f0ef4574672d3f2b0b03fc20e5958ed4781fadb92a80d64cad559da2b7b41cb5ae5815062d5b945fb0e347ae71882b83545bbb0ada56572f4ded
|
@@ -10,11 +10,13 @@ module Swa
|
|
10
10
|
target.default_subcommand = "summary"
|
11
11
|
|
12
12
|
target.subcommand ["summary", "s"], "One-line summary" do
|
13
|
+
|
13
14
|
def execute
|
14
15
|
collection.each do |i|
|
15
16
|
puts i.summary
|
16
17
|
end
|
17
18
|
end
|
19
|
+
|
18
20
|
end
|
19
21
|
|
20
22
|
target.subcommand ["data", "d"], "Full details" do
|
data/lib/swa/cli/main_command.rb
CHANGED
@@ -28,12 +28,23 @@ module Swa
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
-
def
|
32
|
-
|
31
|
+
def parse_parameters
|
32
|
+
case remaining_arguments.first
|
33
|
+
when /^(\w+)-/
|
33
34
|
subcommand = subcommand_for_prefix($1)
|
34
|
-
|
35
|
+
if subcommand
|
36
|
+
remaining_arguments[0,1] = [subcommand] + arguments
|
37
|
+
end
|
38
|
+
when %r{^s3://([^/]+)/(.+/)?$}
|
39
|
+
remaining_arguments[0, 1] = ["s3", "bucket", $1, "objects", "--prefix", $2]
|
40
|
+
when %r{^s3://([^/]+)/(.+)\*$}
|
41
|
+
remaining_arguments[0, 1] = ["s3", "bucket", $1, "objects", "--prefix", $2]
|
42
|
+
when %r{^s3://([^/]+)/(.+)$}
|
43
|
+
remaining_arguments[0, 1] = ["s3", "bucket", $1, "object", $2]
|
44
|
+
when %r{^s3://([^/]+)$}
|
45
|
+
remaining_arguments[0, 1] = ["s3", "bucket", $1]
|
35
46
|
end
|
36
|
-
super
|
47
|
+
super
|
37
48
|
end
|
38
49
|
|
39
50
|
end
|
data/lib/swa/cli/s3_command.rb
CHANGED
@@ -4,37 +4,160 @@ require "swa/cli/collection_behaviour"
|
|
4
4
|
require "swa/cli/item_behaviour"
|
5
5
|
require "swa/cli/tag_filter_options"
|
6
6
|
require "swa/s3/bucket"
|
7
|
+
require "swa/s3/object"
|
7
8
|
|
8
9
|
module Swa
|
9
10
|
module CLI
|
10
11
|
|
11
12
|
class S3Command < BaseCommand
|
12
13
|
|
13
|
-
subcommand
|
14
|
+
subcommand "bucket", "Show bucket" do
|
14
15
|
|
15
|
-
parameter "NAME", "bucket name"
|
16
|
+
parameter "NAME", "bucket name", :attribute_name => :bucket_name
|
16
17
|
|
17
18
|
include ItemBehaviour
|
18
19
|
|
19
|
-
|
20
|
+
protected
|
21
|
+
|
22
|
+
def aws_bucket
|
23
|
+
s3.bucket(bucket_name)
|
24
|
+
end
|
25
|
+
|
26
|
+
def bucket
|
27
|
+
Swa::S3::Bucket.new(aws_bucket)
|
28
|
+
end
|
29
|
+
|
30
|
+
def bucket_name=(arg)
|
31
|
+
@bucket_name = arg.sub(%r{^s3://}, "")
|
32
|
+
end
|
33
|
+
|
34
|
+
alias_method :item, :bucket
|
35
|
+
|
36
|
+
subcommand "object", "Show object" do
|
37
|
+
|
38
|
+
parameter "KEY", "object key", :attribute_name => :object_key
|
39
|
+
|
40
|
+
include ItemBehaviour
|
41
|
+
|
42
|
+
subcommand "get", "GET object" do
|
43
|
+
|
44
|
+
def execute
|
45
|
+
IO.copy_stream(object.get_body, $stdout)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
subcommand "put", "PUT object" do
|
51
|
+
|
52
|
+
parameter "[PAYLOAD]", "data", :default => "STDIN"
|
53
|
+
|
54
|
+
def execute
|
55
|
+
object.put(payload)
|
56
|
+
end
|
57
|
+
|
58
|
+
private
|
59
|
+
|
60
|
+
def default_payload
|
61
|
+
$stdin.read
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
65
|
+
|
66
|
+
subcommand "upload", "Upload file" do
|
67
|
+
|
68
|
+
parameter "FILE", "file name", :attribute_name => :file_name
|
69
|
+
|
70
|
+
def execute
|
71
|
+
object.upload(file_name)
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
subcommand "delete", "Delete object" do
|
77
|
+
|
78
|
+
def execute
|
79
|
+
logger.info "Deleting #{object.uri}"
|
80
|
+
object.delete
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
protected
|
86
|
+
|
87
|
+
def object
|
88
|
+
Swa::S3::Object.new(aws_bucket.object(object_key))
|
89
|
+
end
|
90
|
+
|
91
|
+
alias_method :item, :object
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
subcommand "objects", "List objects" do
|
96
|
+
|
97
|
+
option "--prefix", "PREFIX", "object prefix"
|
98
|
+
|
99
|
+
self.default_subcommand = "list"
|
100
|
+
|
101
|
+
subcommand ["list", "ls"], "One-line summary" do
|
102
|
+
|
103
|
+
def execute
|
104
|
+
objects.each do |i|
|
105
|
+
puts i.summary
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
subcommand ["data", "d"], "Full details" do
|
112
|
+
|
113
|
+
parameter "[QUERY]", "JMESPath expression"
|
114
|
+
|
115
|
+
def execute
|
116
|
+
display_data(objects.map(&:data).to_a, query)
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
subcommand "delete-all", "Delete objects" do
|
122
|
+
|
123
|
+
def execute
|
124
|
+
objects.each do |o|
|
125
|
+
logger.info "Deleting #{o.uri}"
|
126
|
+
o.delete
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
protected
|
133
|
+
|
134
|
+
def objects
|
135
|
+
bucket.objects(:prefix => prefix)
|
136
|
+
end
|
20
137
|
|
21
|
-
def item
|
22
|
-
Swa::S3::Bucket.new(s3.bucket(name))
|
23
138
|
end
|
24
139
|
|
25
140
|
subcommand "policy", "print bucket policy" do
|
26
141
|
|
27
142
|
def execute
|
28
|
-
|
143
|
+
display_data(bucket.policy_data)
|
144
|
+
end
|
145
|
+
|
146
|
+
end
|
147
|
+
|
148
|
+
subcommand "delete", "Delete bucket" do
|
149
|
+
|
150
|
+
def execute
|
151
|
+
logger.info "Deleting #{bucket.uri}"
|
152
|
+
bucket.delete
|
29
153
|
end
|
30
154
|
|
31
155
|
end
|
32
156
|
|
33
157
|
end
|
34
158
|
|
35
|
-
subcommand
|
159
|
+
subcommand "buckets", "List buckets" do
|
36
160
|
|
37
|
-
include TagFilterOptions
|
38
161
|
include CollectionBehaviour
|
39
162
|
|
40
163
|
private
|
@@ -53,7 +176,7 @@ module Swa
|
|
53
176
|
|
54
177
|
def query_for(query_method, resource_model)
|
55
178
|
aws_resources = s3.public_send(query_method)
|
56
|
-
|
179
|
+
resource_model.list(aws_resources)
|
57
180
|
end
|
58
181
|
|
59
182
|
end
|
data/lib/swa/s3/bucket.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require "
|
1
|
+
require "multi_json"
|
2
2
|
require "swa/resource"
|
3
3
|
|
4
4
|
module Swa
|
@@ -10,10 +10,26 @@ module Swa
|
|
10
10
|
bucket.name
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def uri
|
14
|
+
"s3://#{bucket.name}"
|
15
|
+
end
|
16
|
+
|
17
|
+
def policy_json
|
14
18
|
bucket.policy.policy.read
|
15
19
|
end
|
16
20
|
|
21
|
+
def policy_data
|
22
|
+
MultiJson.load(policy_json)
|
23
|
+
end
|
24
|
+
|
25
|
+
def objects(options = {})
|
26
|
+
Swa::S3::Object.list(aws_resource.objects(options))
|
27
|
+
end
|
28
|
+
|
29
|
+
def delete
|
30
|
+
bucket.delete
|
31
|
+
end
|
32
|
+
|
17
33
|
private
|
18
34
|
|
19
35
|
alias_method :bucket, :aws_resource
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "swa/resource"
|
2
|
+
|
3
|
+
module Swa
|
4
|
+
module S3
|
5
|
+
|
6
|
+
class Object < Resource
|
7
|
+
|
8
|
+
def summary
|
9
|
+
[
|
10
|
+
object.last_modified.strftime("%Y-%m-%d %H:%M:%S"),
|
11
|
+
rpad(object.size, 10),
|
12
|
+
uri
|
13
|
+
].join(" ")
|
14
|
+
end
|
15
|
+
|
16
|
+
def key
|
17
|
+
object.key
|
18
|
+
end
|
19
|
+
|
20
|
+
def uri
|
21
|
+
"s3://#{object.bucket.name}/#{object.key}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
uri
|
26
|
+
end
|
27
|
+
|
28
|
+
def get_body
|
29
|
+
object.get.body
|
30
|
+
end
|
31
|
+
|
32
|
+
def put(io, options = {})
|
33
|
+
object.put(options.merge(:body => io))
|
34
|
+
end
|
35
|
+
|
36
|
+
def upload(file_name)
|
37
|
+
object.upload_file(file_name)
|
38
|
+
end
|
39
|
+
|
40
|
+
def delete
|
41
|
+
object.delete
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
alias_method :object, :aws_resource
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
end
|
data/lib/swa/version.rb
CHANGED
data/swa.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_runtime_dependency "aws-sdk-resources"
|
28
28
|
spec.add_runtime_dependency "chronic"
|
29
|
-
spec.add_runtime_dependency "clamp"
|
29
|
+
spec.add_runtime_dependency "clamp", ">= 1.1.0"
|
30
30
|
spec.add_runtime_dependency "console_logger"
|
31
31
|
spec.add_runtime_dependency "multi_json"
|
32
32
|
|
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.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 1.1.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:
|
96
|
+
version: 1.1.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: console_logger
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,6 +174,7 @@ files:
|
|
174
174
|
- lib/swa/record.rb
|
175
175
|
- lib/swa/resource.rb
|
176
176
|
- lib/swa/s3/bucket.rb
|
177
|
+
- lib/swa/s3/object.rb
|
177
178
|
- lib/swa/version.rb
|
178
179
|
- swa.gemspec
|
179
180
|
homepage: https://github.com/mdub/swa
|
@@ -196,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
197
|
version: '0'
|
197
198
|
requirements: []
|
198
199
|
rubyforge_project:
|
199
|
-
rubygems_version: 2.
|
200
|
+
rubygems_version: 2.5.1
|
200
201
|
signing_key:
|
201
202
|
specification_version: 4
|
202
203
|
summary: AWS, backwards
|