shelly 0.0.34 → 0.0.36

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/lib/shelly/app.rb CHANGED
@@ -115,20 +115,20 @@ module Shelly
115
115
  configs.find_all { |config| config["created_by_user"] == false }
116
116
  end
117
117
 
118
- def config(id)
119
- shelly.app_config(code_name, id)
118
+ def config(path)
119
+ shelly.app_config(code_name, path)
120
120
  end
121
121
 
122
122
  def create_config(path, content)
123
123
  shelly.app_create_config(code_name, path, content)
124
124
  end
125
125
 
126
- def update_config(id, content)
127
- shelly.app_update_config(code_name, id, content)
126
+ def update_config(path, content)
127
+ shelly.app_update_config(code_name, path, content)
128
128
  end
129
129
 
130
- def delete_config(id)
131
- shelly.app_delete_config(code_name, id)
130
+ def delete_config(path)
131
+ shelly.app_delete_config(code_name, path)
132
132
  end
133
133
 
134
134
  def open_billing_page
@@ -44,15 +44,19 @@ module Shelly
44
44
 
45
45
  method_option :cloud, :type => :string, :aliases => "-c",
46
46
  :desc => "Specify which cloud to show configuration file for"
47
- desc "show CONFIG_ID", "View configuration file"
48
- def show(id = nil)
47
+ desc "show PATH", "View configuration file"
48
+ def show(path = nil)
49
49
  logged_in?
50
50
  say_error "No Cloudfile found" unless Cloudfile.present?
51
- say_error "No configuration file specified" unless id
52
- multiple_clouds(options[:cloud], "show #{id}", "Specify cloud using:")
53
- config = @app.config(id)
51
+ say_error "No configuration file specified" unless path
52
+ multiple_clouds(options[:cloud], "show #{path}", "Specify cloud using:")
53
+ config = @app.config(path)
54
54
  say "Content of #{config["path"]}:", :green
55
55
  say config["content"]
56
+ rescue Client::APIError => e
57
+ if e.unauthorized?
58
+ say_error "You have no access to '#{@app.code_name}' cloud defined in Cloudfile"
59
+ end
56
60
  end
57
61
 
58
62
  map "new" => :create
@@ -81,15 +85,15 @@ module Shelly
81
85
  map "update" => :edit
82
86
  method_option :cloud, :type => :string, :aliases => "-c",
83
87
  :desc => "Specify for which cloud edit configuration file"
84
- desc "edit CONFIG_ID", "Edit configuration file"
85
- def edit(id = nil)
88
+ desc "edit PATH", "Edit configuration file"
89
+ def edit(path = nil)
86
90
  logged_in?
87
91
  say_error "No Cloudfile found" unless Cloudfile.present?
88
- say_error "No configuration file specified" unless id
89
- multiple_clouds(options[:cloud], "edit #{id}", "Specify cloud using:")
90
- config = @app.config(id)
92
+ say_error "No configuration file specified" unless path
93
+ multiple_clouds(options[:cloud], "edit #{path}", "Specify cloud using:")
94
+ config = @app.config(path)
91
95
  content = open_editor(config["path"], config["content"])
92
- @app.update_config(id, content)
96
+ @app.update_config(path, content)
93
97
  say "File '#{config["path"]}' updated, it will be used after next code deploy", :green
94
98
  rescue Client::APIError => e
95
99
  if e.unauthorized?
@@ -104,16 +108,15 @@ module Shelly
104
108
 
105
109
  method_option :cloud, :type => :string, :aliases => "-c",
106
110
  :desc => "Specify for which cloud delete configuration file"
107
- desc "delete CONFIG_ID", "Delete configuration file"
108
- def delete(id = nil)
111
+ desc "delete PATH", "Delete configuration file"
112
+ def delete(path = nil)
109
113
  logged_in?
110
114
  say_error "No Cloudfile found" unless Cloudfile.present?
111
- say_error "No configuration file specified" unless id
112
- multiple_clouds(options[:cloud], "delete #{id}", "Specify cloud using:")
113
- config = @app.config(id)
114
- answer = ask("Are you sure you want to delete '#{config["path"]}' [y/n]: ")
115
+ say_error "No configuration file specified" unless path
116
+ multiple_clouds(options[:cloud], "delete #{path}", "Specify cloud using:")
117
+ answer = ask("Are you sure you want to delete 'path' [y/n]: ")
115
118
  if answer =~ /yes|YES|y|Y/
116
- @app.delete_config(id)
119
+ @app.delete_config(path)
117
120
  say "File deleted, redeploy your cloud to make changes", :green
118
121
  else
