shelly 0.0.34 → 0.0.36

Sign up to get free protection for your applications and to get access to all the features.
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