vmc 0.4.0.beta.93 → 0.4.0.beta.94

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.
Files changed (65) hide show
  1. data/vmc-ng/Rakefile +21 -30
  2. data/vmc-ng/lib/vmc.rb +4 -3
  3. data/vmc-ng/lib/vmc/cli.rb +10 -9
  4. data/vmc-ng/lib/vmc/cli/app/app.rb +45 -0
  5. data/vmc-ng/lib/vmc/cli/app/apps.rb +97 -0
  6. data/vmc-ng/lib/vmc/cli/app/base.rb +82 -0
  7. data/vmc-ng/lib/vmc/cli/app/crashes.rb +41 -0
  8. data/vmc-ng/lib/vmc/cli/app/delete.rb +90 -0
  9. data/vmc-ng/lib/vmc/cli/app/deprecated.rb +11 -0
  10. data/vmc-ng/lib/vmc/cli/app/env.rb +86 -0
  11. data/vmc-ng/lib/vmc/cli/app/files.rb +85 -0
  12. data/vmc-ng/lib/vmc/cli/app/health.rb +27 -0
  13. data/vmc-ng/lib/vmc/cli/app/instances.rb +49 -0
  14. data/vmc-ng/lib/vmc/cli/app/logs.rb +80 -0
  15. data/vmc-ng/lib/vmc/cli/app/push.rb +336 -0
  16. data/vmc-ng/lib/vmc/cli/app/rename.rb +31 -0
  17. data/vmc-ng/lib/vmc/cli/app/restart.rb +23 -0
  18. data/vmc-ng/lib/vmc/cli/app/routes.rb +97 -0
  19. data/vmc-ng/lib/vmc/cli/app/scale.rb +67 -0
  20. data/vmc-ng/lib/vmc/cli/app/start.rb +96 -0
  21. data/vmc-ng/lib/vmc/cli/app/stats.rb +68 -0
  22. data/vmc-ng/lib/vmc/cli/app/stop.rb +29 -0
  23. data/vmc-ng/lib/vmc/cli/domain/add_domain.rb +27 -0
  24. data/vmc-ng/lib/vmc/cli/domain/base.rb +12 -0
  25. data/vmc-ng/lib/vmc/cli/domain/create_domain.rb +31 -0
  26. data/vmc-ng/lib/vmc/cli/domain/delete_domain.rb +51 -0
  27. data/vmc-ng/lib/vmc/cli/domain/domains.rb +43 -0
  28. data/vmc-ng/lib/vmc/cli/domain/remove_domain.rb +26 -0
  29. data/vmc-ng/lib/vmc/cli/help.rb +0 -1
  30. data/vmc-ng/lib/vmc/cli/interactive.rb +4 -0
  31. data/vmc-ng/lib/vmc/cli/route/base.rb +12 -0
  32. data/vmc-ng/lib/vmc/cli/route/create_route.rb +42 -0
  33. data/vmc-ng/lib/vmc/cli/route/delete_route.rb +42 -0
  34. data/vmc-ng/lib/vmc/cli/route/routes.rb +26 -0
  35. data/vmc-ng/lib/vmc/detect.rb +2 -2
  36. data/vmc-ng/lib/vmc/spec_helper.rb +1 -0
  37. data/vmc-ng/lib/vmc/version.rb +1 -1
  38. data/vmc-ng/spec/cli/app/push_spec.rb +34 -0
  39. data/vmc-ng/spec/cli/app/rename_spec.rb +108 -0
  40. data/vmc-ng/spec/cli/route/delete_route_spec.rb +160 -0
  41. data/vmc-ng/spec/detect_spec.rb +54 -0
  42. data/vmc-ng/spec/factories/app_factory.rb +9 -0
  43. data/vmc-ng/spec/factories/client_factory.rb +16 -0
  44. data/vmc-ng/spec/factories/domain_factory.rb +9 -0
  45. data/vmc-ng/spec/factories/factory.rb +3 -0
  46. data/vmc-ng/spec/factories/framework_factory.rb +9 -0
  47. data/vmc-ng/spec/factories/route_factory.rb +10 -0
  48. data/vmc-ng/spec/spec_helper.rb +17 -0
  49. data/vmc-ng/spec/support/interact_helpers.rb +23 -0
  50. metadata +135 -62
  51. data/vmc-ng/lib/vmc/cli/app.rb +0 -1333
  52. data/vmc-ng/lib/vmc/cli/domain.rb +0 -164
  53. data/vmc-ng/lib/vmc/cli/route.rb +0 -106
  54. data/vmc-ng/lib/vmc/spec_helpers.rb +0 -431
  55. data/vmc-ng/lib/vmc/spec_helpers/eventlog.rb +0 -277
  56. data/vmc-ng/lib/vmc/spec_helpers/patches.rb +0 -94
  57. data/vmc-ng/spec/Rakefile +0 -13
  58. data/vmc-ng/spec/app/app_spec.rb +0 -19
  59. data/vmc-ng/spec/app/apps_spec.rb +0 -79
  60. data/vmc-ng/spec/app/push_spec.rb +0 -74
  61. data/vmc-ng/spec/assets/hello-sinatra/Gemfile +0 -2
  62. data/vmc-ng/spec/assets/hello-sinatra/main.rb +0 -5
  63. data/vmc-ng/spec/assets/hello-sinatra/manifest.yml +0 -9
  64. data/vmc-ng/spec/helpers.rb +0 -7
  65. data/vmc-ng/spec/start/target_spec.rb +0 -60
