6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/simp/metadata/commands/update.rb', line 6
def run(argv, engine = nil)
options = defaults(argv) do |opts,options|
opts.banner = 'Usage: simp-metadata update <component> <setting> <value>'
end
engine, root = get_engine(engine, options)
begin
component = argv[0]
setting = argv[1]
value = argv[2]
if options['release'].nil?
object = engine.components[component]
else
object = engine.releases[options['release']].components[component]
end
unless object.methods.include?(setting.to_sym)
Simp::Metadata.critical("#{setting} is not a valid setting")
exit 7
end
begin
object.send("#{setting}=".to_sym, value)
rescue NoMethodError => ex
Simp::Metadata.critical("#{setting} is a read-only setting")
exit 6
end
engine.save((['simp-metadata', 'update'] + argv).join(' ')) if root
rescue RuntimeError => e
Simp::Metadata.critical(e.message)
exit 5
end
end
|