veslo 0.0.2 → 0.0.3

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/Gemfile CHANGED
@@ -10,6 +10,8 @@ gem 'mixlib-cli'
10
10
  gem 'rest-client'
11
11
 
12
12
  group :development do
13
+ gem "rdoc"
14
+ gem "fakeweb"
13
15
  gem "rspec", "~> 2.3.0"
14
16
  gem "bundler", "~> 1.0.0"
15
17
  gem "jeweler", "~> 1.6.4"
data/Gemfile.lock CHANGED
@@ -2,6 +2,7 @@ GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
4
  diff-lcs (1.1.3)
5
+ fakeweb (1.3.0)
5
6
  git (1.2.5)
6
7
  jeweler (1.6.4)
7
8
  bundler (~> 1.0)
@@ -11,6 +12,7 @@ GEM
11
12
  mixlib-cli (1.2.2)
12
13
  rake (0.9.2.2)
13
14
  rcov (0.9.11)
15
+ rdoc (3.9.2)
14
16
  rest-client (1.6.7)
15
17
  mime-types (>= 1.16)
16
18
  rspec (2.3.0)
@@ -27,8 +29,10 @@ PLATFORMS
27
29
 
28
30
  DEPENDENCIES
29
31
  bundler (~> 1.0.0)
32
+ fakeweb
30
33
  jeweler (~> 1.6.4)
31
34
  mixlib-cli
32
35
  rcov
36
+ rdoc
33
37
  rest-client
34
38
  rspec (~> 2.3.0)
data/Rakefile CHANGED
@@ -39,8 +39,8 @@ end
39
39
 
40
40
  task :default => :spec
41
41
 
42
- require 'rake/rdoctask'
43
- Rake::RDocTask.new do |rdoc|
42
+ require 'rdoc/task'
43
+ RDoc::Task.new do |rdoc|
44
44
  version = File.exist?('VERSION') ? File.read('VERSION') : ""
45
45
 
46
46
  rdoc.rdoc_dir = 'rdoc'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
data/lib/veslo.rb CHANGED
@@ -17,7 +17,6 @@ class Veslo
17
17
  @server = RestClient::Resource.new(config[:server_url], :headers => {:accept => "application/octet"})
18
18
  parse_commands(argv)
19
19
  execute
20
- return 0
21
20
  end
22
21
 
23
22
  def parse_commands(commands)
@@ -34,7 +33,19 @@ class Veslo
34
33
  end
35
34
 
36
35
  def execute
37
- result = @server["#{@resource}/#{@name}"].get()
38
- puts result.to_str
36
+ begin
37
+ result = @server["#{@resource}/#{@name}"].get
38
+ $stdout.puts result.to_str
39
+ return 0
40
+ rescue RestClient::ExceptionWithResponse => e
41
+ case e.response.code
42
+ when 404
43
+ $stderr.puts("Requested resource not found")
44
+ return 1
45
+ else
46
+ $stderr.puts("Request failed with status: #{e.response.code}")
47
+ return 2
48
+ end
49
+ end
39
50
  end
40
51
  end
data/spec/veslo_spec.rb CHANGED
@@ -1,6 +1,20 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'fakeweb'
3
+ require 'stringio'
2
4
 
3
- describe "Veslo" do
5
+ def capture(*streams)
6
+ streams.map! { |stream| stream.to_s }
7
+ begin
8
+ result = StringIO.new
9
+ streams.each { |stream| eval "$#{stream} = result" }
10
+ yield
11
+ ensure
12
+ streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
13
+ end
14
+ result.string
15
+ end
16
+
17
+ describe "Veslo", "parsing arguments" do
4
18
  before :each do
5
19
  @veslo = Veslo.new
6
20
  end
@@ -25,3 +39,41 @@ describe "Veslo" do
25
39
  lambda{@veslo.parse_commands(["foobars", "get", "baz"])}.should raise_error(NotImplementedError)
26
40
  end
27
41
  end
