s3cmd-dsl 0.1.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 +7 -0
- data/lib/dsl/commands/base_commands.rb +190 -0
- data/lib/dsl/commands/cloudfront_commands.rb +42 -0
- data/lib/dsl/commands/dsl_commands.rb +16 -0
- data/lib/dsl/commands/string.rb +5 -0
- data/lib/dsl/dsl.rb +13 -0
- data/lib/dsl/s3cmd.rb +20 -0
- data/lib/s3cmd-dsl.rb +11 -0
- data/lib/version.rb +10 -0
- data/test/test_dsl.rb +210 -0
- data/test/test_helper.rb +12 -0
- metadata +55 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b8c1643ca59f650067f770ac0a6a7f2a22168dac
|
4
|
+
data.tar.gz: a7cf4bda02c43fc035ebdef76344dd0112cd99ea
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 18c467c374dabc608af61732dc0768a6ffe2d9f4f18a5f823c09611e3384ed39aec3ba9d2ae862df64caae5f1d9787b07d666c5ca1e49b604d3eb9eac1396749
|
7
|
+
data.tar.gz: 38ad08f1ba8b344e84c04c20f1c7f73cfb437abfb8dc881e96c1677da1b8267e83a4744929ad723ac19e80c63307e319aca693e8f16c25fbb02e02172bfb80fc
|
@@ -0,0 +1,190 @@
|
|
1
|
+
require_relative 'dsl_commands'
|
2
|
+
require_relative 'string'
|
3
|
+
|
4
|
+
module BaseCommands
|
5
|
+
include DSLCommands
|
6
|
+
|
7
|
+
class BaseDSLCommands
|
8
|
+
def path(path)
|
9
|
+
@commands[:path] = path
|
10
|
+
self
|
11
|
+
end
|
12
|
+
alias :path_to_s3cmd :path
|
13
|
+
|
14
|
+
def send_block_command
|
15
|
+
@send_block_command = if @commands.include? :path
|
16
|
+
@commands[:path]
|
17
|
+
@commands.delete(:path)
|
18
|
+
else
|
19
|
+
@path.empty? ? 's3cmd' : @path
|
20
|
+
end
|
21
|
+
|
22
|
+
@commands.each do |key, value|
|
23
|
+
@send_block_command += " #{key} '#{value}'"
|
24
|
+
end
|
25
|
+
|
26
|
+
@send_block_command.gsub!(/\'/, '').strip!
|
27
|
+
`#{@send_block_command}` if @execute
|
28
|
+
|
29
|
+
if @save
|
30
|
+
File.open(@save, 'w') do |file|
|
31
|
+
file.write(
|
32
|
+
<<-EOF.unindent_heredoc
|
33
|
+
#!/usr/bin/env bash
|
34
|
+
##{@name}
|
35
|
+
##{Time.now}
|
36
|
+
#{@send_block_command}
|
37
|
+
EOF
|
38
|
+
)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
@send_block_command
|
43
|
+
end
|
44
|
+
|
45
|
+
def save_script(filename)
|
46
|
+
@save = filename
|
47
|
+
self
|
48
|
+
end
|
49
|
+
|
50
|
+
def execute
|
51
|
+
@execute = true
|
52
|
+
self
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Make bucket
|
57
|
+
def mb(bucket = nil) # s3://BUCKET
|
58
|
+
@commands[:mb] = bucket || @bucket
|
59
|
+
self
|
60
|
+
end
|
61
|
+
alias :create_new_bucket :mb
|
62
|
+
alias :make_bucket :mb
|
63
|
+
alias :mkdir :mb
|
64
|
+
alias :create_bucket :mb
|
65
|
+
|
66
|
+
# Remove bucket
|
67
|
+
def rb(bucket = nil) # s3://BUCKET
|
68
|
+
@commands[:rb] = bucket || @bucket
|
69
|
+
self
|
70
|
+
end
|
71
|
+
alias :remove_bucket :rb
|
72
|
+
alias :rmdir :rb
|
73
|
+
alias :delete_bucket :rb
|
74
|
+
|
75
|
+
# List objects or buckets
|
76
|
+
def ls(bucket = nil) # s3://BUCKET[/PREFIX]]
|
77
|
+
@commands[:ls] = bucket || @bucket
|
78
|
+
self
|
79
|
+
end
|
80
|
+
alias :list_bucket :ls
|
81
|
+
alias :list :ls
|
82
|
+
|
83
|
+
# List all object in all buckets
|
84
|
+
def la
|
85
|
+
@commands[:la] = ''
|
86
|
+
self
|
87
|
+
end
|
88
|
+
alias :list_all :la
|
89
|
+
alias :list_all_objects :la
|
90
|
+
|
91
|
+
# Put file into bucket (i.e. upload to S3)
|
92
|
+
def put(files = nil, bucket = nil) # FILE [FILE...] s3://BUCKET[/PREFIX]
|
93
|
+
put_files = @files || files
|
94
|
+
put_bucket = @bucket || bucket
|
95
|
+
|
96
|
+
@commands[:put] = "#{put_files} #{put_bucket}"
|
97
|
+
self
|
98
|
+
end
|
99
|
+
alias :upload :put
|
100
|
+
|
101
|
+
# Get file from bucket (i.e. download from S3)
|
102
|
+
def get(object = nil, files = nil) # s3://BUCKET/OBJECT LOCAL_FILE
|
103
|
+
get_files = @files || files
|
104
|
+
get_object = @bucket || object
|
105
|
+
|
106
|
+
@commands[:get] = "#{get_object} #{get_files}"
|
107
|
+
self
|
108
|
+
end
|
109
|
+
alias :download :get
|
110
|
+
|
111
|
+
# Delete file from bucket
|
112
|
+
def del(object = nil) # s3://BUCKET/OBJECT
|
113
|
+
@commands[:del] = @bucket || object
|
114
|
+
self
|
115
|
+
end
|
116
|
+
alias :delete :del
|
117
|
+
alias :rm :del
|
118
|
+
alias :delete_object :del
|
119
|
+
alias :delete_file :del
|
120
|
+
alias :remove :del
|
121
|
+
|
122
|
+
# Backup a directory tree to S3
|
123
|
+
# Restore a tree from S3 to local directory
|
124
|
+
def sync(src_object, dest_object) # LOCAL_DIR s3://BUCKET[/PREFIX] or s3://BUCKET[/PREFIX] LOCAL_DIR
|
125
|
+
@commands[:sync] = "#{src_object} #{dest_object}"
|
126
|
+
self
|
127
|
+
end
|
128
|
+
alias :sync_directory :sync
|
129
|
+
alias :sync_dir :sync
|
130
|
+
alias :synchronize :sync
|
131
|
+
|
132
|
+
# Make a copy of a file (cp) or move a file (mv). Destination can be in the same bucket with a dif‐
|
133
|
+
# ferent name or in another bucket with the same or different name. Adding --acl-public will make the
|
134
|
+
# destination object publicly accessible (see below).
|
135
|
+
def cp(src_bucket, dest_bucket) # s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
|
136
|
+
@commands[:cp] = "#{src_bucket} #{dest_bucket}"
|
137
|
+
self
|
138
|
+
end
|
139
|
+
alias :copy :cp
|
140
|
+
|
141
|
+
# Make a copy of a file (cp) or move a file (mv). Destination can be in the same bucket with a dif‐
|
142
|
+
# ferent name or in another bucket with the same or different name. Adding --acl-public will make the
|
143
|
+
# destination object publicly accessible (see below).
|
144
|
+
def mv(src_bucket, dest_bucket) # s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]
|
145
|
+
@commands[:mv] = "#{src_bucket} #{dest_bucket}"
|
146
|
+
self
|
147
|
+
end
|
148
|
+
alias :move :mv
|
149
|
+
|
150
|
+
# Modify Access control list for Bucket or Files. Use with --acl-public or --acl-private
|
151
|
+
def setacl(bucket = nil) # s3://BUCKET[/OBJECT]
|
152
|
+
@commands[:setacl] = @bucket || bucket
|
153
|
+
self
|
154
|
+
end
|
155
|
+
alias :set_access_control_list :setacl
|
156
|
+
|
157
|
+
# Get various information about a Bucket or Object
|
158
|
+
def info(bucket = nil) # s3://BUCKET[/OBJECT]
|
159
|
+
@commands[:info] = @bucket || bucket
|
160
|
+
self
|
161
|
+
end
|
162
|
+
|
163
|
+
# Disk usage - amount of data stored in S3
|
164
|
+
def du(bucket = nil) # [s3://BUCKET[/PREFIX]]
|
165
|
+
@commands[:du] = @bucket || bucket
|
166
|
+
self
|
167
|
+
end
|
168
|
+
alias :disk_usage :du
|
169
|
+
|
170
|
+
# Enable/disable bucket access logging
|
171
|
+
def accesslog(bucket = nil)
|
172
|
+
@commands[:accesslog] = @bucket || bucket
|
173
|
+
self
|
174
|
+
end
|
175
|
+
alias :logging :accesslog
|
176
|
+
|
177
|
+
# Sign arbitrary string using the secret key
|
178
|
+
def sign(string)
|
179
|
+
@commands[:sign] = string
|
180
|
+
self
|
181
|
+
end
|
182
|
+
alias :secretkey :sign
|
183
|
+
|
184
|
+
# Fix invalid file names in a bucket
|
185
|
+
def fixbucket(bucket = nil)
|
186
|
+
@commands[:fixbucket] = @bucket || bucket
|
187
|
+
self
|
188
|
+
end
|
189
|
+
alias :fix :fixbucket
|
190
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module CloudFrontCommands
|
2
|
+
# Commands for CloudFront management
|
3
|
+
# List CloudFront distribution points
|
4
|
+
def cflist
|
5
|
+
@commands[:cflist] = ''
|
6
|
+
self
|
7
|
+
end
|
8
|
+
alias :cloudfront_list :cflist
|
9
|
+
alias :cloudfront_ls :cflist
|
10
|
+
alias :cfls :cflist
|
11
|
+
|
12
|
+
# Display CloudFront distribution point parameters
|
13
|
+
def cfinfo(dist_id) # [cf://DIST_ID]
|
14
|
+
@commands[:cfinfo] = dist_id
|
15
|
+
self
|
16
|
+
end
|
17
|
+
alias :cloudfront_info :cfinfo
|
18
|
+
|
19
|
+
# Create CloudFront distribution point
|
20
|
+
def cfcreate(bucket) # s3://BUCKET
|
21
|
+
@commands[:cfcreate] = bucket
|
22
|
+
self
|
23
|
+
end
|
24
|
+
alias :cloudfront_create :cfcreate
|
25
|
+
alias :cloudfront_make :cfcreate
|
26
|
+
alias :cfmake :cfcreate
|
27
|
+
alias :cfmk :cfcreate
|
28
|
+
|
29
|
+
# Delete CloudFront distribution point
|
30
|
+
def cfdelete(dist_id) # cf://DIST_ID
|
31
|
+
@commands[:cfdelete] = dist_id
|
32
|
+
self
|
33
|
+
end
|
34
|
+
alias :cloudfront_delete :cfdelete
|
35
|
+
|
36
|
+
# Change CloudFront distribution point parameters
|
37
|
+
def cfmodify(dist_id) # cf://DIST_ID
|
38
|
+
@commands[:cfmodify] = dist_id
|
39
|
+
self
|
40
|
+
end
|
41
|
+
alias :cloudfront_modify :cfmodify
|
42
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module DSLCommands
|
2
|
+
def bucket(bucket)
|
3
|
+
@bucket = bucket
|
4
|
+
self
|
5
|
+
end
|
6
|
+
alias :remote_bucket :bucket
|
7
|
+
alias :object :bucket
|
8
|
+
alias :remote_file :bucket
|
9
|
+
|
10
|
+
def files(*files)
|
11
|
+
@files = files.join(' ')
|
12
|
+
self
|
13
|
+
end
|
14
|
+
alias :local_files :files
|
15
|
+
alias :file :files
|
16
|
+
end
|
data/lib/dsl/dsl.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative 's3cmd'
|
2
|
+
|
3
|
+
module S3Cmd
|
4
|
+
def s3cmd(name = nil, command = nil, execute = nil, &block)
|
5
|
+
s3cmd = S3CmdDSL.new(name)
|
6
|
+
s3cmd.send(command) if command
|
7
|
+
s3cmd.execute if execute == 'execute'
|
8
|
+
if block_given? && command.nil?
|
9
|
+
s3cmd.instance_eval(&block)
|
10
|
+
end
|
11
|
+
s3cmd.send_block_command
|
12
|
+
end
|
13
|
+
end
|
data/lib/dsl/s3cmd.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative 'commands/base_commands'
|
2
|
+
require_relative 'commands/cloudfront_commands'
|
3
|
+
require_relative 'dsl'
|
4
|
+
|
5
|
+
class S3CmdDSL < BaseCommands::BaseDSLCommands
|
6
|
+
include BaseCommands
|
7
|
+
include CloudFrontCommands
|
8
|
+
|
9
|
+
def initialize(name)
|
10
|
+
@name = name
|
11
|
+
@path = `which s3cmd`.strip
|
12
|
+
@commands = {}
|
13
|
+
end
|
14
|
+
|
15
|
+
def method_missing(method, *args)
|
16
|
+
meth = method.to_s.gsub("_", "-").gsub(/^/, "--")
|
17
|
+
@commands[meth] = args.join(', ')
|
18
|
+
self
|
19
|
+
end
|
20
|
+
end
|
data/lib/s3cmd-dsl.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
# = s3cmd-dsl - A gem providing a ruby DSL interface to s3cmd Amazon S3 client.
|
2
|
+
#
|
3
|
+
# Homepage:: http://github.com/jjuliano/s3cmd-dsl
|
4
|
+
# Author:: Joel Bryan Juliano
|
5
|
+
# Copyright:: (cc) 2013 Joel Bryan Juliano
|
6
|
+
# License:: MIT
|
7
|
+
#
|
8
|
+
require_relative 'version'
|
9
|
+
|
10
|
+
Dir[File.join(File.dirname(__FILE__), 'dsl/**/*.rb')].sort.reverse.each { |lib| require lib }
|
11
|
+
|
data/lib/version.rb
ADDED
data/test/test_dsl.rb
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
require_relative 'test_helper'
|
2
|
+
class TestS3CmdDSLGeneral < Test::Unit::TestCase
|
3
|
+
def test_with_params
|
4
|
+
test_class('test_with_params') {
|
5
|
+
s3cmd('Test With Parameters') do
|
6
|
+
path 'test-s3cmd'
|
7
|
+
mb 's3://BUCKET'
|
8
|
+
end
|
9
|
+
}
|
10
|
+
|
11
|
+
klass = TestClass.new
|
12
|
+
assert_equal('test-s3cmd mb s3://BUCKET', klass.test_with_params)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_without_params
|
16
|
+
test_class('test_without_params') {
|
17
|
+
s3cmd('Test Without Parameters') do
|
18
|
+
path 'test-s3cmd'
|
19
|
+
bucket 's3://BUCKET'
|
20
|
+
mb
|
21
|
+
end
|
22
|
+
}
|
23
|
+
|
24
|
+
klass = TestClass.new
|
25
|
+
assert_equal('test-s3cmd mb s3://BUCKET', klass.test_without_params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_with_keywords
|
29
|
+
test_class('test_with_keywords') {
|
30
|
+
s3cmd('Test With Keywords') do
|
31
|
+
path 'test-s3cmd'
|
32
|
+
ls 's3://BUCKET'
|
33
|
+
rinclude '[0-9].*.jpg'
|
34
|
+
exclude '*.jpg'
|
35
|
+
end
|
36
|
+
}
|
37
|
+
|
38
|
+
klass = TestClass.new
|
39
|
+
assert_equal('test-s3cmd ls s3://BUCKET --rinclude [0-9].*.jpg --exclude *.jpg', klass.test_with_keywords)
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_one_liner
|
43
|
+
test_class('test_one_liner') { s3cmd('Test One Liner', 'configure') }
|
44
|
+
|
45
|
+
klass = TestClass.new
|
46
|
+
s3cmd_path = `which s3cmd`.strip!
|
47
|
+
path = s3cmd_path.nil? ? 's3cmd' : s3cmd_path
|
48
|
+
assert_equal("#{path} --configure", klass.test_one_liner)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_chaining
|
52
|
+
test_class('test_chaining') {
|
53
|
+
s3cmd('Test Chaining') { path('test-s3cmd').ls('s3://BUCKET').rinclude('[0-9].*.jpg').exclude('*.jpg') }
|
54
|
+
}
|
55
|
+
|
56
|
+
klass = TestClass.new
|
57
|
+
assert_equal('test-s3cmd ls s3://BUCKET --rinclude [0-9].*.jpg --exclude *.jpg', klass.test_chaining)
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_path
|
61
|
+
test_class('test_path') {
|
62
|
+
s3cmd('Test Path') { ls }
|
63
|
+
}
|
64
|
+
|
65
|
+
klass = TestClass.new
|
66
|
+
s3cmd_path = `which s3cmd`.strip!
|
67
|
+
path = s3cmd_path.nil? ? 's3cmd' : s3cmd_path
|
68
|
+
assert_equal("#{path} ls", klass.test_path)
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_cloudfront_methods
|
72
|
+
test_class('test_cloudfront_methods') {
|
73
|
+
s3cmd('Test CloudFront Methods') { cflist }
|
74
|
+
}
|
75
|
+
|
76
|
+
klass = TestClass.new
|
77
|
+
s3cmd_path = `which s3cmd`.strip!
|
78
|
+
path = s3cmd_path.nil? ? 's3cmd' : s3cmd_path
|
79
|
+
assert_equal("#{path} cflist", klass.test_cloudfront_methods)
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_files_parameter
|
83
|
+
test_class('test_files_parameter') {
|
84
|
+
filelist = ['file1', 'file2']
|
85
|
+
s3cmd('Test Files Parameter') do
|
86
|
+
path 'test-s3cmd'
|
87
|
+
files filelist
|
88
|
+
bucket 's3://BUCKET'
|
89
|
+
put
|
90
|
+
end
|
91
|
+
}
|
92
|
+
|
93
|
+
klass = TestClass.new
|
94
|
+
assert_equal("test-s3cmd put file1 file2 s3://BUCKET", klass.test_files_parameter)
|
95
|
+
end
|
96
|
+
|
97
|
+
COMMANDS = [:mb, :rb, :ls, :del, :setacl, :info, :du, :accesslog, :fixbucket]
|
98
|
+
|
99
|
+
# Test with Parameters
|
100
|
+
COMMANDS.each do |command|
|
101
|
+
meth = %Q{
|
102
|
+
def test_#{command.to_s}_with_params
|
103
|
+
test_class("test_#{command.to_s}_with_params") {
|
104
|
+
s3cmd("Test #{command.to_s} With Parameters") do
|
105
|
+
path 'test-s3cmd'
|
106
|
+
#{command.to_s} 's3://BUCKET'
|
107
|
+
end
|
108
|
+
}
|
109
|
+
|
110
|
+
klass = TestClass.new
|
111
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET", klass.test_#{command.to_s}_with_params)
|
112
|
+
end
|
113
|
+
}
|
114
|
+
eval(meth)
|
115
|
+
end
|
116
|
+
|
117
|
+
# Test without parameters
|
118
|
+
COMMANDS.each do |command|
|
119
|
+
meth = %Q{
|
120
|
+
def test_#{command.to_s}_without_params
|
121
|
+
test_class("test_#{command.to_s}_without_params") {
|
122
|
+
s3cmd("Test #{command.to_s} Without Parameters") do
|
123
|
+
path 'test-s3cmd'
|
124
|
+
bucket 's3://BUCKET'
|
125
|
+
#{command.to_s}
|
126
|
+
end
|
127
|
+
}
|
128
|
+
|
129
|
+
klass = TestClass.new
|
130
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET", klass.test_#{command.to_s}_without_params)
|
131
|
+
end
|
132
|
+
}
|
133
|
+
eval(meth)
|
134
|
+
end
|
135
|
+
|
136
|
+
# Test with parameters and passing arguments
|
137
|
+
COMMANDS.each do |command|
|
138
|
+
meth = %Q{
|
139
|
+
def test_#{command.to_s}_with_params_and_arguments
|
140
|
+
test_class("test_#{command.to_s}_with_params_and_arguments") {
|
141
|
+
s3cmd("Test #{command.to_s} With Parameters") do
|
142
|
+
path 'test-s3cmd'
|
143
|
+
#{command.to_s} 's3://BUCKET'
|
144
|
+
recursive
|
145
|
+
encoding 'utf-8'
|
146
|
+
end
|
147
|
+
}
|
148
|
+
|
149
|
+
klass = TestClass.new
|
150
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET --recursive --encoding utf-8", klass.test_#{command.to_s}_with_params_and_arguments)
|
151
|
+
end
|
152
|
+
}
|
153
|
+
eval(meth)
|
154
|
+
end
|
155
|
+
|
156
|
+
# Test without parameters and passing arguments
|
157
|
+
COMMANDS.each do |command|
|
158
|
+
meth = %Q{
|
159
|
+
def test_#{command.to_s}_without_params_and_arguments
|
160
|
+
test_class("test_#{command.to_s}_without_params_and_arguments") {
|
161
|
+
s3cmd("Test #{command.to_s} Without Parameters") do
|
162
|
+
path 'test-s3cmd'
|
163
|
+
bucket 's3://BUCKET'
|
164
|
+
#{command.to_s}
|
165
|
+
recursive
|
166
|
+
encoding 'utf-8'
|
167
|
+
end
|
168
|
+
}
|
169
|
+
|
170
|
+
klass = TestClass.new
|
171
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET --recursive --encoding utf-8", klass.test_#{command.to_s}_without_params_and_arguments)
|
172
|
+
end
|
173
|
+
}
|
174
|
+
eval(meth)
|
175
|
+
end
|
176
|
+
|
177
|
+
# Test chaining with parameters and passing arguments
|
178
|
+
COMMANDS.each do |command|
|
179
|
+
meth = %Q{
|
180
|
+
def test_chaining_#{command.to_s}_with_params_and_arguments
|
181
|
+
test_class("test_chaining_#{command.to_s}_with_params_and_arguments") {
|
182
|
+
s3cmd("Test #{command.to_s} With Parameters") do
|
183
|
+
path('test-s3cmd').#{command.to_s}('s3://BUCKET').recursive.encoding('utf-8')
|
184
|
+
end
|
185
|
+
}
|
186
|
+
|
187
|
+
klass = TestClass.new
|
188
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET --recursive --encoding utf-8", klass.test_chaining_#{command.to_s}_with_params_and_arguments)
|
189
|
+
end
|
190
|
+
}
|
191
|
+
eval(meth)
|
192
|
+
end
|
193
|
+
|
194
|
+
# Test chaining without parameters and passing arguments
|
195
|
+
COMMANDS.each do |command|
|
196
|
+
meth = %Q{
|
197
|
+
def test_chaining_#{command.to_s}_without_params_and_arguments
|
198
|
+
test_class("test_chaining_#{command.to_s}_without_params_and_arguments") {
|
199
|
+
s3cmd("Test #{command.to_s} Without Parameters") do
|
200
|
+
path('test-s3cmd').bucket('s3://BUCKET').#{command.to_s}.recursive.encoding('utf-8')
|
201
|
+
end
|
202
|
+
}
|
203
|
+
|
204
|
+
klass = TestClass.new
|
205
|
+
assert_equal("test-s3cmd #{command.to_s} s3://BUCKET --recursive --encoding utf-8", klass.test_chaining_#{command.to_s}_without_params_and_arguments)
|
206
|
+
end
|
207
|
+
}
|
208
|
+
eval(meth)
|
209
|
+
end
|
210
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
Dir[File.join(File.dirname(__FILE__), '/../lib/*.rb')].sort.reverse.each { |lib| require lib }
|
3
|
+
|
4
|
+
class TestClass; end
|
5
|
+
def test_class(method_name, &block)
|
6
|
+
TestClass.class_eval do
|
7
|
+
include S3Cmd
|
8
|
+
define_method(method_name) do
|
9
|
+
self.instance_eval(&block)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: s3cmd-dsl
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Joel Bryan Juliano
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-04-10 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A gem providing a ruby DSL interface to s3cmd Amazon S3 client.
|
14
|
+
email: joelbryan.juliano@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/dsl/commands/base_commands.rb
|
20
|
+
- lib/dsl/commands/cloudfront_commands.rb
|
21
|
+
- lib/dsl/commands/dsl_commands.rb
|
22
|
+
- lib/dsl/commands/string.rb
|
23
|
+
- lib/dsl/dsl.rb
|
24
|
+
- lib/dsl/s3cmd.rb
|
25
|
+
- lib/s3cmd-dsl.rb
|
26
|
+
- lib/version.rb
|
27
|
+
- test/test_dsl.rb
|
28
|
+
- test/test_helper.rb
|
29
|
+
homepage: http://github.com/jjuliano/s3cmd-dsl
|
30
|
+
licenses:
|
31
|
+
- MIT
|
32
|
+
metadata: {}
|
33
|
+
post_install_message:
|
34
|
+
rdoc_options: []
|
35
|
+
require_paths:
|
36
|
+
- lib
|
37
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
requirements: []
|
48
|
+
rubyforge_project:
|
49
|
+
rubygems_version: 2.0.0
|
50
|
+
signing_key:
|
51
|
+
specification_version: 4
|
52
|
+
summary: A gem providing a ruby DSL interface to s3cmd Amazon S3 client.
|
53
|
+
test_files:
|
54
|
+
- test/test_dsl.rb
|
55
|
+
- test/test_helper.rb
|