119
122
  say "File not deleted"
@@ -132,7 +135,7 @@ module Shelly
132
135
  no_tasks do
133
136
  def print_configs(configs)
134
137
  print_table(configs.map { |config|
135
- [" * ", config["id"], config["path"]] })
138
+ [" * ", config["path"]] })
136
139
  end
137
140
 
138
141
  def open_editor(path, output = "")
data/lib/shelly/client.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require "rest_client"
2
2
  require "json"
3
+ require "cgi"
3
4
 
4
5
  module Shelly
5
6
  class Client
@@ -71,20 +72,20 @@ module Shelly
71
72
  get("/apps/#{cloud}/configs")
72
73
  end
73
74
 
74
- def app_config(cloud, id)
75
- get("/apps/#{cloud}/configs/#{id}")
75
+ def app_config(cloud, path)
76
+ get("/apps/#{cloud}/configs/#{CGI.escape(path)}")
76
77
  end
77
78
 
78
79
  def app_create_config(cloud, path, content)
79
80
  post("/apps/#{cloud}/configs", :config => {:path => path, :content => content})
80
81
  end
81
82
 
82
- def app_update_config(cloud, id, content)
83
- put("/apps/#{cloud}/configs/#{id}", :config => {:content => content})
83
+ def app_update_config(cloud, path, content)
84
+ put("/apps/#{cloud}/configs/#{CGI.escape(path)}", :config => {:content => content})
84
85
  end
85
86
 
86
- def app_delete_config(cloud, id)
87
- delete("/apps/#{cloud}/configs/#{id}")
87
+ def app_delete_config(cloud, path)
88
+ delete("/apps/#{cloud}/configs/#{CGI.escape(path)}")
88
89
  end
89
90
 
90
91
  def send_invitation(cloud, email)
@@ -1,3 +1,3 @@
1
1
  module Shelly
2
- VERSION = "0.0.34"
2
+ VERSION = "0.0.36"
3
3
  end
@@ -41,15 +41,15 @@ describe Shelly::CLI::Config do
41
41
  end
42
42
 
43
43
  it "should list available configuration files for clouds" do
44
- @client.should_receive(:app_configs).with("foo-staging").and_return([{"id" => 1, "created_by_user" => true, "path" => "config/settings.yml"}])
45
- @client.should_receive(:app_configs).with("foo-production").and_return([{"id" => 2, "created_by_user" => false, "path" => "config/app.yml"}])
44
+ @client.should_receive(:app_configs).with("foo-staging").and_return([{"created_by_user" => true, "path" => "config/settings.yml"}])
45
+ @client.should_receive(:app_configs).with("foo-production").and_return([{"created_by_user" => false, "path" => "config/app.yml"}])
46
46
  $stdout.should_receive(:puts).with(green "Configuration files for foo-production")
47
47
  $stdout.should_receive(:puts).with("You have no custom configuration files.")
48
48
  $stdout.should_receive(:puts).with("Following files are created by Shelly Cloud:")
49
- $stdout.should_receive(:puts).with(/ * 2\s+config\/app.yml/)
49
+ $stdout.should_receive(:puts).with(/ * \s+config\/app.yml/)
50
50
  $stdout.should_receive(:puts).with(green "Configuration files for foo-staging")
51
51
  $stdout.should_receive(:puts).with("Custom configuration files:")
52
- $stdout.should_receive(:puts).with(/ * 1\s+config\/settings.yml/)
52
+ $stdout.should_receive(:puts).with(/ * \s+config\/settings.yml/)
53
53
 
54
54
  @config.list
55
55
  end
@@ -200,7 +200,6 @@ describe Shelly::CLI::Config do
200
200
  end
201
201
 
202
202
  it "should delete configuration file" do
203
- @client.should_receive(:app_config).with("foo-staging", 1).and_return({"path" => "test.rb", "content" => "example content"})
204
203
  @client.should_receive(:app_delete_config).with("foo-staging", 1).and_return({})
205
204
  $stdout.should_receive(:puts).with(green "File deleted, redeploy your cloud to make changes")
206
205
  fake_stdin(["y"]) do
@@ -209,7 +208,6 @@ describe Shelly::CLI::Config do
209
208
  end
210
209
 
211
210
  it "should not delete file if user answered other than yes/y" do
212
- @client.should_receive(:app_config).with("foo-staging", 1).and_return({"path" => "test.rb", "content" => "example content"})
213
211
  @client.should_not_receive(:app_delete_config)
214
212
  $stdout.should_receive(:puts).with("File not deleted")
215
213
  fake_stdin(["n"]) do