42
+
43
+ describe "Veslo", "interacting with server" do
44
+ before :all do
45
+ @veslo = Veslo.new
46
+ @base_argv = ["-s", "http://example.com", "configurations"]
47
+ @get_existing_argv = @base_argv + ["get", "existing"]
48
+ @get_missing_argv = @base_argv + ["get", "missing"]
49
+ @get_error_argv = @base_argv + ["get", "error"]
50
+
51
+ FakeWeb.allow_net_connect = false
52
+ FakeWeb.register_uri(:get, "http://example.com/configurations/existing", :body => "Hello World!")
53
+ FakeWeb.register_uri(:get, "http://example.com/configurations/missing", :body => "Nothing to be found 'round here", :status => ["404", "Not Found"])
54
+ FakeWeb.register_uri(:get, "http://example.com/configurations/error", :body => "Internal Server Error", :status => ["500", "Internal Server Error"])
55
+
56
+ FakeWeb.register_uri(:put, "http://example.com/configurations/creating", :body => "Hello World!")
57
+ end
58
+
59
+ it "should get an existing configuration" do
60
+ @output = capture(:stdout) do
61
+ @veslo.run!(*@get_existing_argv)
62
+ end
63
+ @output.should == "Hello World!\n"
64
+ end
65
+
66
+ it "should tell if a configuration was not found" do
67
+ @output = capture(:stderr) do
68
+ @veslo.run!(*@get_missing_argv)
69
+ end
70
+ @output.should == "Requested resource not found\n"
71
+ end
72
+
73
+ it "should tell what happened in case of failure" do
74
+ @output = capture(:stderr) do
75
+ @veslo.run!(*@get_error_argv)
76
+ end
77
+ @output.should == "Request failed with status: 500\n"
78
+ end
79
+ end
data/veslo.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "veslo"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
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"]
@@ -35,7 +35,7 @@ Gem::Specification.new do |s|
35
35
  s.homepage = "http://github.com/Wixpress/veslo"
36
36
  s.licenses = ["MIT"]
37
37
  s.require_paths = ["lib"]
38
- s.rubygems_version = "1.8.12"
38
+ s.rubygems_version = "1.8.10"
39
39
  s.summary = "Command line Noah client"
40
40
 
41
41
  if s.respond_to? :specification_version then
@@ -44,6 +44,8 @@ Gem::Specification.new do |s|
44
44
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
45
45
  s.add_runtime_dependency(%q<mixlib-cli>, [">= 0"])
46
46
  s.add_runtime_dependency(%q<rest-client>, [">= 0"])
47
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
48
+ s.add_development_dependency(%q<fakeweb>, [">= 0"])
47
49
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
48
50
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
49
51
  s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -51,6 +53,8 @@ Gem::Specification.new do |s|
51
53
  else
52
54
  s.add_dependency(%q<mixlib-cli>, [">= 0"])
53
55
  s.add_dependency(%q<rest-client>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, [">= 0"])
57
+ s.add_dependency(%q<fakeweb>, [">= 0"])
54
58
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
55
59
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
60
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
@@ -59,6 +63,8 @@ Gem::Specification.new do |s|
59
63
  else
60
64
  s.add_dependency(%q<mixlib-cli>, [">= 0"])
61
65
  s.add_dependency(%q<rest-client>, [">= 0"])
66
+ s.add_dependency(%q<rdoc>, [">= 0"])
67
+ s.add_dependency(%q<fakeweb>, [">= 0"])
62
68
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
63
69
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
64
70
  s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
metadata CHANGED
@@ -1,91 +1,150 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: veslo
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 25
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 3
10
+ version: 0.0.3
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Dimitri Krassovski
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2011-12-05 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2011-12-05 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ requirement: &id001 !ruby/object:Gem::Requirement
22
+ none: false
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ hash: 3
27
+ segments:
28
+ - 0
29
+ version: "0"
30
+ version_requirements: *id001
15
31
  name: mixlib-cli
16
- requirement: &70228438425380 !ruby/object:Gem::Requirement
32
+ prerelease: false
33
+ type: :runtime
34
+ - !ruby/object:Gem::Dependency
35
+ requirement: &id002 !ruby/object:Gem::Requirement
17
36
  none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ hash: 3
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ version_requirements: *id002
45
+ name: rest-client
46
+ prerelease: false
22
47
  type: :runtime
48
+ - !ruby/object:Gem::Dependency
49
+ requirement: &id003 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ hash: 3
55
+ segments:
56
+ - 0
57
+ version: "0"
58
+ version_requirements: *id003
59
+ name: rdoc
23
60
  prerelease: false
24
- version_requirements: *70228438425380
25
- - !ruby/object:Gem::Dependency
26
- name: rest-client
27
- requirement: &70228438424800 !ruby/object:Gem::Requirement
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ requirement: &id004 !ruby/object:Gem::Requirement
28
64
  none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ hash: 3
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ version_requirements: *id004
73
+ name: fakeweb
34
74
  prerelease: false
35
- version_requirements: *70228438424800
36
- - !ruby/object:Gem::Dependency
37
- name: rspec
38
- requirement: &70228438424060 !ruby/object:Gem::Requirement
75
+ type: :development
76
+ - !ruby/object:Gem::Dependency
77
+ requirement: &id005 !ruby/object:Gem::Requirement
39
78
  none: false
