vmc 0.5.0.rc2 → 0.5.0.rc3
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/vmc/cli/app/push/create.rb +17 -5
- data/lib/vmc/cli/app/push/interactions.rb +4 -2
- data/lib/vmc/cli/start/target.rb +1 -1
- data/lib/vmc/test_support.rb +3 -1
- data/lib/vmc/version.rb +1 -1
- data/spec/assets/hello-sinatra/config.ru +3 -0
- data/spec/features/v1/new_user_flow_spec.rb +11 -7
- data/spec/features/v2/push_flow_spec.rb +22 -23
- data/spec/features/v2/switching_targets_spec.rb +32 -0
- data/spec/vmc/cli/app/push/create_spec.rb +55 -35
- data/spec/vmc/cli/start/target_spec.rb +13 -0
- metadata +187 -195
@@ -10,10 +10,18 @@ module VMC::App
|
|
10
10
|
inputs[:name] = input[:name]
|
11
11
|
inputs[:total_instances] = input[:instances]
|
12
12
|
inputs[:space] = client.current_space if client.current_space
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
|
14
|
+
if v2?
|
15
|
+
inputs[:production] = !!(input[:plan] =~ /^p/i)
|
16
|
+
inputs[:command] = input[:command] unless has_procfile?
|
17
|
+
|
18
|
+
framework = detector.detect_framework
|
19
|
+
else
|
20
|
+
framework = inputs[:framework] = determine_framework
|
21
|
+
inputs[:runtime] = determine_runtime(framework)
|
22
|
+
inputs[:command] = input[:command] if can_have_custom_start_command?(framework)
|
23
|
+
end
|
24
|
+
|
17
25
|
inputs[:buildpack] = input[:buildpack] if v2?
|
18
26
|
|
19
27
|
human_mb = human_mb(detector.suggested_memory(framework) || 64)
|
@@ -122,8 +130,12 @@ module VMC::App
|
|
122
130
|
|
123
131
|
private
|
124
132
|
|
133
|
+
def has_procfile?
|
134
|
+
File.exists?("#@path/Procfile")
|
135
|
+
end
|
136
|
+
|
125
137
|
def can_have_custom_start_command?(framework)
|
126
|
-
|
138
|
+
framework.name == "standalone"
|
127
139
|
end
|
128
140
|
|
129
141
|
def all_instances
|
data/lib/vmc/cli/start/target.rb
CHANGED
@@ -22,7 +22,7 @@ module VMC::Start
|
|
22
22
|
if input.has?(:url)
|
23
23
|
target = sane_target_url(input[:url])
|
24
24
|
with_progress("Setting target to #{c(target, :name)}") do
|
25
|
-
|
25
|
+
CFoundry::Client.new(target) # check that it's valid before setting
|
26
26
|
set_target(target)
|
27
27
|
end
|
28
28
|
end
|
data/lib/vmc/test_support.rb
CHANGED
data/lib/vmc/version.rb
CHANGED
@@ -3,13 +3,13 @@ require 'webmock/rspec'
|
|
3
3
|
require 'ffaker'
|
4
4
|
|
5
5
|
if ENV['VMC_TEST_USER'] && ENV['VMC_TEST_PASSWORD'] && ENV['VMC_TEST_TARGET']
|
6
|
-
describe 'A new user tries to use VMC against v1 production', :ruby19 => true do
|
6
|
+
describe 'A new user tries to use VMC against v1 production', :ruby19 => true do
|
7
7
|
include ConsoleAppSpeckerMatchers
|
8
8
|
include VMC::Interactive
|
9
9
|
|
10
10
|
let(:output) { StringIO.new }
|
11
11
|
let(:out) { output.string.strip_progress_dots }
|
12
|
-
|
12
|
+
|
13
13
|
let(:target) { ENV['VMC_TEST_TARGET'] }
|
14
14
|
let(:username) { ENV['VMC_TEST_USER'] }
|
15
15
|
let(:password) { ENV['VMC_TEST_PASSWORD'] }
|
@@ -59,12 +59,16 @@ if ENV['VMC_TEST_USER'] && ENV['VMC_TEST_PASSWORD'] && ENV['VMC_TEST_TARGET']
|
|
59
59
|
expect(runner).to say "Instances> 1"
|
60
60
|
runner.send_keys ""
|
61
61
|
|
62
|
-
expect(runner).to say "1:
|
62
|
+
expect(runner).to say "1:"
|
63
63
|
expect(runner).to say "2: other"
|
64
|
-
expect(runner).to say "Framework>
|
65
|
-
runner.send_keys ""
|
64
|
+
expect(runner).to say "Framework> "
|
65
|
+
runner.send_keys "2"
|
66
|
+
|
67
|
+
expect(runner).to say ": sinatra"
|
68
|
+
expect(runner).to say "Framework> "
|
69
|
+
runner.send_keys "sinatra"
|
66
70
|
|
67
|
-
expect(runner).to say "
|
71
|
+
expect(runner).to say ": ruby"
|
68
72
|
expect(runner).to say "Runtime>"
|
69
73
|
runner.send_keys "ruby19"
|
70
74
|
|
@@ -106,4 +110,4 @@ if ENV['VMC_TEST_USER'] && ENV['VMC_TEST_PASSWORD'] && ENV['VMC_TEST_TARGET']
|
|
106
110
|
end
|
107
111
|
else
|
108
112
|
$stderr.puts 'Skipping v1 integration specs; please provide $VMC_TEST_TARGET, $VMC_TEST_USER, and $VMC_TEST_PASSWORD'
|
109
|
-
end
|
113
|
+
end
|
@@ -42,12 +42,21 @@ if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TA
|
|
42
42
|
|
43
43
|
expect(runner).to say "Authenticating... OK"
|
44
44
|
|
45
|
-
expect(runner).to say
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
45
|
+
expect(runner).to say(
|
46
|
+
"Organization>" => proc {
|
47
|
+
runner.send_keys "1"
|
48
|
+
expect(runner).to say /Switching to organization .*\.\.\. OK/
|
49
|
+
},
|
50
|
+
"Switching to organization" => proc {}
|
51
|
+
)
|
52
|
+
|
53
|
+
expect(runner).to say(
|
54
|
+
"Space>" => proc {
|
55
|
+
runner.send_keys "1"
|
56
|
+
expect(runner).to say /Switching to space .*\.\.\. OK/
|
57
|
+
},
|
58
|
+
"Switching to space" => proc {}
|
59
|
+
)
|
51
60
|
end
|
52
61
|
|
53
62
|
run("#{vmc_bin} app #{app}") do |runner|
|
@@ -62,24 +71,9 @@ if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TA
|
|
62
71
|
expect(runner).to say "Instances> 1"
|
63
72
|
runner.send_keys ""
|
64
73
|
|
65
|
-
expect(runner).to say "
|
66
|
-
expect(runner).to say "Framework>"
|
67
|
-
runner.send_keys "other"
|
68
|
-
|
69
|
-
expect(runner).to say ": buildpack"
|
70
|
-
expect(runner).to say "Framework>"
|
71
|
-
runner.send_keys "buildpack"
|
72
|
-
|
73
|
-
expect(runner).to say "Use custom startup command?> "
|
74
|
-
runner.send_keys "y"
|
75
|
-
|
76
|
-
expect(runner).to say "Startup command> "
|
74
|
+
expect(runner).to say "Custom startup command> "
|
77
75
|
runner.send_keys "bundle exec ruby main.rb -p $PORT"
|
78
76
|
|
79
|
-
expect(runner).to say ": ruby19"
|
80
|
-
expect(runner).to say "Runtime>"
|
81
|
-
runner.send_keys "ruby19"
|
82
|
-
|
83
77
|
expect(runner).to say "Memory Limit>"
|
84
78
|
runner.send_keys "64M"
|
85
79
|
|
@@ -98,6 +92,11 @@ if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TA
|
|
98
92
|
expect(runner).to say "Create services for application?> n"
|
99
93
|
runner.send_keys ""
|
100
94
|
|
95
|
+
# skip this
|
96
|
+
if runner.expect "Bind other services to application?> n", 1
|
97
|
+
runner.send_keys ""
|
98
|
+
end
|
99
|
+
|
101
100
|
expect(runner).to say "Save configuration?> n"
|
102
101
|
runner.send_keys ""
|
103
102
|
|
@@ -123,4 +122,4 @@ if ENV['VMC_V2_TEST_USER'] && ENV['VMC_V2_TEST_PASSWORD'] && ENV['VMC_V2_TEST_TA
|
|
123
122
|
end
|
124
123
|
else
|
125
124
|
$stderr.puts 'Skipping integration specs; please provide $VMC_TEST_TARGET, $VMC_TEST_USER, and $VMC_TEST_PASSWORD'
|
126
|
-
end
|
125
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
if ENV['VMC_V2_TEST_TARGET']
|
4
|
+
describe 'A new user tries to use VMC against v2 production', :ruby19 => true do
|
5
|
+
include ConsoleAppSpeckerMatchers
|
6
|
+
|
7
|
+
let(:target) { ENV['VMC_V2_TEST_TARGET'] }
|
8
|
+
|
9
|
+
before do
|
10
|
+
Interact::Progress::Dots.start!
|
11
|
+
end
|
12
|
+
|
13
|
+
after do
|
14
|
+
Interact::Progress::Dots.stop!
|
15
|
+
end
|
16
|
+
|
17
|
+
it "can switch targets, even if a target is invalid" do
|
18
|
+
run("#{vmc_bin} target invalid-target") do |runner|
|
19
|
+
expect(runner).to say "target refused"
|
20
|
+
runner.wait_for_exit
|
21
|
+
end
|
22
|
+
|
23
|
+
run("#{vmc_bin} target #{target}") do |runner|
|
24
|
+
expect(runner).to say "Setting target"
|
25
|
+
expect(runner).to say target
|
26
|
+
runner.wait_for_exit
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
else
|
31
|
+
$stderr.puts 'Skipping v2 integration specs; please provide $VMC_V2_TEST_TARGET'
|
32
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'fakefs/safe'
|
2
3
|
|
3
4
|
describe VMC::App::Create do
|
4
5
|
let(:inputs) { {} }
|
@@ -28,10 +29,12 @@ describe VMC::App::Create do
|
|
28
29
|
end
|
29
30
|
end
|
30
31
|
|
32
|
+
let(:path) { "some-path" }
|
33
|
+
|
31
34
|
let(:create) do
|
32
35
|
command = Mothership.commands[:push]
|
33
36
|
create = VMC::App::Push.new(command)
|
34
|
-
create.path =
|
37
|
+
create.path = path
|
35
38
|
create.input = Mothership::Inputs.new(command, create, inputs, given, global)
|
36
39
|
create.extend VMC::App::PushInteractions
|
37
40
|
create
|
@@ -44,8 +47,6 @@ describe VMC::App::Create do
|
|
44
47
|
{ :name => "some-name",
|
45
48
|
:instances => 1,
|
46
49
|
:plan => "p100",
|
47
|
-
:framework => framework,
|
48
|
-
:runtime => runtime,
|
49
50
|
:memory => "1G",
|
50
51
|
:command => "ruby main.rb",
|
51
52
|
:buildpack => "git://example.com"
|
@@ -57,29 +58,28 @@ describe VMC::App::Create do
|
|
57
58
|
its([:total_instances]) { should eq 1 }
|
58
59
|
its([:space]) { should eq client.current_space }
|
59
60
|
its([:production]) { should eq true }
|
60
|
-
its([:framework]) { should eq
|
61
|
+
its([:framework]) { should eq nil }
|
62
|
+
its([:runtime]) { should eq nil }
|
61
63
|
its([:command]) { should eq "ruby main.rb" }
|
62
|
-
its([:runtime]) { should eq runtime }
|
63
64
|
its([:memory]) { should eq 1024 }
|
64
65
|
its([:buildpack]) { should eq "git://example.com" }
|
65
66
|
end
|
66
67
|
|
67
68
|
context 'when certain inputs are not given' do
|
68
|
-
it '
|
69
|
+
it 'asks for the name' do
|
69
70
|
inputs.delete(:name)
|
70
71
|
mock_ask("Name") { "some-name" }
|
71
72
|
subject
|
72
73
|
end
|
73
74
|
|
74
|
-
it '
|
75
|
+
it 'asks for the total instances' do
|
75
76
|
inputs.delete(:instances)
|
76
77
|
mock_ask("Instances", anything) { 1 }
|
77
78
|
subject
|
78
79
|
end
|
79
80
|
|
80
|
-
it '
|
81
|
-
|
82
|
-
mock_ask('Framework', anything) do |_, options|
|
81
|
+
it 'does not ask for the framework' do
|
82
|
+
dont_allow_ask('Framework', anything) do |_, options|
|
83
83
|
expect(options[:choices]).to eq frameworks.sort_by(&:name)
|
84
84
|
framework
|
85
85
|
end
|
@@ -90,26 +90,21 @@ describe VMC::App::Create do
|
|
90
90
|
before { inputs.delete(:command) }
|
91
91
|
|
92
92
|
shared_examples 'an app that can have a custom start command' do
|
93
|
-
it
|
94
|
-
mock_ask("
|
95
|
-
|
96
|
-
end
|
97
|
-
|
98
|
-
context 'when the user answers "yes" to the custom start command' do
|
99
|
-
before { stub_ask("Use custom startup command?", :default => false) { true } }
|
100
|
-
|
101
|
-
it 'should ask for the startup command' do
|
102
|
-
mock_ask("Startup command") { "foo bar.com" }
|
103
|
-
subject[:command].should eq "foo bar.com"
|
93
|
+
it "asks for a start command with a default as 'none'" do
|
94
|
+
mock_ask("Custom startup command", :default => "none") do
|
95
|
+
"abcd"
|
104
96
|
end
|
97
|
+
|
98
|
+
expect(subject[:command]).to eq "abcd"
|
105
99
|
end
|
106
100
|
|
107
|
-
context
|
108
|
-
|
101
|
+
context "when the user enters 'none'" do
|
102
|
+
it "has the command as nil" do
|
103
|
+
stub_ask("Custom startup command", :default => "none") do
|
104
|
+
"none"
|
105
|
+
end
|
109
106
|
|
110
|
-
|
111
|
-
dont_allow_ask("Startup command")
|
112
|
-
subject
|
107
|
+
expect(subject[:command]).to be_nil
|
113
108
|
end
|
114
109
|
end
|
115
110
|
end
|
@@ -126,26 +121,51 @@ describe VMC::App::Create do
|
|
126
121
|
include_examples 'an app that can have a custom start command'
|
127
122
|
end
|
128
123
|
|
129
|
-
|
130
|
-
|
124
|
+
describe "getting the start command" do
|
125
|
+
before do
|
126
|
+
FakeFS.activate!
|
127
|
+
Dir.mkdir(path)
|
128
|
+
|
129
|
+
# fakefs removes fnmatch :'(
|
130
|
+
stub(create.send(:detector)).detect_framework
|
131
|
+
end
|
132
|
+
|
133
|
+
after do
|
134
|
+
FakeFS.deactivate!
|
135
|
+
FakeFS::FileSystem.clear
|
136
|
+
end
|
137
|
+
|
138
|
+
context "when there is a Procfile in the app's root" do
|
139
|
+
before do
|
140
|
+
File.open("#{path}/Procfile", "w") do |file|
|
141
|
+
file.write("this is a procfile")
|
142
|
+
end
|
143
|
+
end
|
131
144
|
|
132
|
-
|
133
|
-
|
134
|
-
|
145
|
+
it 'does not ask for a start command' do
|
146
|
+
dont_allow_ask("Startup command")
|
147
|
+
subject
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
context "when there is no Procfile in the app's root" do
|
152
|
+
it 'asks for a start command' do
|
153
|
+
mock_ask("Custom startup command", :default => "none")
|
154
|
+
subject
|
155
|
+
end
|
135
156
|
end
|
136
157
|
end
|
137
158
|
end
|
138
159
|
|
139
|
-
it '
|
140
|
-
|
141
|
-
mock_ask('Runtime', anything) do |_, options|
|
160
|
+
it 'does not ask for the runtime' do
|
161
|
+
dont_allow_ask('Runtime', anything) do |_, options|
|
142
162
|
expect(options[:choices]).to eq runtimes.sort_by(&:name)
|
143
163
|
runtime
|
144
164
|
end
|
145
165
|
subject
|
146
166
|
end
|
147
167
|
|
148
|
-
it '
|
168
|
+
it 'asks for the memory' do
|
149
169
|
inputs.delete(:memory)
|
150
170
|
|
151
171
|
memory_choices = %w(64M 128M 256M 512M 1G)
|
@@ -60,6 +60,19 @@ describe VMC::Start::Target do
|
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
|
+
describe "switching the target" do
|
64
|
+
let(:target) { "some-valid-target.com" }
|
65
|
+
subject { vmc ["target", target] }
|
66
|
+
|
67
|
+
context "when the target is not valid" do
|
68
|
+
before { WebMock.stub_request(:get, "http://#{target}/info").to_return(:body => "{}") }
|
69
|
+
|
70
|
+
it "should still be able to switch to a valid target after that" do
|
71
|
+
subject
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
63
76
|
describe "switching the space" do
|
64
77
|
let(:space_name) { spaces.last.name }
|
65
78
|
let(:tokens_yaml) { YAML.load_file(File.expand_path(tokens_file_path)) }
|
metadata
CHANGED
@@ -1,233 +1,229 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: vmc
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0.rc3
|
5
5
|
prerelease: 6
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 5
|
9
|
-
- 0
|
10
|
-
- rc
|
11
|
-
- 2
|
12
|
-
version: 0.5.0.rc2
|
13
6
|
platform: ruby
|
14
|
-
authors:
|
7
|
+
authors:
|
15
8
|
- Cloud Foundry Team
|
16
9
|
- Alex Suraci
|
17
10
|
autorequire:
|
18
11
|
bindir: bin
|
19
12
|
cert_chain: []
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
13
|
+
date: 2013-03-01 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: json_pure
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
25
18
|
none: false
|
26
|
-
requirements:
|
19
|
+
requirements:
|
27
20
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 6
|
33
|
-
version: "1.6"
|
34
|
-
prerelease: false
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.6'
|
35
23
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
version_requirements: &id002 !ruby/object:Gem::Requirement
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
26
|
none: false
|
41
|
-
requirements:
|
27
|
+
requirements:
|
42
28
|
- - ~>
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
45
|
-
|
46
|
-
- 1
|
47
|
-
- 3
|
48
|
-
version: "1.3"
|
49
|
-
prerelease: false
|
50
|
-
type: :runtime
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '1.6'
|
31
|
+
- !ruby/object:Gem::Dependency
|
51
32
|
name: multi_json
|
52
|
-
requirement:
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
version_requirements: &id003 !ruby/object:Gem::Requirement
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
55
34
|
none: false
|
56
|
-
requirements:
|
35
|
+
requirements:
|
57
36
|
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
|
60
|
-
segments:
|
61
|
-
- 0
|
62
|
-
- 5
|
63
|
-
version: "0.5"
|
64
|
-
prerelease: false
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '1.3'
|
65
39
|
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ~>
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '1.3'
|
47
|
+
- !ruby/object:Gem::Dependency
|
66
48
|
name: interact
|
67
|
-
requirement:
|
68
|
-
|
69
|
-
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.5'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0.5'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: cfoundry
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
70
66
|
none: false
|
71
|
-
requirements:
|
72
|
-
- -
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
hash: -31870828
|
75
|
-
segments:
|
76
|
-
- 0
|
77
|
-
- 5
|
78
|
-
- 1
|
79
|
-
- rc
|
80
|
-
- 5
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
81
70
|
version: 0.5.1.rc5
|
82
71
|
- - <
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
segments:
|
86
|
-
- 0
|
87
|
-
- 6
|
88
|
-
version: "0.6"
|
89
|
-
prerelease: false
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0.6'
|
90
74
|
type: :runtime
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
none: false
|
78
|
+
requirements:
|
79
|
+
- - ! '>='
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.5.1.rc5
|
82
|
+
- - <
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0.6'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: clouseau
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
95
88
|
none: false
|
96
|
-
requirements:
|
89
|
+
requirements:
|
97
90
|
- - ~>
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
- 0
|
103
|
-
version: "0.0"
|
104
|
-
prerelease: false
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0.0'
|
105
93
|
type: :runtime
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ~>
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0.0'
|
101
|
+
- !ruby/object:Gem::Dependency
|
102
|
+
name: mothership
|
103
|
+
requirement: !ruby/object:Gem::Requirement
|
110
104
|
none: false
|
111
|
-
requirements:
|
112
|
-
- -
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
hash: 9
|
115
|
-
segments:
|
116
|
-
- 0
|
117
|
-
- 5
|
118
|
-
- 1
|
105
|
+
requirements:
|
106
|
+
- - ! '>='
|
107
|
+
- !ruby/object:Gem::Version
|
119
108
|
version: 0.5.1
|
120
109
|
- - <
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
|
123
|
-
segments:
|
124
|
-
- 1
|
125
|
-
- 0
|
126
|
-
version: "1.0"
|
127
|
-
prerelease: false
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '1.0'
|
128
112
|
type: :runtime
|
129
|
-
name: mothership
|
130
|
-
requirement: *id006
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
version_requirements: &id007 !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
|
-
requirements:
|
135
|
-
- - ~>
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
hash: 7
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
- 6
|
141
|
-
version: "0.6"
|
142
113
|
prerelease: false
|
143
|
-
|
114
|
+
version_requirements: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 0.5.1
|
120
|
+
- - <
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '1.0'
|
123
|
+
- !ruby/object:Gem::Dependency
|
144
124
|
name: manifests-vmc-plugin
|
145
|
-
requirement:
|
146
|
-
- !ruby/object:Gem::Dependency
|
147
|
-
version_requirements: &id008 !ruby/object:Gem::Requirement
|
125
|
+
requirement: !ruby/object:Gem::Requirement
|
148
126
|
none: false
|
149
|
-
requirements:
|
127
|
+
requirements:
|
150
128
|
- - ~>
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
|
153
|
-
segments:
|
154
|
-
- 0
|
155
|
-
- 2
|
156
|
-
version: "0.2"
|
157
|
-
prerelease: false
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0.6'
|
158
131
|
type: :runtime
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
none: false
|
135
|
+
requirements:
|
136
|
+
- - ~>
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0.6'
|
139
|
+
- !ruby/object:Gem::Dependency
|
159
140
|
name: tunnel-vmc-plugin
|
160
|
-
requirement:
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
|
-
version_requirements: &id009 !ruby/object:Gem::Requirement
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
163
142
|
none: false
|
164
|
-
requirements:
|
143
|
+
requirements:
|
165
144
|
- - ~>
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
|
168
|
-
|
169
|
-
- 0
|
170
|
-
- 9
|
171
|
-
version: "0.9"
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0.2'
|
147
|
+
type: :runtime
|
172
148
|
prerelease: false
|
173
|
-
|
149
|
+
version_requirements: !ruby/object:Gem::Requirement
|
150
|
+
none: false
|
151
|
+
requirements:
|
152
|
+
- - ~>
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0.2'
|
155
|
+
- !ruby/object:Gem::Dependency
|
174
156
|
name: rake
|
175
|
-
requirement:
|
176
|
-
- !ruby/object:Gem::Dependency
|
177
|
-
version_requirements: &id010 !ruby/object:Gem::Requirement
|
157
|
+
requirement: !ruby/object:Gem::Requirement
|
178
158
|
none: false
|
179
|
-
requirements:
|
159
|
+
requirements:
|
180
160
|
- - ~>
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
|
183
|
-
segments:
|
184
|
-
- 2
|
185
|
-
- 11
|
186
|
-
version: "2.11"
|
187
|
-
prerelease: false
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0.9'
|
188
163
|
type: :development
|
164
|
+
prerelease: false
|
165
|
+
version_requirements: !ruby/object:Gem::Requirement
|
166
|
+
none: false
|
167
|
+
requirements:
|
168
|
+
- - ~>
|
169
|
+
- !ruby/object:Gem::Version
|
170
|
+
version: '0.9'
|
171
|
+
- !ruby/object:Gem::Dependency
|
189
172
|
name: rspec
|
190
|
-
requirement:
|
191
|
-
- !ruby/object:Gem::Dependency
|
192
|
-
version_requirements: &id011 !ruby/object:Gem::Requirement
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
193
174
|
none: false
|
194
|
-
requirements:
|
175
|
+
requirements:
|
195
176
|
- - ~>
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
|
198
|
-
segments:
|
199
|
-
- 1
|
200
|
-
- 9
|
201
|
-
version: "1.9"
|
202
|
-
prerelease: false
|
177
|
+
- !ruby/object:Gem::Version
|
178
|
+
version: '2.11'
|
203
179
|
type: :development
|
180
|
+
prerelease: false
|
181
|
+
version_requirements: !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ~>
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '2.11'
|
187
|
+
- !ruby/object:Gem::Dependency
|
204
188
|
name: webmock
|
205
|
-
requirement:
|
206
|
-
- !ruby/object:Gem::Dependency
|
207
|
-
version_requirements: &id012 !ruby/object:Gem::Requirement
|
189
|
+
requirement: !ruby/object:Gem::Requirement
|
208
190
|
none: false
|
209
|
-
requirements:
|
191
|
+
requirements:
|
210
192
|
- - ~>
|
211
|
-
- !ruby/object:Gem::Version
|
212
|
-
|
213
|
-
segments:
|
214
|
-
- 1
|
215
|
-
- 0
|
216
|
-
version: "1.0"
|
217
|
-
prerelease: false
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '1.9'
|
218
195
|
type: :development
|
196
|
+
prerelease: false
|
197
|
+
version_requirements: !ruby/object:Gem::Requirement
|
198
|
+
none: false
|
199
|
+
requirements:
|
200
|
+
- - ~>
|
201
|
+
- !ruby/object:Gem::Version
|
202
|
+
version: '1.9'
|
203
|
+
- !ruby/object:Gem::Dependency
|
219
204
|
name: rr
|
220
|
-
requirement:
|
205
|
+
requirement: !ruby/object:Gem::Requirement
|
206
|
+
none: false
|
207
|
+
requirements:
|
208
|
+
- - ~>
|
209
|
+
- !ruby/object:Gem::Version
|
210
|
+
version: '1.0'
|
211
|
+
type: :development
|
212
|
+
prerelease: false
|
213
|
+
version_requirements: !ruby/object:Gem::Requirement
|
214
|
+
none: false
|
215
|
+
requirements:
|
216
|
+
- - ~>
|
217
|
+
- !ruby/object:Gem::Version
|
218
|
+
version: '1.0'
|
221
219
|
description:
|
222
|
-
email:
|
220
|
+
email:
|
223
221
|
- vcap-dev@googlegroups.com
|
224
|
-
executables:
|
222
|
+
executables:
|
225
223
|
- vmc
|
226
224
|
extensions: []
|
227
|
-
|
228
225
|
extra_rdoc_files: []
|
229
|
-
|
230
|
-
files:
|
226
|
+
files:
|
231
227
|
- LICENSE
|
232
228
|
- Rakefile
|
233
229
|
- lib/vmc/cli/app/app.rb
|
@@ -306,6 +302,7 @@ files:
|
|
306
302
|
- lib/vmc/test_support.rb
|
307
303
|
- lib/vmc/version.rb
|
308
304
|
- lib/vmc.rb
|
305
|
+
- spec/assets/hello-sinatra/config.ru
|
309
306
|
- spec/assets/hello-sinatra/Gemfile
|
310
307
|
- spec/assets/hello-sinatra/Gemfile.lock
|
311
308
|
- spec/assets/hello-sinatra/main.rb
|
@@ -316,6 +313,7 @@ files:
|
|
316
313
|
- spec/features/v1/new_user_flow_spec.rb
|
317
314
|
- spec/features/v2/account_lifecycle_spec.rb
|
318
315
|
- spec/features/v2/push_flow_spec.rb
|
316
|
+
- spec/features/v2/switching_targets_spec.rb
|
319
317
|
- spec/spec_helper.rb
|
320
318
|
- spec/support/command_helper.rb
|
321
319
|
- spec/support/config_helper.rb
|
@@ -363,40 +361,33 @@ files:
|
|
363
361
|
- bin/vmc
|
364
362
|
homepage: http://github.com/cloudfoundry/vmc
|
365
363
|
licenses: []
|
366
|
-
|
367
364
|
post_install_message:
|
368
365
|
rdoc_options: []
|
369
|
-
|
370
|
-
require_paths:
|
366
|
+
require_paths:
|
371
367
|
- lib
|
372
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
368
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
373
369
|
none: false
|
374
|
-
requirements:
|
375
|
-
- -
|
376
|
-
- !ruby/object:Gem::Version
|
377
|
-
|
378
|
-
segments:
|
370
|
+
requirements:
|
371
|
+
- - ! '>='
|
372
|
+
- !ruby/object:Gem::Version
|
373
|
+
version: '0'
|
374
|
+
segments:
|
379
375
|
- 0
|
380
|
-
|
381
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
376
|
+
hash: 167290264189019545
|
377
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
382
378
|
none: false
|
383
|
-
requirements:
|
384
|
-
- -
|
385
|
-
- !ruby/object:Gem::Version
|
386
|
-
hash: 25
|
387
|
-
segments:
|
388
|
-
- 1
|
389
|
-
- 3
|
390
|
-
- 1
|
379
|
+
requirements:
|
380
|
+
- - ! '>'
|
381
|
+
- !ruby/object:Gem::Version
|
391
382
|
version: 1.3.1
|
392
383
|
requirements: []
|
393
|
-
|
394
384
|
rubyforge_project: vmc
|
395
385
|
rubygems_version: 1.8.24
|
396
386
|
signing_key:
|
397
387
|
specification_version: 3
|
398
388
|
summary: Friendly command-line interface for Cloud Foundry.
|
399
|
-
test_files:
|
389
|
+
test_files:
|
390
|
+
- spec/assets/hello-sinatra/config.ru
|
400
391
|
- spec/assets/hello-sinatra/Gemfile
|
401
392
|
- spec/assets/hello-sinatra/Gemfile.lock
|
402
393
|
- spec/assets/hello-sinatra/main.rb
|
@@ -407,6 +398,7 @@ test_files:
|
|
407
398
|
- spec/features/v1/new_user_flow_spec.rb
|
408
399
|
- spec/features/v2/account_lifecycle_spec.rb
|
409
400
|
- spec/features/v2/push_flow_spec.rb
|
401
|
+
- spec/features/v2/switching_targets_spec.rb
|
410
402
|
- spec/spec_helper.rb
|
411
403
|
- spec/support/command_helper.rb
|
412
404
|
- spec/support/config_helper.rb
|