veslo 0.1.0 → 0.2.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.
- data/VERSION +1 -1
- data/lib/veslo.rb +31 -4
- data/spec/veslo_spec.rb +24 -1
- data/veslo.gemspec +3 -3
- metadata +67 -22
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/veslo.rb
CHANGED
@@ -8,6 +8,7 @@ class Veslo
|
|
8
8
|
SUPPORTED_METHODS = ["put", "get"]
|
9
9
|
SUPPORTED_RESOURCES = ["configurations"]
|
10
10
|
|
11
|
+
attr_accessor :server
|
11
12
|
option :server_url,
|
12
13
|
:short => "-s SERVER",
|
13
14
|
:long => "--server SERVER",
|
@@ -17,7 +18,13 @@ class Veslo
|
|
17
18
|
argv = parse_options(arguments)
|
18
19
|
@server = RestClient::Resource.new(config[:server_url], :headers => {:accept => "application/octet"})
|
19
20
|
parse_commands(argv)
|
20
|
-
send(:"resource_#{@method}")
|
21
|
+
send(:"resource_#{@method}_cli")
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.client(server)
|
25
|
+
client = self.new
|
26
|
+
client.server = RestClient::Resource.new(server, :headers => {:accept => "application/octet"})
|
27
|
+
client
|
21
28
|
end
|
22
29
|
|
23
30
|
def parse_commands(commands)
|
@@ -34,8 +41,18 @@ class Veslo
|
|
34
41
|
raise NotImplementedError.new("resource #{@resource} not supported") unless SUPPORTED_RESOURCES.include?(@resource)
|
35
42
|
end
|
36
43
|
|
44
|
+
def get(resource, name)
|
45
|
+
@resource = resource
|
46
|
+
@name = name
|
47
|
+
resource_get
|
48
|
+
end
|
49
|
+
|
37
50
|
def resource_get
|
38
|
-
|
51
|
+
@server["#{@resource}/#{@name}"].get
|
52
|
+
end
|
53
|
+
|
54
|
+
def resource_get_cli
|
55
|
+
result = resource_get
|
39
56
|
$stdout.puts result.to_str
|
40
57
|
return 0
|
41
58
|
rescue RestClient::ExceptionWithResponse => e
|
@@ -49,11 +66,21 @@ class Veslo
|
|
49
66
|
end
|
50
67
|
end
|
51
68
|
|
52
|
-
def
|
69
|
+
def put(resource, name, data)
|
70
|
+
@resource = resource
|
71
|
+
@name = name
|
72
|
+
resource_put(data)
|
73
|
+
end
|
74
|
+
|
75
|
+
def resource_put(data)
|
76
|
+
@server["#{@resource}/#{@name}"].put(data)
|
77
|
+
end
|
78
|
+
|
79
|
+
def resource_put_cli
|
53
80
|
raise NotImplementedError, "No STDIN yet" unless @file
|
54
81
|
file_content = File.open(@file, 'r').read
|
55
82
|
put_data = "{\"format\":\"app/octet\", \"body\":#{file_content.to_json}}"
|
56
|
-
result =
|
83
|
+
result = resource_put(put_data)
|
57
84
|
$stdout.puts "Config uploaded"
|
58
85
|
return 0
|
59
86
|
rescue Errno::ENOENT
|
data/spec/veslo_spec.rb
CHANGED
@@ -43,8 +43,31 @@ describe "Veslo", "parsing arguments" do
|
|
43
43
|
lambda{@veslo.parse_commands(["foobars", "get", "baz"])}.should raise_error(NotImplementedError)
|
44
44
|
end
|
45
45
|
end
|
46
|
+
describe "Veslo", "interacting with server as a library" do
|
47
|
+
before :all do
|
48
|
+
@veslo = Veslo.client("http://example.com")
|
49
|
+
FakeWeb.register_uri(:get, "http://example.com/configurations/existing", :body => "Hello World!")
|
50
|
+
FakeWeb.register_uri(:get, "http://example.com/configurations/missing", :body => "Nothing to be found 'round here", :status => ["404", "Not Found"])
|
51
|
+
FakeWeb.register_uri(:put, "http://example.com/configurations/creating", :body => "Hello World!")
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should get the a existing configuration" do
|
55
|
+
@veslo.get("configurations", "existing").should == "Hello World!"
|
56
|
+
end
|
46
57
|
|
47
|
-
|
58
|
+
it "should not get the a missing configuration" do
|
59
|
+
lambda{ @veslo.get("configurations", "missing")}.should raise_error(RestClient::ResourceNotFound)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should upload a config" do
|
63
|
+
lambda{
|
64
|
+
@veslo.put("configurations", "existing", "{\"format\":\"app/octet\", \"body\":\"foo:\\n bar: baz\\n foobar: foobaz\\n\"}")
|
65
|
+
}.should raise_error(RestClient::Found) # REALLY?
|
66
|
+
FakeWeb.last_request.method.should == "PUT"
|
67
|
+
FakeWeb.last_request.body.should == "{\"format\":\"app/octet\", \"body\":\"foo:\\n bar: baz\\n foobar: foobaz\\n\"}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
describe "Veslo", "interacting with server from the comand line" do
|
48
71
|
before :all do
|
49
72
|
@veslo = Veslo.new
|
50
73
|
@base_argv = ["-s", "http://example.com", "configurations"]
|
data/veslo.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "veslo"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Dimitri Krassovski"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-04-16"
|
13
13
|
s.description = "Command line utility to manage Noah configurations"
|
14
14
|
s.email = "dimitri@wix.com"
|
15
15
|
s.executables = ["veslo", "veslo"]
|
@@ -39,7 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.homepage = "http://github.com/Wixpress/veslo"
|
40
40
|
s.licenses = ["MIT"]
|
41
41
|
s.require_paths = ["lib"]
|
42
|
-
s.rubygems_version = "1.8.
|
42
|
+
s.rubygems_version = "1.8.21"
|
43
43
|
s.summary = "Command line Noah client"
|
44
44
|
|
45
45
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: veslo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-04-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mixlib-cli
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rest-client
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: json
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: rdoc
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: fakeweb
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: rspec
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ~>
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: 2.7.0
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ~>
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 2.7.0
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: bundler
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ~>
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: 1.0.0
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ~>
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 1.0.0
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: jeweler
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ~>
|
@@ -98,10 +133,15 @@ dependencies:
|
|
98
133
|
version: 1.6.4
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.6.4
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: rcov
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
@@ -109,7 +149,12 @@ dependencies:
|
|
109
149
|
version: '0'
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
113
158
|
description: Command line utility to manage Noah configurations
|
114
159
|
email: dimitri@wix.com
|
115
160
|
executables:
|
@@ -151,7 +196,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
196
|
version: '0'
|
152
197
|
segments:
|
153
198
|
- 0
|
154
|
-
hash: -
|
199
|
+
hash: -408740355878419037
|
155
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
201
|
none: false
|
157
202
|
requirements:
|
@@ -160,7 +205,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
160
205
|
version: '0'
|
161
206
|
requirements: []
|
162
207
|
rubyforge_project:
|
163
|
-
rubygems_version: 1.8.
|
208
|
+
rubygems_version: 1.8.21
|
164
209
|
signing_key:
|
165
210
|
specification_version: 3
|
166
211
|
summary: Command line Noah client
|