40
- requirements:
79
+ requirements:
41
80
  - - ~>
42
- - !ruby/object:Gem::Version
81
+ - !ruby/object:Gem::Version
82
+ hash: 3
83
+ segments:
84
+ - 2
85
+ - 3
86
+ - 0
43
87
  version: 2.3.0
44
- type: :development
88
+ version_requirements: *id005
89
+ name: rspec
45
90
  prerelease: false
46
- version_requirements: *70228438424060
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: &70228438423480 !ruby/object:Gem::Requirement
91
+ type: :development
92
+ - !ruby/object:Gem::Dependency
93
+ requirement: &id006 !ruby/object:Gem::Requirement
50
94
  none: false
51
- requirements:
95
+ requirements:
52
96
  - - ~>
53
- - !ruby/object:Gem::Version
97
+ - !ruby/object:Gem::Version
98
+ hash: 23
99
+ segments:
100
+ - 1
101
+ - 0
102
+ - 0
54
103
  version: 1.0.0
55
- type: :development
104
+ version_requirements: *id006
105
+ name: bundler
56
106
  prerelease: false
57
- version_requirements: *70228438423480
58
- - !ruby/object:Gem::Dependency
59
- name: jeweler
60
- requirement: &70228438422880 !ruby/object:Gem::Requirement
107
+ type: :development
108
+ - !ruby/object:Gem::Dependency
109
+ requirement: &id007 !ruby/object:Gem::Requirement
61
110
  none: false
62
- requirements:
111
+ requirements:
63
112
  - - ~>
64
- - !ruby/object:Gem::Version
113
+ - !ruby/object:Gem::Version
114
+ hash: 7
115
+ segments:
116
+ - 1
117
+ - 6
118
+ - 4
65
119
  version: 1.6.4
66
- type: :development
120
+ version_requirements: *id007
121
+ name: jeweler
67
122
  prerelease: false
68
- version_requirements: *70228438422880
69
- - !ruby/object:Gem::Dependency
70
- name: rcov
71
- requirement: &70228438422020 !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
123
  type: :development
124
+ - !ruby/object:Gem::Dependency
125
+ requirement: &id008 !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ hash: 3
131
+ segments:
132
+ - 0
133
+ version: "0"
134
+ version_requirements: *id008
135
+ name: rcov
78
136
  prerelease: false
79
- version_requirements: *70228438422020
137
+ type: :development
80
138
  description: Command line utility to manage Noah configurations
81
139
  email: dimitri@wix.com
82
- executables:
140
+ executables:
83
141
  - veslo
84
142
  extensions: []
85
- extra_rdoc_files:
143
+
144
+ extra_rdoc_files:
86
145
  - LICENSE.txt
87
146
  - README.rdoc
88
- files:
147
+ files:
89
148
  - .document
90
149
  - .rspec
91
150
  - Gemfile
@@ -100,31 +159,37 @@ files:
100
159
  - spec/veslo_spec.rb
101
160
  - veslo.gemspec
102
161
  homepage: http://github.com/Wixpress/veslo
103
- licenses:
162
+ licenses:
104
163
  - MIT
105
164
  post_install_message:
106
165
  rdoc_options: []
107
- require_paths:
166
+
167
+ require_paths:
108
168
  - lib
109
- required_ruby_version: !ruby/object:Gem::Requirement
169
+ required_ruby_version: !ruby/object:Gem::Requirement
110
170
  none: false
111
- requirements:
112
- - - ! '>='
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- segments:
171
+ requirements:
172
+ - - ">="
173
+ - !ruby/object:Gem::Version
174
+ hash: 3
175
+ segments:
116
176
  - 0
117
- hash: -469394592728239512
118
- required_rubygems_version: !ruby/object:Gem::Requirement
177
+ version: "0"
178
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
179
  none: false
120
- requirements:
121
- - - ! '>='
122
- - !ruby/object:Gem::Version
123
- version: '0'
180
+ requirements:
181
+ - - ">="
182
+ - !ruby/object:Gem::Version
183
+ hash: 3
184
+ segments:
185
+ - 0
186
+ version: "0"
124
187
  requirements: []
188
+
125
189
  rubyforge_project:
126
- rubygems_version: 1.8.12
190
+ rubygems_version: 1.8.10
127
191
  signing_key:
128
192
  specification_version: 3
129
193
  summary: Command line Noah client
130
194
  test_files: []
195
+