@@ -228,7 +226,6 @@ describe Shelly::CLI::Config do
228
226
  end
229
227
 
230
228
  it "should use cloud specified by parameter" do
231
- @client.should_receive(:app_config).with("foo-production", 1).and_return({"path" => "test.rb", "content" => "example content"})
232
229
  @client.should_receive(:app_delete_config).with("foo-production", 1).and_return({})
233
230
  $stdout.should_receive(:puts).with(green "File deleted, redeploy your cloud to make changes")
234
231
  @config.options = {:cloud => "foo-production"}
metadata CHANGED
@@ -1,216 +1,167 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: shelly
3
- version: !ruby/object:Gem::Version
4
- hash: 91
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.36
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 34
10
- version: 0.0.34
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Shelly Cloud team
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-12-27 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2011-12-27 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70232388827320 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rake
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70232388827320
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70232388826900 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
49
- name: guard
50
34
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70232388826900
36
+ - !ruby/object:Gem::Dependency
37
+ name: guard
38
+ requirement: &70232388826480 !ruby/object:Gem::Requirement
52
39
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
60
44
  type: :development
61
- version_requirements: *id003
62
- - !ruby/object:Gem::Dependency
63
- name: guard-rspec
64
45
  prerelease: false
65
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70232388826480
47
+ - !ruby/object:Gem::Dependency
48
+ name: guard-rspec
49
+ requirement: &70232388826060 !ruby/object:Gem::Requirement
66
50
  none: false
67
- requirements:
68
- - - ">="
69
- - !ruby/object:Gem::Version
70
- hash: 3
71
- segments:
72
- - 0
73
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
74
55
  type: :development
75
- version_requirements: *id004
76
- - !ruby/object:Gem::Dependency
77
- name: growl_notify
78
56
  prerelease: false
79
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70232388826060
58
+ - !ruby/object:Gem::Dependency
59
+ name: growl_notify
60
+ requirement: &70232388825540 !ruby/object:Gem::Requirement
80
61
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- hash: 3
85
- segments:
86
- - 0
87
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
88
66
  type: :development
89
- version_requirements: *id005
90
- - !ruby/object:Gem::Dependency
91
- name: rb-fsevent
92
67
  prerelease: false
93
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70232388825540
69
+ - !ruby/object:Gem::Dependency
70
+ name: rb-fsevent
71
+ requirement: &70232388825120 !ruby/object:Gem::Requirement
94
72
  none: false
95
- requirements:
96
- - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
102
77
  type: :development
103
- version_requirements: *id006
104
- - !ruby/object:Gem::Dependency
105
- name: fakefs
106
78
  prerelease: false
107
- requirement: &id007 !ruby/object:Gem::Requirement
79
+ version_requirements: *70232388825120
80
+ - !ruby/object:Gem::Dependency
81
+ name: fakefs
82
+ requirement: &70232388824600 !ruby/object:Gem::Requirement
108
83
  none: false
109
- requirements:
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- hash: 3
113
- segments:
114
- - 0
115
- version: "0"
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
116
88
  type: :development
117
- version_requirements: *id007
118
- - !ruby/object:Gem::Dependency
119
- name: fakeweb
120
89
  prerelease: false
121
- requirement: &id008 !ruby/object:Gem::Requirement
90
+ version_requirements: *70232388824600
91
+ - !ruby/object:Gem::Dependency
92
+ name: fakeweb
93
+ requirement: &70232388824140 !ruby/object:Gem::Requirement
122
94
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- hash: 3
127
- segments:
128
- - 0
129
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
130
99
  type: :development
131
- version_requirements: *id008
132
- - !ruby/object:Gem::Dependency
133
- name: wijet-thor
134
100
  prerelease: false
135
- requirement: &id009 !ruby/object:Gem::Requirement
101
+ version_requirements: *70232388824140
102
+ - !ruby/object:Gem::Dependency
103
+ name: wijet-thor
104
+ requirement: &70232388823400 !ruby/object:Gem::Requirement
136
105
  none: false
137
- requirements:
106
+ requirements:
138
107
  - - ~>
139
- - !ruby/object:Gem::Version
140
- hash: 41
141
- segments:
142
- - 0
143
- - 14
144
- - 7
108
+ - !ruby/object:Gem::Version
145
109
  version: 0.14.7
146
110
  type: :runtime
147
- version_requirements: *id009
148
- - !ruby/object:Gem::Dependency
149
- name: rest-client
150
111
  prerelease: false
