jiveapps 1.0.5 → 1.0.6

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.
@@ -1,3 +1,11 @@
1
+ === 1.0.6 2012-02-08
2
+ * Enhancements
3
+ * ADT-26: Prompt to delete files and delete if so
4
+ * Update error message display logic to handle an array of multiple errors per field.
5
+ * ADT-16: Implement jiveapps delete command
6
+ * Rename KEY_REGEX to SSH_KEY_REGEX, avoid name conflict warning in tests.
7
+ * ADT-27: Check for existance of app dir before create. If it does, halt and display error.
8
+
1
9
  === 1.0.5 2011-07-29
2
10
  * Enhancements
3
11
  * Update app template to use preferred height of 400 px on home view
@@ -5,3 +5,4 @@ end
5
5
 
6
6
  require 'jiveapps/version'
7
7
  require 'jiveapps/client'
8
+ require 'fileutils'
@@ -173,7 +173,7 @@ class Jiveapps::Client
173
173
  def process(method, uri, extra_headers={}, payload=nil)
174
174
  headers = jiveapps_headers.merge(extra_headers)
175
175
  args = [method, payload, headers].compact
176
-
176
+
177
177
  begin
178
178
  response = resource(uri).send(*args)
179
179
  extract_warning(response)
@@ -24,7 +24,7 @@ module Jiveapps::Command
24
24
  end
25
25
 
26
26
  def info
27
- name = (args.first && !args.first =~ /^\-\-/) ? args.first : extract_app
27
+ name = determine_app_name
28
28
  app = jiveapps.info(name)
29
29
  if app == nil
30
30
  display "App not found."
@@ -58,6 +58,7 @@ module Jiveapps::Command
58
58
 
59
59
  debug "Running in debug mode."
60
60
  check_git_version
61
+ check_if_dir_already_exists
61
62
  app_list = Jiveapps::Command.run_internal('auth:check', []) # check auth credentials and ssh key before generating app
62
63
  return unless app_list.class == Array
63
64
  Jiveapps::Command.run_internal('keys:add', ["--silent"])
@@ -71,7 +72,7 @@ module Jiveapps::Command
71
72
  end
72
73
 
73
74
  def install
74
- name = (args.first && !args.first =~ /^\-\-/) ? args.first : extract_app
75
+ name = determine_app_name
75
76
  display "=== Installing \"#{name}\" on the Jive App Sandbox: ", false
76
77
  app = jiveapps.install(name)
77
78
  handle_response_errors
@@ -83,6 +84,34 @@ module Jiveapps::Command
83
84
  end
84
85
  end
85
86
 
87
+ def delete
88
+ name = determine_app_name
89
+ app = jiveapps.info(name)
90
+ if app == nil
91
+ display "App not found."
92
+ else
93
+ if confirm("Are you sure you want to delete the app \"#{name}\" [y/N]? ")
94
+ display "=== Deleting \"#{name}\": ", false
95
+ @current_app = jiveapps.delete_app(name)
96
+ handle_response_errors
97
+
98
+ dir_delete_text = "Would you like to delete the local directory \"#{name}\" [y/N]? "
99
+
100
+ # if we're in the app directory now
101
+ if File.split(Dir.pwd).last == name && File.directory?(".git") && confirm(dir_delete_text)
102
+ Dir.chdir("..")
103
+ FileUtils.rm_rf(name)
104
+ display "Local directory \"#{name}\" deleted."
105
+ # otherwise if that directory exists below the current one
106
+ elsif File.directory?(name) && confirm(dir_delete_text)
107
+ FileUtils.rm_rf(name)
108
+ display "Local directory \"#{name}\" deleted."
109
+ end
110
+
111
+ end
112
+ end
113
+ end
114
+
86
115
  private
87
116
 
88
117
  def create_remote_app
@@ -119,7 +148,7 @@ module Jiveapps::Command
119
148
  display "FAILURE"
120
149
  display result.error
121
150
  display_git_push_fail_info
122
- delete_app
151
+ delete_app_and_dir
123
152
  else
124
153
  display "SUCCESS"
125
154
  Dir.chdir(File.join(Dir.pwd, @appname)) do
@@ -133,7 +162,7 @@ module Jiveapps::Command
133
162
  response_code = get_response_code(current_app['app_url'])
