silk 0.0.3 → 0.0.4
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.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/silk.rb +0 -1
- data/lib/silk/dsl.rake +131 -0
- data/lib/silk/options.rb +2 -2
- data/lib/silk/tasks.rb +4 -1
- data/silk.gemspec +15 -13
- data/test/bin/failure +3 -0
- data/test/bin/successful +3 -0
- data/test/test_dsl.rb +76 -6
- data/test/test_options.rb +17 -6
- metadata +89 -43
- data/lib/silk/dsl.rb +0 -57
data/Rakefile
CHANGED
@@ -17,7 +17,7 @@ begin
|
|
17
17
|
gem.add_dependency 'sinatra'
|
18
18
|
gem.add_dependency 'SyslogLogger'
|
19
19
|
|
20
|
-
gem.add_development_dependency "
|
20
|
+
gem.add_development_dependency "shoulda"
|
21
21
|
gem.add_development_dependency "rack-test"
|
22
22
|
gem.add_development_dependency "redgreen"
|
23
23
|
gem.add_development_dependency "mocha"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.4
|
data/lib/silk.rb
CHANGED
data/lib/silk/dsl.rake
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
require 'rexml/document'
|
2
|
+
|
3
|
+
class FormattedResponse
|
4
|
+
def method_missing(symbol, *args, &blk)
|
5
|
+
if [ :json, :xml, :text ].include?(symbol)
|
6
|
+
if block_given?
|
7
|
+
instance_variable_set("@#{symbol.to_s}", yield)
|
8
|
+
else
|
9
|
+
instance_variable_get("@#{symbol.to_s}")
|
10
|
+
end
|
11
|
+
else
|
12
|
+
super
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class ProcessResult
|
18
|
+
attr_accessor :stdout, :stderr, :exitstatus
|
19
|
+
|
20
|
+
def initialize(stdout, stderr, exitstatus)
|
21
|
+
@stdout = stdout
|
22
|
+
@stderr = stderr
|
23
|
+
@exitstatus = exitstatus
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_json
|
27
|
+
{
|
28
|
+
:stdout => self.stdout,
|
29
|
+
:stderr => self.stderr,
|
30
|
+
:exitstatus => self.exitstatus
|
31
|
+
}.to_json
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_xml
|
35
|
+
doc = REXML::Document.new
|
36
|
+
doc.add(REXML::XMLDecl.new)
|
37
|
+
result = REXML::Element.new('process_result')
|
38
|
+
|
39
|
+
stdOutEl = REXML::Element.new('stdout')
|
40
|
+
stdOutEl.add_text(self.stdout.to_s)
|
41
|
+
|
42
|
+
stdErrEl = REXML::Element.new('stderr')
|
43
|
+
stdErrEl.add_text(self.stderr.to_s)
|
44
|
+
|
45
|
+
exitStatusEl = REXML::Element.new('exitstatus')
|
46
|
+
exitStatusEl.add_text(self.exitstatus.to_s)
|
47
|
+
|
48
|
+
result.add_element(stdOutEl)
|
49
|
+
result.add_element(stdErrEl)
|
50
|
+
result.add_element(exitStatusEl)
|
51
|
+
|
52
|
+
doc.add(result);
|
53
|
+
doc.to_s
|
54
|
+
end
|
55
|
+
|
56
|
+
def to_s
|
57
|
+
self.stdout || self.stderr
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# Allows you to set different outputs based on the requested format.
|
62
|
+
# Supports xml, json and text
|
63
|
+
#
|
64
|
+
# respond_to do |format|
|
65
|
+
# format.xml { '<xml>xml</xml>' }
|
66
|
+
# format.json { '{ json }' }
|
67
|
+
# format.text { 'text' }
|
68
|
+
# end
|
69
|
+
#
|
70
|
+
def respond_to(&blk)
|
71
|
+
response = FormattedResponse.new
|
72
|
+
yield(response)
|
73
|
+
case(ENV['format'])
|
74
|
+
when 'xml'
|
75
|
+
puts response.xml
|
76
|
+
when 'json'
|
77
|
+
puts response.json
|
78
|
+
else
|
79
|
+
puts response.text
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
# Allows you to set different error outputs based on the requested format.
|
84
|
+
# SUpports xml, json and text
|
85
|
+
#
|
86
|
+
# error_respond_to do |format|
|
87
|
+
# format.xml { '<xml>xml</xml>' }
|
88
|
+
# format.json { '{ json }' }
|
89
|
+
# format.text { 'text' }
|
90
|
+
# end
|
91
|
+
#
|
92
|
+
def error_respond_to(&blk)
|
93
|
+
response = FormattedResponse.new
|
94
|
+
yield(response)
|
95
|
+
case(ENV['format'])
|
96
|
+
when 'xml'
|
97
|
+
$stderr.puts response.xml
|
98
|
+
when 'json'
|
99
|
+
$stderr.puts response.json
|
100
|
+
else
|
101
|
+
$stderr.puts response.text
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def run(command)
|
106
|
+
stdout_read, stdout_write = IO.pipe
|
107
|
+
stderr_read, stderr_write = IO.pipe
|
108
|
+
|
109
|
+
pid = Process.fork do
|
110
|
+
$stdout.reopen stdout_write
|
111
|
+
$stderr.reopen stderr_write
|
112
|
+
stdout_read.close
|
113
|
+
stderr_read.close
|
114
|
+
Kernel.exec command
|
115
|
+
end
|
116
|
+
|
117
|
+
stdout_write.close
|
118
|
+
stderr_write.close
|
119
|
+
|
120
|
+
stdout = ''
|
121
|
+
stdout_read.each do |line|
|
122
|
+
stdout += line
|
123
|
+
end
|
124
|
+
stderr = ''
|
125
|
+
stderr_read.each do |line|
|
126
|
+
stderr += line
|
127
|
+
end
|
128
|
+
pid, status = Process.waitpid2(pid)
|
129
|
+
|
130
|
+
return ProcessResult.new(stdout, stderr, status.exitstatus)
|
131
|
+
end
|
data/lib/silk/options.rb
CHANGED
@@ -55,7 +55,7 @@ class Options
|
|
55
55
|
File.open(File.join(File.dirname(__FILE__), '..', '..', 'VERSION')) do |fh|
|
56
56
|
puts fh.read
|
57
57
|
end
|
58
|
-
exit(
|
58
|
+
exit(1)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -64,7 +64,7 @@ class Options
|
|
64
64
|
options
|
65
65
|
rescue OptionParser::InvalidOption => e
|
66
66
|
puts optparse
|
67
|
-
exit(
|
67
|
+
exit(1)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
data/lib/silk/tasks.rb
CHANGED
@@ -6,6 +6,8 @@ module Silk
|
|
6
6
|
Rake::Task.clear
|
7
7
|
@app = Rake::Application.new
|
8
8
|
@app.init
|
9
|
+
@app.rake_require 'dsl'
|
10
|
+
|
9
11
|
Silk.options[:recipe_paths].each do |path|
|
10
12
|
FileList.new("#{path}/*.rake").each do |file|
|
11
13
|
@app.add_import(file)
|
@@ -19,7 +21,8 @@ module Silk
|
|
19
21
|
end
|
20
22
|
|
21
23
|
def run(task, arguments = {})
|
22
|
-
Rake::Task[task]
|
24
|
+
task = Rake::Task[task]
|
25
|
+
task.execute(arguments)
|
23
26
|
end
|
24
27
|
end
|
25
28
|
end
|
data/silk.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{silk}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Myles Eftos"]
|
12
|
-
s.date = %q{2010-08-
|
12
|
+
s.date = %q{2010-08-29}
|
13
13
|
s.default_executable = %q{silk}
|
14
14
|
s.description = %q{It allows you to write rake tasks to do common tasks, such as creating email addresses, adding users etc. Silk provides a HTTP wrapper the the rake tasks, and allows communication via JSON objects, which makes it dead easy for them to be called from a web app.}
|
15
15
|
s.email = %q{myles@madpilot.com.au}
|
@@ -28,11 +28,13 @@ Gem::Specification.new do |s|
|
|
28
28
|
"bin/silk",
|
29
29
|
"install.rb",
|
30
30
|
"lib/silk.rb",
|
31
|
-
"lib/silk/dsl.
|
31
|
+
"lib/silk/dsl.rake",
|
32
32
|
"lib/silk/options.rb",
|
33
33
|
"lib/silk/server.rb",
|
34
34
|
"lib/silk/tasks.rb",
|
35
35
|
"silk.gemspec",
|
36
|
+
"test/bin/failure",
|
37
|
+
"test/bin/successful",
|
36
38
|
"test/helper.rb",
|
37
39
|
"test/rakefiles/test.rake",
|
38
40
|
"test/test_dsl.rb",
|
@@ -45,28 +47,28 @@ Gem::Specification.new do |s|
|
|
45
47
|
s.homepage = %q{http://github.com/madpilot/silk}
|
46
48
|
s.rdoc_options = ["--charset=UTF-8"]
|
47
49
|
s.require_paths = ["lib"]
|
48
|
-
s.rubygems_version = %q{1.3.
|
50
|
+
s.rubygems_version = %q{1.3.7}
|
49
51
|
s.summary = %q{A framework for creating a hosting console}
|
50
52
|
s.test_files = [
|
51
|
-
"test/
|
52
|
-
"test/test_silk.rb",
|
53
|
-
"test/test_options.rb",
|
53
|
+
"test/helper.rb",
|
54
54
|
"test/test_dsl.rb",
|
55
|
-
"test/test_tasks.rb",
|
56
55
|
"test/test_helper.rb",
|
57
|
-
"test/
|
56
|
+
"test/test_options.rb",
|
57
|
+
"test/test_server.rb",
|
58
|
+
"test/test_silk.rb",
|
59
|
+
"test/test_tasks.rb"
|
58
60
|
]
|
59
61
|
|
60
62
|
if s.respond_to? :specification_version then
|
61
63
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
62
64
|
s.specification_version = 3
|
63
65
|
|
64
|
-
if Gem::Version.new(Gem::
|
66
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
65
67
|
s.add_runtime_dependency(%q<daemons>, [">= 0"])
|
66
68
|
s.add_runtime_dependency(%q<json>, [">= 0"])
|
67
69
|
s.add_runtime_dependency(%q<sinatra>, [">= 0"])
|
68
70
|
s.add_runtime_dependency(%q<SyslogLogger>, [">= 0"])
|
69
|
-
s.add_development_dependency(%q<
|
71
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
70
72
|
s.add_development_dependency(%q<rack-test>, [">= 0"])
|
71
73
|
s.add_development_dependency(%q<redgreen>, [">= 0"])
|
72
74
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
@@ -75,7 +77,7 @@ Gem::Specification.new do |s|
|
|
75
77
|
s.add_dependency(%q<json>, [">= 0"])
|
76
78
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
77
79
|
s.add_dependency(%q<SyslogLogger>, [">= 0"])
|
78
|
-
s.add_dependency(%q<
|
80
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
79
81
|
s.add_dependency(%q<rack-test>, [">= 0"])
|
80
82
|
s.add_dependency(%q<redgreen>, [">= 0"])
|
81
83
|
s.add_dependency(%q<mocha>, [">= 0"])
|
@@ -85,7 +87,7 @@ Gem::Specification.new do |s|
|
|
85
87
|
s.add_dependency(%q<json>, [">= 0"])
|
86
88
|
s.add_dependency(%q<sinatra>, [">= 0"])
|
87
89
|
s.add_dependency(%q<SyslogLogger>, [">= 0"])
|
88
|
-
s.add_dependency(%q<
|
90
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
89
91
|
s.add_dependency(%q<rack-test>, [">= 0"])
|
90
92
|
s.add_dependency(%q<redgreen>, [">= 0"])
|
91
93
|
s.add_dependency(%q<mocha>, [">= 0"])
|
data/test/bin/failure
ADDED
data/test/bin/successful
ADDED
data/test/test_dsl.rb
CHANGED
@@ -1,7 +1,54 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
|
+
# Need some helper classes so we can call the methods defined in the rake include file
|
4
|
+
eval <<-EOF
|
5
|
+
module Silk
|
6
|
+
module DSL
|
7
|
+
#{File.read(File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'silk', 'dsl.rake')))}
|
8
|
+
end
|
9
|
+
end
|
10
|
+
EOF
|
11
|
+
|
12
|
+
class FakeRake
|
13
|
+
include Silk::DSL
|
14
|
+
end
|
15
|
+
|
3
16
|
class TestDSL < Test::Unit::TestCase
|
4
17
|
context 'TestDSL' do
|
18
|
+
setup do
|
19
|
+
@context = FakeRake.new
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'ProcessResult' do
|
23
|
+
setup do
|
24
|
+
@result = Silk::DSL::ProcessResult.new('Standard Output', 'Standard Error', 0)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'to_xml' do
|
28
|
+
should 'return an XML representation of the object'
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'to_json' do
|
32
|
+
should 'return an JSON respresentation of the object' do
|
33
|
+
obj = JSON::parse(@result.to_json)
|
34
|
+
assert_equal 'Standard Output', obj['stdout']
|
35
|
+
assert_equal 'Standard Error', obj['stderr']
|
36
|
+
assert_equal 0, obj['exitstatus']
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'to_s' do
|
41
|
+
should 'return stdout if defined' do
|
42
|
+
assert_equal 'Standard Output', @result.to_s
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'return stderr if stdout if not defined' do
|
46
|
+
@result.stdout = nil
|
47
|
+
assert_equal 'Standard Error', @result.to_s
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
5
52
|
context 'respond_to' do
|
6
53
|
should 'call the text block if ENV[format] == text' do
|
7
54
|
ENV['format'] = 'text'
|
@@ -11,7 +58,7 @@ class TestDSL < Test::Unit::TestCase
|
|
11
58
|
$stdout.reopen stdout_write
|
12
59
|
stdout_read.close
|
13
60
|
|
14
|
-
respond_to do |format|
|
61
|
+
@context.respond_to do |format|
|
15
62
|
format.text { 'text' }
|
16
63
|
format.json { 'json'.to_json }
|
17
64
|
format.xml { '<xml>xml</xml>' }
|
@@ -35,7 +82,7 @@ class TestDSL < Test::Unit::TestCase
|
|
35
82
|
$stdout.reopen stdout_write
|
36
83
|
stdout_read.close
|
37
84
|
|
38
|
-
respond_to do |format|
|
85
|
+
@context.respond_to do |format|
|
39
86
|
format.text { 'text' }
|
40
87
|
format.json { 'json'.to_json }
|
41
88
|
format.xml { '<xml>xml</xml>' }
|
@@ -59,7 +106,7 @@ class TestDSL < Test::Unit::TestCase
|
|
59
106
|
$stdout.reopen stdout_write
|
60
107
|
stdout_read.close
|
61
108
|
|
62
|
-
respond_to do |format|
|
109
|
+
@context.respond_to do |format|
|
63
110
|
format.text { 'text' }
|
64
111
|
format.json { 'json'.to_json }
|
65
112
|
format.xml { '<xml>xml</xml>' }
|
@@ -85,7 +132,7 @@ class TestDSL < Test::Unit::TestCase
|
|
85
132
|
$stderr.reopen stderr_write
|
86
133
|
stderr_read.close
|
87
134
|
|
88
|
-
error_respond_to do |format|
|
135
|
+
@context.error_respond_to do |format|
|
89
136
|
format.text { 'text' }
|
90
137
|
format.json { 'json'.to_json }
|
91
138
|
format.xml { '<xml>xml</xml>' }
|
@@ -109,7 +156,8 @@ class TestDSL < Test::Unit::TestCase
|
|
109
156
|
$stderr.reopen stderr_write
|
110
157
|
stderr_read.close
|
111
158
|
|
112
|
-
|
159
|
+
|
160
|
+
@context.error_respond_to do |format|
|
113
161
|
format.text { 'text' }
|
114
162
|
format.json { 'json'.to_json }
|
115
163
|
format.xml { '<xml>xml</xml>' }
|
@@ -133,7 +181,7 @@ class TestDSL < Test::Unit::TestCase
|
|
133
181
|
$stderr.reopen stderr_write
|
134
182
|
stderr_read.close
|
135
183
|
|
136
|
-
error_respond_to do |format|
|
184
|
+
@context.error_respond_to do |format|
|
137
185
|
format.text { 'text' }
|
138
186
|
format.json { 'json'.to_json }
|
139
187
|
format.xml { '<xml>xml</xml>' }
|
@@ -149,5 +197,27 @@ class TestDSL < Test::Unit::TestCase
|
|
149
197
|
assert_equal 'json'.to_json, stderr.strip
|
150
198
|
end
|
151
199
|
end
|
200
|
+
|
201
|
+
context 'run' do
|
202
|
+
should 'capture standard input and return a ProcessResult object' do
|
203
|
+
result = @context.run File.join(File.dirname(__FILE__), '..', 'test', 'bin', 'successful')
|
204
|
+
assert_equal Silk::DSL::ProcessResult, result.class
|
205
|
+
end
|
206
|
+
|
207
|
+
should 'set the stdout value' do
|
208
|
+
result = @context.run File.join(File.dirname(__FILE__), '..', 'test', 'bin', 'successful')
|
209
|
+
assert_equal 'Success!', result.stdout.strip
|
210
|
+
end
|
211
|
+
|
212
|
+
should 'set the stdout value' do
|
213
|
+
result = @context.run File.join(File.dirname(__FILE__), '..', 'test', 'bin', 'failure')
|
214
|
+
assert_equal 'Fail :(', result.stderr.strip
|
215
|
+
end
|
216
|
+
|
217
|
+
should 'set the exitstatus value' do
|
218
|
+
result = @context.run File.join(File.dirname(__FILE__), '..', 'test', 'bin', 'failure')
|
219
|
+
assert_equal 1, result.exitstatus
|
220
|
+
end
|
221
|
+
end
|
152
222
|
end
|
153
223
|
end
|
data/test/test_options.rb
CHANGED
@@ -89,7 +89,7 @@ class TestOptions < Test::Unit::TestCase
|
|
89
89
|
assert_equal [ '/etc/silk', '/home/john/.silk', '/tmp/recipes', '/tmp/recipes_2' ], options[:recipe_paths]
|
90
90
|
end
|
91
91
|
|
92
|
-
should 'add recipes to the recipe list for each
|
92
|
+
should 'add recipes to the recipe list for each --recipes' do
|
93
93
|
ARGV << '--recipes'
|
94
94
|
ARGV << '/tmp/recipes'
|
95
95
|
options = Options.parse
|
@@ -151,7 +151,7 @@ class TestOptions < Test::Unit::TestCase
|
|
151
151
|
assert_equal [ 'iis' ], options[:server]
|
152
152
|
end
|
153
153
|
|
154
|
-
should 'set the server array if
|
154
|
+
should 'set the server array if --server is set' do
|
155
155
|
ARGV << '--server'
|
156
156
|
ARGV << 'iis'
|
157
157
|
options = Options.parse
|
@@ -168,13 +168,23 @@ class TestOptions < Test::Unit::TestCase
|
|
168
168
|
stdout_read.close
|
169
169
|
options = Options.parse
|
170
170
|
end
|
171
|
-
|
171
|
+
|
172
|
+
result = ''
|
172
173
|
stdout_write.close
|
174
|
+
stdout_read.each do |line|
|
175
|
+
result += line
|
176
|
+
end
|
173
177
|
pid, status = Process.waitpid2(pid)
|
174
|
-
assert_equal
|
178
|
+
assert_equal 1, status.exitstatus
|
179
|
+
version = ''
|
180
|
+
|
181
|
+
File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')) do |fh|
|
182
|
+
version = fh.read
|
183
|
+
end
|
184
|
+
assert_equal result, version
|
175
185
|
end
|
176
186
|
|
177
|
-
should 'display the VERSION of
|
187
|
+
should 'display the VERSION of --version is set' do
|
178
188
|
ARGV << '--version'
|
179
189
|
|
180
190
|
stdout_read, stdout_write = IO.pipe
|
@@ -191,7 +201,8 @@ class TestOptions < Test::Unit::TestCase
|
|
191
201
|
result += line
|
192
202
|
end
|
193
203
|
pid, status = Process.waitpid2(pid)
|
194
|
-
assert_equal
|
204
|
+
assert_equal 1, status.exitstatus
|
205
|
+
|
195
206
|
version = ''
|
196
207
|
File.open(File.join(File.dirname(__FILE__), '..', 'VERSION')) do |fh|
|
197
208
|
version = fh.read
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: silk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 23
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 4
|
10
|
+
version: 0.0.4
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Myles Eftos
|
@@ -9,89 +15,121 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2010-08-
|
18
|
+
date: 2010-08-29 00:00:00 +08:00
|
13
19
|
default_executable: silk
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: daemons
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 3
|
30
|
+
segments:
|
31
|
+
- 0
|
23
32
|
version: "0"
|
24
|
-
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: json
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
30
40
|
requirements:
|
31
41
|
- - ">="
|
32
42
|
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
33
46
|
version: "0"
|
34
|
-
|
47
|
+
type: :runtime
|
48
|
+
version_requirements: *id002
|
35
49
|
- !ruby/object:Gem::Dependency
|
36
50
|
name: sinatra
|
37
|
-
|
38
|
-
|
39
|
-
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
40
54
|
requirements:
|
41
55
|
- - ">="
|
42
56
|
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
43
60
|
version: "0"
|
44
|
-
|
61
|
+
type: :runtime
|
62
|
+
version_requirements: *id003
|
45
63
|
- !ruby/object:Gem::Dependency
|
46
64
|
name: SyslogLogger
|
47
|
-
|
48
|
-
|
49
|
-
|
65
|
+
prerelease: false
|
66
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
50
68
|
requirements:
|
51
69
|
- - ">="
|
52
70
|
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
53
74
|
version: "0"
|
54
|
-
|
75
|
+
type: :runtime
|
76
|
+
version_requirements: *id004
|
55
77
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
57
|
-
|
58
|
-
|
59
|
-
|
78
|
+
name: shoulda
|
79
|
+
prerelease: false
|
80
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
60
82
|
requirements:
|
61
83
|
- - ">="
|
62
84
|
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
63
88
|
version: "0"
|
64
|
-
|
89
|
+
type: :development
|
90
|
+
version_requirements: *id005
|
65
91
|
- !ruby/object:Gem::Dependency
|
66
92
|
name: rack-test
|
67
|
-
|
68
|
-
|
69
|
-
|
93
|
+
prerelease: false
|
94
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
70
96
|
requirements:
|
71
97
|
- - ">="
|
72
98
|
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
73
102
|
version: "0"
|
74
|
-
|
103
|
+
type: :development
|
104
|
+
version_requirements: *id006
|
75
105
|
- !ruby/object:Gem::Dependency
|
76
106
|
name: redgreen
|
77
|
-
|
78
|
-
|
79
|
-
|
107
|
+
prerelease: false
|
108
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
80
110
|
requirements:
|
81
111
|
- - ">="
|
82
112
|
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
83
116
|
version: "0"
|
84
|
-
|
117
|
+
type: :development
|
118
|
+
version_requirements: *id007
|
85
119
|
- !ruby/object:Gem::Dependency
|
86
120
|
name: mocha
|
87
|
-
|
88
|
-
|
89
|
-
|
121
|
+
prerelease: false
|
122
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
90
124
|
requirements:
|
91
125
|
- - ">="
|
92
126
|
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
93
130
|
version: "0"
|
94
|
-
|
131
|
+
type: :development
|
132
|
+
version_requirements: *id008
|
95
133
|
description: It allows you to write rake tasks to do common tasks, such as creating email addresses, adding users etc. Silk provides a HTTP wrapper the the rake tasks, and allows communication via JSON objects, which makes it dead easy for them to be called from a web app.
|
96
134
|
email: myles@madpilot.com.au
|
97
135
|
executables:
|
@@ -111,11 +149,13 @@ files:
|
|
111
149
|
- bin/silk
|
112
150
|
- install.rb
|
113
151
|
- lib/silk.rb
|
114
|
-
- lib/silk/dsl.
|
152
|
+
- lib/silk/dsl.rake
|
115
153
|
- lib/silk/options.rb
|
116
154
|
- lib/silk/server.rb
|
117
155
|
- lib/silk/tasks.rb
|
118
156
|
- silk.gemspec
|
157
|
+
- test/bin/failure
|
158
|
+
- test/bin/successful
|
119
159
|
- test/helper.rb
|
120
160
|
- test/rakefiles/test.rake
|
121
161
|
- test/test_dsl.rb
|
@@ -134,29 +174,35 @@ rdoc_options:
|
|
134
174
|
require_paths:
|
135
175
|
- lib
|
136
176
|
required_ruby_version: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
137
178
|
requirements:
|
138
179
|
- - ">="
|
139
180
|
- !ruby/object:Gem::Version
|
181
|
+
hash: 3
|
182
|
+
segments:
|
183
|
+
- 0
|
140
184
|
version: "0"
|
141
|
-
version:
|
142
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
186
|
+
none: false
|
143
187
|
requirements:
|
144
188
|
- - ">="
|
145
189
|
- !ruby/object:Gem::Version
|
190
|
+
hash: 3
|
191
|
+
segments:
|
192
|
+
- 0
|
146
193
|
version: "0"
|
147
|
-
version:
|
148
194
|
requirements: []
|
149
195
|
|
150
196
|
rubyforge_project:
|
151
|
-
rubygems_version: 1.3.
|
197
|
+
rubygems_version: 1.3.7
|
152
198
|
signing_key:
|
153
199
|
specification_version: 3
|
154
200
|
summary: A framework for creating a hosting console
|
155
201
|
test_files:
|
202
|
+
- test/helper.rb
|
203
|
+
- test/test_dsl.rb
|
204
|
+
- test/test_helper.rb
|
205
|
+
- test/test_options.rb
|
156
206
|
- test/test_server.rb
|
157
207
|
- test/test_silk.rb
|
158
|
-
- test/test_options.rb
|
159
|
-
- test/test_dsl.rb
|
160
208
|
- test/test_tasks.rb
|
161
|
-
- test/test_helper.rb
|
162
|
-
- test/helper.rb
|
data/lib/silk/dsl.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
class FormattedResponse
|
2
|
-
def method_missing(symbol, *args, &blk)
|
3
|
-
if [ :json, :xml, :text ].include?(symbol)
|
4
|
-
if block_given?
|
5
|
-
instance_variable_set("@#{symbol.to_s}", yield)
|
6
|
-
else
|
7
|
-
instance_variable_get("@#{symbol.to_s}")
|
8
|
-
end
|
9
|
-
else
|
10
|
-
super
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
# Allows you to set different outputs based on the requested format.
|
16
|
-
# SUpports xml, json and text
|
17
|
-
#
|
18
|
-
# respond_to do |format|
|
19
|
-
# format.xml { '<xml>xml</xml>' }
|
20
|
-
# format.json { '{ json }' }
|
21
|
-
# format.text { 'text' }
|
22
|
-
# end
|
23
|
-
#
|
24
|
-
def respond_to(&blk)
|
25
|
-
response = FormattedResponse.new
|
26
|
-
yield(response)
|
27
|
-
case(ENV['format'])
|
28
|
-
when 'xml'
|
29
|
-
puts response.xml
|
30
|
-
when 'json'
|
31
|
-
puts response.json
|
32
|
-
else
|
33
|
-
puts response.text
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Allows you to set different error outputs based on the requested format.
|
38
|
-
# SUpports xml, json and text
|
39
|
-
#
|
40
|
-
# error_respond_to do |format|
|
41
|
-
# format.xml { '<xml>xml</xml>' }
|
42
|
-
# format.json { '{ json }' }
|
43
|
-
# format.text { 'text' }
|
44
|
-
# end
|
45
|
-
#
|
46
|
-
def error_respond_to(&blk)
|
47
|
-
response = FormattedResponse.new
|
48
|
-
yield(response)
|
49
|
-
case(ENV['format'])
|
50
|
-
when 'xml'
|
51
|
-
$stderr.puts response.xml
|
52
|
-
when 'json'
|
53
|
-
$stderr.puts response.json
|
54
|
-
else
|
55
|
-
$stderr.puts response.text
|
56
|
-
end
|
57
|
-
end
|