151
- requirement: &id010 !ruby/object:Gem::Requirement
112
+ version_requirements: *70232388823400
113
+ - !ruby/object:Gem::Dependency
114
+ name: rest-client
115
+ requirement: &70232388821260 !ruby/object:Gem::Requirement
152
116
  none: false
153
- requirements:
154
- - - ">="
155
- - !ruby/object:Gem::Version
156
- hash: 3
157
- segments:
158
- - 0
159
- version: "0"
117
+ requirements:
118
+ - - ! '>='
119
+ - !ruby/object:Gem::Version
120
+ version: '0'
160
121
  type: :runtime
161
- version_requirements: *id010
162
- - !ruby/object:Gem::Dependency
163
- name: json
164
122
  prerelease: false
165
- requirement: &id011 !ruby/object:Gem::Requirement
123
+ version_requirements: *70232388821260
124
+ - !ruby/object:Gem::Dependency
125
+ name: json
126
+ requirement: &70232388820800 !ruby/object:Gem::Requirement
166
127
  none: false
167
- requirements:
168
- - - ">="
169
- - !ruby/object:Gem::Version
170
- hash: 3
171
- segments:
172
- - 0
173
- version: "0"
128
+ requirements:
129
+ - - ! '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
174
132
  type: :runtime
175
- version_requirements: *id011
176
- - !ruby/object:Gem::Dependency
177
- name: wijet-launchy
178
133
  prerelease: false
179
- requirement: &id012 !ruby/object:Gem::Requirement
134
+ version_requirements: *70232388820800
135
+ - !ruby/object:Gem::Dependency
136
+ name: wijet-launchy
137
+ requirement: &70232388820380 !ruby/object:Gem::Requirement
180
138
  none: false
181
- requirements:
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- hash: 3
185
- segments:
186
- - 0
187
- version: "0"
139
+ requirements:
140
+ - - ! '>='
141
+ - !ruby/object:Gem::Version
142
+ version: '0'
188
143
  type: :runtime
189
- version_requirements: *id012
190
- - !ruby/object:Gem::Dependency
191
- name: progressbar
192
144
  prerelease: false
193
- requirement: &id013 !ruby/object:Gem::Requirement
145
+ version_requirements: *70232388820380
146
+ - !ruby/object:Gem::Dependency
147
+ name: progressbar
148
+ requirement: &70232388808000 !ruby/object:Gem::Requirement
194
149
  none: false
195
- requirements:
196
- - - ">="
197
- - !ruby/object:Gem::Version
198
- hash: 3
199
- segments:
200
- - 0
201
- version: "0"
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
202
154
  type: :runtime
203
- version_requirements: *id013
155
+ prerelease: false
156
+ version_requirements: *70232388808000
204
157
  description: Tool for managing applications and clouds at shellycloud.com
205
- email:
158
+ email:
206
159
  - support@shellycloud.com
207
- executables:
160
+ executables:
208
161
  - shelly
209
162
  extensions: []
210
-
211
163
  extra_rdoc_files: []
212
-
213
- files:
164
+ files:
214
165
  - .gitignore
215
166
  - .travis.yml
216
167
  - Gemfile
@@ -261,38 +212,29 @@ files:
261
212
  - spec/thor/options_spec.rb
262
213
  homepage: http://shellycloud.com
263
214
  licenses: []
264
-
265
215
  post_install_message:
266
216
  rdoc_options: []
267
-
268
- require_paths:
217
+ require_paths:
269
218
  - lib
270
- required_ruby_version: !ruby/object:Gem::Requirement
219
+ required_ruby_version: !ruby/object:Gem::Requirement
271
220
  none: false
272
- requirements:
273
- - - ">="
274
- - !ruby/object:Gem::Version
275
- hash: 3
276
- segments:
277
- - 0
278
- version: "0"
279
- required_rubygems_version: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ! '>='
223
+ - !ruby/object:Gem::Version
224
+ version: '0'
225
+ required_rubygems_version: !ruby/object:Gem::Requirement
280
226
  none: false
281
- requirements:
282
- - - ">="
283
- - !ruby/object:Gem::Version
284
- hash: 3
285
- segments:
286
- - 0
287
- version: "0"
227
+ requirements:
228
+ - - ! '>='
229
+ - !ruby/object:Gem::Version
230
+ version: '0'
288
231
  requirements: []
289
-
290
232
  rubyforge_project: shelly
291
233
  rubygems_version: 1.8.10
292
234
  signing_key:
293
235
  specification_version: 3
294
236
  summary: Shelly Cloud command line tool
295
- test_files:
237
+ test_files:
296
238
  - spec/helpers.rb
297
239
  - spec/input_faker.rb
298
240
  - spec/shelly/app_spec.rb