134
163
  if response_code != 200
135
164
  display_git_push_fail_info
136
- delete_app
165
+ delete_app_and_dir
137
166
  end
138
167
  end
139
168
 
@@ -145,7 +174,7 @@ module Jiveapps::Command
145
174
  handle_response_errors
146
175
  end
147
176
 
148
- def delete_app
177
+ def delete_app_and_dir
149
178
  run("rm -rf #{@appname}")
150
179
  jiveapps.delete_app(@appname)
151
180
  @current_app = nil # halt further actions
@@ -189,10 +218,11 @@ module Jiveapps::Command
189
218
  display "FAILURE"
190
219
  @current_app["errors"].each do |key, value|
191
220
  if key == 'base'
192
- display "Error: #{value}"
221
+ display "Error: ", false
193
222
  else
194
- display "Error on \"#{key}\": #{value}"
223
+ display "Error on \"#{key}\": ", false
195
224
  end
225
+ display value.to_yaml.gsub(/^--- /, '') # to_yaml easily displays an array as a multiline list. gsub() to get rid of first "---" that to_yaml puts out.
196
226
  end
197
227
  @current_app = nil
198
228
  else
@@ -208,5 +238,15 @@ module Jiveapps::Command
208
238
  end
209
239
  end
210
240
 
241
+ def check_if_dir_already_exists
242
+ if File.directory?(@appname)
243
+ error("A directory named \"#{@appname}\" already exists. Please delete or move directory and try again.")
244
+ end
245
+ end
246
+
247
+ def determine_app_name
248
+ args.first && args.first !~ /^\-\-/ ? args.first : extract_app
249
+ end
250
+
211
251
  end
212
252
  end
@@ -1,5 +1,3 @@
1
- require 'fileutils'
2
-
3
1
  module Jiveapps::Command
4
2
  class Auth < Base
5
3
  attr_accessor :credentials
@@ -18,8 +18,10 @@ module Jiveapps::Command
18
18
  display "=== App Specific Commands"
19
19
  display " NOTE: run these within app directory, or pass app name with: --app <app_name>"
20
20
  display ""
21
- display "info # displays information about an app"
21
+ display "info # display information about an app"
22
22
  display "install # install an app on the sandbox (if you removed it, you can reinstall)"
23
+ display "livedev # start livedev mode"
24
+ display "delete # delete app"
23
25
  display ""
24
26
  display "keys # show your user\'s public keys"
25
27
  display "keys:add [<path to keyfile>] # add a public key. optionally include path"
@@ -33,8 +35,6 @@ module Jiveapps::Command
33
35
  display "sharing:add <username> # add a collaborator"
34
36
  display "sharing:remove <username> # remove a collaborator"
35
37
  display ""
36
- display "livedev # start livedev mode"
37
- display ""
38
38
  display "=== Simple Workflow Example:"
39
39
  display ""
40
40
  display "$ jiveapps create myapp # create a new app named \"myapp\""
@@ -1,7 +1,7 @@
1
1
  module Jiveapps::Command
2
2
  class Keys < Base
3
3
 