@@ -1,277 +0,0 @@
1
- require "thread"
2
-
3
- class FakeTTY
4
- attr_accessor :event
5
-
6
- def initialize
7
- @input = Queue.new
8
- end
9
-
10
- def getc
11
- @input.pop
12
- end
13
-
14
- def fake(input)
15
- return if @input.nil?
16
-
17
- input.each_char do |c|
18
- @input << c
19
- end
20
- end
21
-
22
- def close
23
- @input = nil
24
- end
25
-
26
- def tty?
27
- true
28
- end
29
- end
30
-
31
- class EventLog
32
- attr_accessor :process
33
- attr_reader :events, :interaction, :inputs
34
-
35
- def initialize(input)
36
- @input = input
37
-
38
- @queue = Queue.new
39
- @events = []
40
- @inputs = {}
41
- end
42
-
43
- def finish_input
44
- @input.close
45
- end
46
-
47
- def kill_process
48
- @process.kill
49
- @process.join
50
- end
51
-
52
- def next_event
53
- if @queue.empty?
54
- if @process.status == false
55
- raise "Expected more events, but the process has finished."
56
- elsif @process.status == nil
57
- begin
58
- @process.join
59
- rescue => e
60
- raise "Expected more events, but process has thrown an exception: #{e}."
61
- end
62
- end
63
- end
64
-
65
- val = @queue.pop
66
- @events << val
67
- val
68
- end
69
-
70
- def pending_events
71
- events = []
72
-
73
- until @queue.empty?
74
- events << @queue.pop
75
- end
76
-
77
- events
78
- end
79
-
80
- def wait_for_event(type)
81
- val = next_event
82
-
83
- until val.is_a?(type)
84
- if val.important?
85
- raise "Tried to skip important event while waiting for a #{type}: #{val}"
86
- end
87
-
88
- val = next_event
89
- end
90
-
91
- val
92
- end
93
-
94
-
95
- def pick_random_option
96
- options = @interaction.options
97
- choices = options[:choices]
98
- chosen = choices[rand(choices.size)]
99
-
100
- if display = options[:display]
101
- provide("#{display.call(chosen)}\n")
102
- else
103
- provide("#{chosen}\n")
104
- end
105
-
106
- chosen
107
- end
108
-
109
- def provide(input)
110
- @input.fake(input)
111
- end
112
-
113
-
114
- def printed(line)
115
- @queue << Printed.new(line)
116
- end
117
-
118
- def asking(message, options = {})
119
- @interaction = Asked.new(message, options)
120
- @queue << @interaction
121
- end
122
-
123
- def got_input(name, val)
124
- @inputs[name] = val
125
- @queue << GotInput.new(name, val)
126
- end
127
-
128
- def raised(exception)
129
- @queue << Raised.new(exception)
130
- end
131
-
132
- def did(message)
133
- @queue << Did.new(message)
134
- end
135
-
136
- def skipped(message)
137
- @queue << Skipped.new(message)
138
- end
139
-
140
- def failed_to(message)
141
- @queue << FailedTo.new(message)
142
- end
143
-
144
- def gave_up(message)
145
- @queue << GaveUp.new(message)
146
- end
147
-
148
-
149
- class Event
150
- def important?
151
- true
152
- end
153
- end
154
-
155
- class Printed < Event
156
- attr_reader :line
157
-
158
- def initialize(line)
159
- @line = line
160
- end
161
-
162
- def to_s
163
- "<Printed '#@line'>"
164
- end
165
- end
166
-
167
- class Asked < Event
168
- attr_reader :message, :options
169
-
170
- def initialize(message, options = {})
171
- @message = message
172
- @options = options
173
- end
174
-
175
- def to_s
176
- "<Asked '#@message'>"
177
- end
178
- end
179
-
180
- class GotInput < Event
181
- attr_reader :name, :value
182
-
183
- def initialize(name, value)
184
- @name = name
185
- @value = value
186
- end
187
-
188
- def to_s
189
- "<GotInput #@name '#@value'>"
190
- end
191
-
192
- def important?
193
- false
194
- end
195
- end
196
-
197
- class Raised < Event
198
- attr_reader :exception
199
-
200
- def initialize(exception)
201
- @exception = exception
202
- end
203
-
204
- def to_s
205
- "<Raised #{@exception.class} '#@exception'>"
206
- end
207
- end
208
-
209
- class Progress < Event
210
- attr_reader :message
211
-
212
- def initialize(message)
213
- @message = message
214
- end
215
-
216
- def ==(other)
217
- other.is_a?(self.class) &&
218
- @message == other.message
219
- end
220
- end
221
-
222
- class Did < Progress
223
- def to_s
224
- "<Did '#@message'>"
225
- end
226
-
227
- def report
228
- "do '#@message'"
229
- end
230
-
231
- def report_past
232
- "did '#@message'"
233
- end
234
- end
235
-
236
- class Skipped < Progress
237
- def to_s
238
- "<Skipped '#@message'>"
239
- end
240
-
241
- def report
242
- "skip '#@message'"
243
- end
244
-
245
- def report_past
246
- "skipped '#@message'"
247
- end
248
- end
249
-
250
- class FailedTo < Progress
251
- def to_s
252
- "<FailedTo '#@message'>"
253
- end
254
-
255
- def report
256
- "fail to '#@message'"
257
- end
258
-
259
- def report_past
260
- "failed to '#@message'"
261
- end
262
- end
263
-
264
- class GaveUp < Progress
265
- def to_s
266
- "<GaveUp '#@message'>"
267
- end
268
-
269
- def report
270
- "give up on '#@message'"
271
- end
272
-
273
- def report_past
274
- "gave up on '#@message'"
275
- end
276
- end
277
- end
@@ -1,94 +0,0 @@
1
- require "mothership"
2
- require "interact"
3
- require "vmc"
4
-
5
- # [EventLog]
6
- $vmc_event = nil
7
-
8
- class VMC::CLI
9
- def run(name)
10
- if input[:help]
11
- invoke :help, :command => cmd.name.to_s
12
- else
13
- precondition
14
- super
15
- end
16
- end
17
-
18
- class ProgressEventReporter
19
- def initialize(message, skipper)
20
- @message = message
21
- @skipper = skipper
22
- @skipped = false
23
- end
24
-
25
- def skip(&blk)
26
- @skipped = true
27
- $vmc_event.skipped(@message)
28
- @skipper.skip(&blk)
29
- end
30
-
31
- def fail(&blk)
32
- @skipped = true
33
- $vmc_event.failed_to(@message)
34
- @skipper.fail(&blk)
35
- end
36
-
37
- def give_up(&blk)
38
- @skipped = true
39
- $vmc_event.gave_up(@message)
40
- @skipper.give_up(&blk)
41
- end
42
-
43
- def skipped?
44
- @skipped
45
- end
46
- end
47
-
48
- def ask(*args)
49
- $vmc_event.asking(*args) if $vmc_event
50
- super
51
- end
52
-
53
- def line(*args)
54
- $vmc_event.printed(*args) if $vmc_event
55
- super
56
- end
57
-
58
- def force?
59
- false
60
- end
61
-
62
- def with_progress(msg, &blk)
63
- super(msg) do |s|
64
- reporter = ProgressEventReporter.new(msg, s)
65
-
66
- res = blk.call(reporter)
67
-
68
- $vmc_event.did(msg) unless reporter.skipped?
69
-
70
- res
71
- end
72
- rescue
73
- $vmc_event.failed_to(msg)
74
- raise
75
- end
76
- end
77
-
78
- class Mothership::Inputs
79
- alias_method :vmc_spec_get, :get
80
-
81
- def get(name, context, *args)
82
- val = vmc_spec_get(name, context, *args)
83
- $vmc_event.got_input(name, val) if $vmc_event
84
- val
85
- end
86
- end
87
-
88
- module Interactive
89
- def set_input_state(input)
90
- end
91
-
92
- def restore_input_state(input, before)
93
- end
94
- end
data/vmc-ng/spec/Rakefile DELETED
@@ -1,13 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- Bundler.require(:default, :development)
4
-
5
- require 'rake/dsl_definition'
6
- require 'rake'
7
- require 'rspec'
8
- require 'rspec/core/rake_task'
9
-
10
- RSpec::Core::RakeTask.new do |t|
11
- t.pattern = "**/*_spec.rb"
12
- t.rspec_opts = ["--format", "documentation", "--colour"]
13
- end
@@ -1,19 +0,0 @@
1
- require File.expand_path("../../helpers", __FILE__)
2
-
3
- describe "App#app" do
4
- it "shows the app name if it exists" do
5
- with_random_app do |app|
6
- running(:app, {}, :app => app.name) do
7
- outputs(app.name)
8
- end
9
- end
10
- end
11
-
12
- it "fails if an unknown app is provided" do
13
- running(:app, {}, :app => "unknown-app") do
14
- raises(VMC::UserError) do |e|
15
- e.message.should == "Unknown app 'unknown-app'"
16
- end
17
- end
18
- end
19
- end
@@ -1,79 +0,0 @@
1
- require File.expand_path("../../helpers", __FILE__)
2
-
3
- describe "App#apps" do
4
- it "lists app names" do
5
- with_random_apps do |apps|
6
- running(:apps) do
7
- does("Getting applications in #{client.current_space.name}")
8
-
9
- apps.sort_by(&:name).each do |a|
10
- outputs(a.name)
11
- end
12
- end
13
- end
14
- end
15
-
16
- it "filters by name with --name" do
17
- with_random_apps do |apps|
18
- name = sample(apps).name
19
-
20
- running(:apps, :name => name) do
21
- does("Getting applications in #{client.current_space.name}")
22
-
23
- apps.sort_by(&:name).each do |a|
24
- if a.name == name
25
- outputs(a.name)
26
- end
27
- end
28
- end
29
- end
30
- end
31
-
32
- it "filters by runtime with --runtime" do
33
- with_random_apps do |apps|
34
- runtime = sample(apps).runtime
35
-
36
- running(:apps, :runtime => runtime.name) do
37
- does("Getting applications in #{client.current_space.name}")
38
-
39
- apps.sort_by(&:name).each do |a|
40
- if a.runtime =~ /#{runtime}/
41
- outputs(a.name)
42
- end
43
- end
44
- end
45
- end
46
- end
47
-
48
- it "filters by framework with --framework" do
49
- with_random_apps do |apps|
50
- framework = sample(apps).framework
51
-
52
- running(:apps, :framework => framework.name) do
53
- does("Getting applications in #{client.current_space.name}")
54
-
55
- apps.sort_by(&:name).each do |a|
56
- if a.framework == framework
57
- outputs(a.name)
58
- end
59
- end
60
- end
61
- end
62
- end
63
-
64
- it "can be told which space with --space" do
65
- with_new_space do |space|
66
- with_random_apps do |other_apps|
67
- with_random_apps(space) do |apps|
68
- running(:apps, :space => space) do
69
- does("Getting applications in #{space.name}")
70
-
71
- apps.sort_by(&:name).each do |a|
72
- outputs(a.name)
73
- end
74
- end
75
- end
76
- end
77
- end
78
- end
79
- end