manifests-vmc-plugin 0.4.10 → 0.4.11
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/manifests-vmc-plugin.rb +34 -27
- data/lib/manifests-vmc-plugin/plugin.rb +30 -24
- data/lib/manifests-vmc-plugin/version.rb +1 -1
- metadata +4 -4
data/lib/manifests-vmc-plugin.rb
CHANGED
@@ -78,8 +78,7 @@ module VMCManifests
|
|
78
78
|
|
79
79
|
# merge the manifest at `path' into the `child'
|
80
80
|
def merge_parent(child, path)
|
81
|
-
|
82
|
-
merge_manifest(child, build_manifest(file))
|
81
|
+
merge_manifest(child, build_manifest(from_manifest(path)))
|
83
82
|
end
|
84
83
|
|
85
84
|
# deep hash merge
|
@@ -221,11 +220,10 @@ module VMCManifests
|
|
221
220
|
return unless manifest
|
222
221
|
|
223
222
|
if apps = manifest["applications"]
|
224
|
-
|
225
|
-
full_path = File.expand_path(find_path, mandir)
|
223
|
+
full_path = from_manifest(find_path)
|
226
224
|
|
227
225
|
manifest["applications"].find do |path, info|
|
228
|
-
|
226
|
+
from_manifest(path) == full_path
|
229
227
|
end
|
230
228
|
elsif find_path == "."
|
231
229
|
[".", toplevel_attributes]
|
@@ -236,8 +234,7 @@ module VMCManifests
|
|
236
234
|
path, info = app_by_name(path_or_name) || app_by_path(path_or_name)
|
237
235
|
return unless info
|
238
236
|
|
239
|
-
|
240
|
-
data = { :path => abspath }
|
237
|
+
data = { :path => from_manifest(path) }
|
241
238
|
|
242
239
|
toplevel_attributes.merge(info).each do |k, v|
|
243
240
|
name = k.to_sym
|
@@ -275,6 +272,15 @@ module VMCManifests
|
|
275
272
|
end
|
276
273
|
end
|
277
274
|
|
275
|
+
def all_apps(input = nil)
|
276
|
+
apps = []
|
277
|
+
|
278
|
+
each_app(input) do |app|
|
279
|
+
apps << app
|
280
|
+
end
|
281
|
+
|
282
|
+
apps
|
283
|
+
end
|
278
284
|
|
279
285
|
def no_apps
|
280
286
|
fail "No applications or manifest to operate on."
|
@@ -295,14 +301,18 @@ module VMCManifests
|
|
295
301
|
[]
|
296
302
|
end
|
297
303
|
|
304
|
+
input = input.without(:app, :apps)
|
305
|
+
in_manifest = []
|
306
|
+
|
298
307
|
if names_or_paths.empty?
|
299
|
-
|
300
|
-
|
308
|
+
if app = app_info(Dir.pwd, input)
|
309
|
+
in_manifest << app
|
310
|
+
else
|
311
|
+
each_app(input, &blk)
|
312
|
+
return []
|
313
|
+
end
|
301
314
|
end
|
302
315
|
|
303
|
-
input = input.without(:app, :apps)
|
304
|
-
|
305
|
-
in_manifest = []
|
306
316
|
external = []
|
307
317
|
names_or_paths.each do |x|
|
308
318
|
if x.is_a?(String)
|
@@ -330,27 +340,29 @@ module VMCManifests
|
|
330
340
|
|
331
341
|
private
|
332
342
|
|
343
|
+
# expand a path relative to the manifest file's directory
|
344
|
+
def from_manifest(path)
|
345
|
+
File.expand_path(path, File.dirname(manifest_file))
|
346
|
+
end
|
347
|
+
|
333
348
|
# sort applications in dependency order
|
334
349
|
# e.g. if A depends on B, B will be listed before A
|
335
350
|
def ordered_by_deps(apps, abspaths = nil, processed = Set[])
|
336
|
-
mandir = File.dirname(manifest_file)
|
337
|
-
|
338
351
|
unless abspaths
|
339
352
|
abspaths = {}
|
340
353
|
apps.each do |p, i|
|
341
|
-
|
342
|
-
abspaths[ep] = i
|
354
|
+
abspaths[from_manifest(p)] = i
|
343
355
|
end
|
344
356
|
end
|
345
357
|
|
346
358
|
ordered = []
|
347
359
|
apps.each do |path, info|
|
348
|
-
epath =
|
360
|
+
epath = from_manifest(path)
|
349
361
|
|
350
362
|
if deps = info["depends-on"]
|
351
363
|
dep_apps = {}
|
352
364
|
deps.each do |dep|
|
353
|
-
edep =
|
365
|
+
edep = from_manifest(dep)
|
354
366
|
|
355
367
|
raise "Circular dependency detected." if processed.include? edep
|
356
368
|
|
@@ -381,7 +393,8 @@ module VMCManifests
|
|
381
393
|
"runtime" => app.runtime.name,
|
382
394
|
"memory" => human_size(app.memory * 1024 * 1024, 0),
|
383
395
|
"instances" => app.total_instances,
|
384
|
-
"url" => app.url && app.url.sub(target_base, '${target-base}')
|
396
|
+
"url" => app.url && app.url.sub(target_base, '${target-base}'),
|
397
|
+
"path" => input[:path]
|
385
398
|
}
|
386
399
|
|
387
400
|
unless service_instances.empty?
|
@@ -413,17 +426,10 @@ module VMCManifests
|
|
413
426
|
end
|
414
427
|
|
415
428
|
if ask("Save configuration?", :default => false)
|
416
|
-
if input[:path] =~ /\.[[:alnum:]]+$/
|
417
|
-
root = ask("Application root", :default => ".")
|
418
|
-
meta["path"] = input[:path]
|
419
|
-
else
|
420
|
-
root = input[:path]
|
421
|
-
end
|
422
|
-
|
423
429
|
with_progress("Saving to #{c("manifest.yml", :name)}") do
|
424
430
|
File.open("manifest.yml", "w") do |io|
|
425
431
|
YAML.dump(
|
426
|
-
{ "applications" => {
|
432
|
+
{ "applications" => { "." => meta } },
|
427
433
|
io)
|
428
434
|
end
|
429
435
|
end
|
@@ -519,4 +525,5 @@ module VMCManifests
|
|
519
525
|
|
520
526
|
format("%.#{precision}fB", num)
|
521
527
|
end
|
528
|
+
|
522
529
|
end
|
@@ -87,7 +87,7 @@ class Manifests < VMC::CLI
|
|
87
87
|
:desc => "Reset to values in the manifest"
|
88
88
|
|
89
89
|
around(:push) do |push, input|
|
90
|
-
|
90
|
+
single =
|
91
91
|
if input.given?(:name)
|
92
92
|
path = File.expand_path(input[:name])
|
93
93
|
find_by = File.exists?(path) ? path : input[:name]
|
@@ -95,31 +95,11 @@ class Manifests < VMC::CLI
|
|
95
95
|
app_info(find_by, input.without(:name))
|
96
96
|
end
|
97
97
|
|
98
|
-
|
98
|
+
single ||= app_info(Dir.pwd, input)
|
99
99
|
|
100
|
-
|
101
|
-
with_filters(
|
102
|
-
:push => {
|
103
|
-
:create_app => proc { |a|
|
104
|
-
setup_env(a, app)
|
105
|
-
a
|
106
|
-
},
|
107
|
-
:push_app => proc { |a|
|
108
|
-
setup_services(a, app)
|
109
|
-
a
|
110
|
-
}
|
111
|
-
}) do
|
112
|
-
# only set inputs if creating app or updating with --reset
|
113
|
-
if input[:reset] || !client.app_by_name(app[:name])
|
114
|
-
input = input.merge_given(app)
|
115
|
-
end
|
100
|
+
apps = single ? [single] : all_apps(input)
|
116
101
|
|
117
|
-
|
118
|
-
:name => app[:name],
|
119
|
-
:bind_services => false,
|
120
|
-
:create_services => false))
|
121
|
-
end
|
122
|
-
else
|
102
|
+
if apps.empty?
|
123
103
|
with_filters(
|
124
104
|
:push => {
|
125
105
|
:push_app =>
|
@@ -127,6 +107,32 @@ class Manifests < VMC::CLI
|
|
127
107
|
}) do
|
128
108
|
push.call
|
129
109
|
end
|
110
|
+
else
|
111
|
+
apps.each do |app|
|
112
|
+
with_filters(
|
113
|
+
:push => {
|
114
|
+
:create_app => proc { |a|
|
115
|
+
setup_env(a, app)
|
116
|
+
a
|
117
|
+
},
|
118
|
+
:push_app => proc { |a|
|
119
|
+
setup_services(a, app)
|
120
|
+
a
|
121
|
+
}
|
122
|
+
}) do
|
123
|
+
# only set inputs if creating app or updating with --reset
|
124
|
+
if input[:reset] || !client.app_by_name(app[:name])
|
125
|
+
app_input = input.merge_given(app)
|
126
|
+
else
|
127
|
+
app_input = input.merge(:path => from_manifest(app[:path]))
|
128
|
+
end
|
129
|
+
|
130
|
+
push.call(app_input.merge(
|
131
|
+
:name => app[:name],
|
132
|
+
:bind_services => false,
|
133
|
+
:create_services => false))
|
134
|
+
end
|
135
|
+
end
|
130
136
|
end
|
131
137
|
end
|
132
138
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manifests-vmc-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 11
|
10
|
+
version: 0.4.11
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Suraci
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-11-02 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: cfoundry
|