4
- KEY_REGEX = /^((?:[A-Za-z0-9-]+(?:="[^"]+")?,?)+ *)?(ssh-(?:dss|rsa)) *([^ ]*) *(.*)/
4
+ SSH_KEY_REGEX = /^((?:[A-Za-z0-9-]+(?:="[^"]+")?,?)+ *)?(ssh-(?:dss|rsa)) *([^ ]*) *(.*)/
5
5
 
6
6
  # Lists uploaded SSH keys
7
7
  def list
@@ -76,7 +76,7 @@ module Jiveapps::Command
76
76
  end
77
77
 
78
78
  def validate_key(key, keyfile)
79
- if KEY_REGEX.match(key.strip).nil?
79
+ if SSH_KEY_REGEX.match(key.strip).nil?
80
80
  fake_key = "ssh-rsa NAyG4kbVIZyokH/hMDkLbrFBktxPgsQKBgQDshif7w5RgOTK0eaNC6AJbjX0NTOgoTtbjQIX0s9fAUiakcxU3Qqna9ONXlL1mgf+WZ3KgOyUyNcgz2JPWinZseoTDNukRixqcLS9HO8qOWoLUHJZID1q1xf/btESt4UylEMiykEn712YGqCpVdFxX+q7z7b6Z5G/9n49hKWN22wKBgQCBDM1DUeqOX5Li2Hnj/EF/PfhGypAlhz/Klh40foNq7TziwFtkTZz06HpRNIhK2VcoLhU49f2v6CrcaEmll9Zs5Hw2VMrSeTNReO5gRfxlrId1imhfBkYUaZImEKSWAe3HgdyihCmXqf5SCQOtVmm5lxbgaSBjz== your.name@machine.name"
81
81
 
82
82
  raise CommandFailed, "Invalid SSH public key format found at \"#{keyfile}\":\n\n#{key}\n\nExample of correct format:\n\n#{fake_key}\n\nCheck and fix, or regenerate key with this command:\n$ ssh-keygen -t rsa"
@@ -1,3 +1,3 @@
1
1
  module Jiveapps
2
- VERSION = '1.0.5'
2
+ VERSION = '1.0.6'
3
3
  end
@@ -27,10 +27,10 @@ module Jiveapps::Command
27
27
  describe "app info" do
28
28
  it "shows info when name specified and rest client returns an app" do
29
29
  @cli.stub!(:args).and_return(['myapp'])
30
- @cli.jiveapps.should_receive(:info).with('myapp').and_return({
31
- 'name' => 'myapp',
30
+ @cli.jiveapps.should_receive(:info).with('myapp').and_return({
31
+ 'name' => 'myapp',
32
32
  'app_url' => 'http://app_url',
33
- 'git_url' => 'http://git_url'
33
+ 'git_url' => 'http://git_url'
34
34
  })
35
35
  @cli.should_receive(:display).with('=== myapp')
36
36
  @cli.should_receive(:display).with("App URL: http://app_url")
@@ -59,5 +59,23 @@ module Jiveapps::Command
59
59
 
60
60
  end
61
61
 
62
+ describe "check_if_dir_already_exists" do
63
+ it "should throw an error if dir exists" do
64
+ name = "random-name-#{(rand * 100000).to_i}"
65
+ FileUtils.mkdir(name)
66
+ @cli.instance_variable_set("@appname", name)
67
+ @cli.should_receive(:error).with("A directory named \"#{name}\" already exists. Please delete or move directory and try again.")
68
+ @cli.send :check_if_dir_already_exists
69
+ FileUtils.rm_rf(name)
70
+ end
71
+
72
+ it "should not throw an error if dir does not exist" do
73
+ name = "random-name-#{(rand * 100000).to_i}"
74
+ @cli.instance_variable_set("@appname", name)
75
+ @cli.should_not_receive(:error)
76
+ @cli.send :check_if_dir_already_exists
77
+ end
78
+ end
79
+
62
80
  end
63
81
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jiveapps
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 5
10
- version: 1.0.5
9
+ - 6
10
+ version: 1.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Scott Becker
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-01 00:00:00 -07:00
19
- default_executable:
18
+ date: 2012-02-08 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: activesupport
@@ -224,7 +223,6 @@ files:
224
223
  - spec/commands/oauth_spec.rb
225
224
  - spec/commands/sharing_spec.rb
226
225
  - spec/spec_helper.rb
227
- has_rdoc: true
228
226
  homepage: https://github.com/jivesoftware/jiveapps-gem
229
227
  licenses: []
230
228
 
@@ -254,17 +252,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
254
252
  requirements: []
255
253
 
256
254
  rubyforge_project:
257
- rubygems_version: 1.3.9.2
255
+ rubygems_version: 1.8.10
258
256
  signing_key:
259
257
  specification_version: 3
260
258
  summary: The "jiveapps" gem is a set of command line tools for building and hosting Jive App front-ends.
261
- test_files:
262
- - spec/client_spec.rb
263
- - spec/commands/app_spec.rb
264
- - spec/commands/base_spec.rb
265
- - spec/commands/help_spec.rb
266
- - spec/commands/keys_spec.rb
267
- - spec/commands/livedev_spec.rb
268
- - spec/commands/oauth_spec.rb
269
- - spec/commands/sharing_spec.rb
270
- - spec/spec_helper.rb
259
+ test_files: []
260
+