simp-metadata 0.4.4 → 0.5.2
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.
- checksums.yaml +5 -5
- data/README.md +494 -0
- data/Rakefile +19 -22
- data/exe/simp-install +1 -1
- data/exe/simp-media +1 -1
- data/exe/simp-metadata +1 -1
- data/lib/simp/install/command.rb +34 -35
- data/lib/simp/media.rb +0 -1
- data/lib/simp/media/command.rb +34 -35
- data/lib/simp/media/engine.rb +29 -35
- data/lib/simp/media/type.rb +1 -2
- data/lib/simp/media/type/base.rb +12 -4
- data/lib/simp/media/type/control-repo.rb +96 -107
- data/lib/simp/media/type/internet.rb +8 -8
- data/lib/simp/media/type/iso.rb +0 -1
- data/lib/simp/media/type/local.rb +18 -19
- data/lib/simp/media/type/tar.rb +37 -37
- data/lib/simp/metadata.rb +240 -258
- data/lib/simp/metadata/bootstrap_source.rb +93 -89
- data/lib/simp/metadata/buildinfo.rb +23 -23
- data/lib/simp/metadata/command.rb +60 -58
- data/lib/simp/metadata/commands.rb +1 -1
- data/lib/simp/metadata/commands/base.rb +28 -25
- data/lib/simp/metadata/commands/clone.rb +3 -5
- data/lib/simp/metadata/commands/component.rb +128 -90
- data/lib/simp/metadata/commands/delete.rb +4 -5
- data/lib/simp/metadata/commands/pry.rb +1 -3
- data/lib/simp/metadata/commands/release.rb +22 -23
- data/lib/simp/metadata/commands/releases.rb +1 -3
- data/lib/simp/metadata/commands/save.rb +10 -13
- data/lib/simp/metadata/commands/script.rb +11 -14
- data/lib/simp/metadata/commands/search.rb +15 -20
- data/lib/simp/metadata/commands/set-write-url.rb +1 -3
- data/lib/simp/metadata/commands/set-write.rb +1 -3
- data/lib/simp/metadata/commands/update.rb +9 -10
- data/lib/simp/metadata/component.rb +310 -154
- data/lib/simp/metadata/components.rb +15 -16
- data/lib/simp/metadata/engine.rb +31 -39
- data/lib/simp/metadata/fake_uri.rb +2 -0
- data/lib/simp/metadata/location.rb +99 -105
- data/lib/simp/metadata/locations.rb +19 -21
- data/lib/simp/metadata/release.rb +30 -39
- data/lib/simp/metadata/releases.rb +14 -15
- data/lib/simp/metadata/source.rb +69 -79
- data/lib/simp/metadata/version.rb +9 -0
- data/spec/simp/media/command_spec.rb +4 -5
- data/spec/simp/media/engine_spec.rb +14 -14
- data/spec/simp/media/type/control_repo_spec.rb +10 -12
- data/spec/simp/media/type/internet_spec.rb +11 -11
- data/spec/simp/media/type/iso_spec.rb +6 -7
- data/spec/simp/media/type/local_spec.rb +6 -8
- data/spec/simp/media/type/tar_spec.rb +6 -8
- data/spec/simp/metadata/buildinfo_spec.rb +19 -17
- data/spec/simp/metadata/commands/clone_spec.rb +4 -3
- data/spec/simp/metadata/component_spec.rb +43 -54
- data/spec/simp/metadata/engine_spec.rb +38 -41
- data/spec/simp/metadata/release_spec.rb +72 -79
- data/spec/simp/metadata/source_spec.rb +8 -6
- data/spec/simp/metadata_spec.rb +95 -98
- data/spec/spec_helper.rb +33 -21
- metadata +5 -3
@@ -4,17 +4,15 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Clone < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
7
|
options = defaults(argv) do |opts|
|
9
|
-
opts.banner =
|
8
|
+
opts.banner = 'Usage: simp-metadata clone <source_release> <target_release>'
|
10
9
|
end
|
10
|
+
|
11
11
|
engine, root = get_engine(engine, options)
|
12
12
|
|
13
13
|
begin
|
14
14
|
engine.releases.create(argv[1], argv[0])
|
15
|
-
|
16
|
-
engine.save((["simp-metadata", "clone"] + argv).join(" "))
|
17
|
-
end
|
15
|
+
engine.save((['simp-metadata', 'clone'] + argv).join(' ')) if root
|
18
16
|
rescue RuntimeError => e
|
19
17
|
Simp::Metadata.critical(e.message)
|
20
18
|
exit 5
|
@@ -3,105 +3,143 @@ module Simp
|
|
3
3
|
module Metadata
|
4
4
|
module Commands
|
5
5
|
class Component < Simp::Metadata::Commands::Base
|
6
|
-
|
7
6
|
def run(argv, engine = nil)
|
7
|
+
subcommand = argv[0]
|
8
|
+
|
9
|
+
case subcommand
|
10
|
+
when '--help', '-h'
|
11
|
+
options = defaults(argv) do |opts|
|
12
|
+
opts.banner = 'Usage: simp-metadata component [ view | diff | download | build | update | create ]'
|
13
|
+
end
|
14
|
+
|
15
|
+
when 'create'
|
16
|
+
options = defaults(argv) do |opts|
|
17
|
+
opts.banner = 'Usage: simp-metadata component create <component_name> name=<value>'
|
18
|
+
end
|
19
|
+
engine, root = get_engine(engine, options)
|
20
|
+
component = argv[1]
|
21
|
+
argv.shift
|
22
|
+
data = { 'locations' => [{ 'primary' => true }] }
|
23
|
+
argv.each do |argument|
|
24
|
+
splitted = argument.split('=')
|
25
|
+
name = splitted[0]
|
26
|
+
value = splitted[1]
|
27
|
+
case name
|
28
|
+
when 'authoritative'
|
29
|
+
data['authoritative'] = value.to_s == 'true'
|
30
|
+
when 'format'
|
31
|
+
data['format'] = value
|
32
|
+
when 'component-type'
|
33
|
+
data['component-type'] = value
|
34
|
+
when 'primary_url'
|
35
|
+
data['locations'].first['url'] = value
|
36
|
+
when 'primary_url_type'
|
37
|
+
data['locations'].first['type'] = value
|
38
|
+
end
|
39
|
+
end
|
40
|
+
engine.components.create(component, data)
|
8
41
|
|
42
|
+
when 'update'
|
43
|
+
options = defaults(argv) do |opts|
|
44
|
+
opts.banner = 'Usage: simp-metadata component update <component> <setting> <value>'
|
45
|
+
end
|
46
|
+
engine, root = get_engine(engine, options)
|
47
|
+
component = argv[1]
|
48
|
+
setting = argv[2]
|
49
|
+
value = argv[3]
|
50
|
+
object = engine.components[component]
|
51
|
+
unless object.methods.include?(setting.to_sym)
|
52
|
+
Simp::Metadata.critical("#{setting} is not a valid setting")
|
53
|
+
exit 7
|
54
|
+
end
|
55
|
+
begin
|
56
|
+
object.send("#{setting}=".to_sym, value)
|
57
|
+
rescue NoMethodError => ex
|
58
|
+
Simp::Metadata.critical("#{setting} is a read-only setting")
|
59
|
+
exit 6
|
60
|
+
end
|
9
61
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
case name
|
30
|
-
when "authoritative"
|
31
|
-
data["authoritiative"] = value.to_s == "true"
|
32
|
-
when "format"
|
33
|
-
data["format"] = value
|
34
|
-
when "component-type"
|
35
|
-
data["component-type"] = value
|
36
|
-
when "primary_url"
|
37
|
-
data["locations"].first["url"] = value
|
38
|
-
when "primary_url_type"
|
39
|
-
data["locations"].first["type"] = value
|
40
|
-
end
|
41
|
-
end
|
42
|
-
engine.components.create(component, data)
|
43
|
-
when "update"
|
44
|
-
options = defaults(argv) do |opts|
|
45
|
-
opts.banner = "Usage: simp-metadata component update <component> <setting> <value>"
|
46
|
-
end
|
47
|
-
engine, root = get_engine(engine, options)
|
48
|
-
component = argv[1]
|
49
|
-
setting = argv[2]
|
50
|
-
value = argv[3]
|
51
|
-
object = engine.components[component]
|
52
|
-
unless (object.methods.include?(setting.to_sym))
|
53
|
-
Simp::Metadata.critical("#{setting} is not a valid setting")
|
54
|
-
exit 7
|
55
|
-
end
|
56
|
-
begin
|
57
|
-
object.send("#{setting}=".to_sym, value)
|
58
|
-
rescue NoMethodError => ex
|
59
|
-
Simp::Metadata.critical("#{setting} is a read-only setting")
|
60
|
-
exit 6
|
61
|
-
end
|
62
|
+
when 'view'
|
63
|
+
options = defaults(argv) do |opts|
|
64
|
+
opts.banner = 'Usage: simp-metadata component view <component> [attribute]'
|
65
|
+
end
|
66
|
+
engine, root = get_engine(engine, options)
|
67
|
+
component = argv[1]
|
68
|
+
attribute = argv[2]
|
69
|
+
if engine.components.key?(component)
|
70
|
+
if options['release'].nil?
|
71
|
+
comp = engine.components[component]
|
72
|
+
else
|
73
|
+
comp = engine.releases[options['release']].components[component]
|
74
|
+
end
|
75
|
+
view = comp.view(attribute)
|
76
|
+
puts view.to_yaml
|
77
|
+
else
|
78
|
+
Simp::Metadata.critical("Unable to find component named #{component}")
|
79
|
+
exit 5
|
80
|
+
end
|
62
81
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
view = comp.view(attribute)
|
77
|
-
puts view.to_yaml
|
78
|
-
else
|
79
|
-
Simp::Metadata.critical("Unable to find component named #{component}")
|
80
|
-
exit 5
|
81
|
-
end
|
82
|
+
when 'diff'
|
83
|
+
options = defaults(argv) do |opts|
|
84
|
+
opts.banner = 'Usage: simp-metadata component diff <release1> <release2> <component> [attribute]'
|
85
|
+
end
|
86
|
+
engine, root = get_engine(engine, options)
|
87
|
+
release1 = argv[1]
|
88
|
+
release2 = argv[2]
|
89
|
+
component = argv[3]
|
90
|
+
attribute = argv[4]
|
91
|
+
component1 = engine.releases[release1].components[component]
|
92
|
+
component2 = engine.releases[release2].components[component]
|
93
|
+
diff = component1.diff(component2, attribute)
|
94
|
+
puts diff.to_yaml
|
82
95
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
+
when 'download'
|
97
|
+
options = defaults(argv) do |opts|
|
98
|
+
opts.banner = 'Usage: simp-metadata component download -v <version> <component> [destination] [source]'
|
99
|
+
end
|
100
|
+
engine, root = get_engine(engine, options)
|
101
|
+
component = argv[1]
|
102
|
+
destination = argv[2]
|
103
|
+
source = argv[3]
|
104
|
+
if engine.components.key?(component)
|
105
|
+
if options['release'].nil?
|
106
|
+
comp = engine.components[component]
|
107
|
+
else
|
108
|
+
comp = engine.releases[options['release']].components[component]
|
109
|
+
end
|
110
|
+
comp.download(destination, source)
|
111
|
+
else
|
112
|
+
Simp::Metadata.critical('Unable to find component to download')
|
113
|
+
exit 5
|
96
114
|
end
|
97
115
|
|
98
|
-
|
99
|
-
|
116
|
+
when 'build'
|
117
|
+
options = defaults(argv) do |opts|
|
118
|
+
opts.banner = 'Usage: simp-metadata component build <component> [destination]'
|
119
|
+
end
|
120
|
+
engine, root = get_engine(engine, options)
|
121
|
+
component = argv[1]
|
122
|
+
destination = argv[2]
|
123
|
+
if engine.components.key?(component)
|
124
|
+
if options['release'].nil?
|
125
|
+
comp = engine.components[component]
|
126
|
+
else
|
127
|
+
comp = engine.releases[options['release']].components[component]
|
128
|
+
end
|
129
|
+
comp.build(destination)
|
130
|
+
else
|
131
|
+
Simp::Metadata.critical('Unable to build component')
|
132
|
+
exit 5
|
100
133
|
end
|
101
|
-
|
102
|
-
|
103
|
-
|
134
|
+
|
135
|
+
else
|
136
|
+
abort(Simp::Metadata.critical("Unrecognized subcommand '#{subcommand}}'.")[0])
|
104
137
|
end
|
138
|
+
|
139
|
+
engine.save((['simp-metadata', 'component'] + argv).join(' ')) if root
|
140
|
+
rescue RuntimeError => e
|
141
|
+
Simp::Metadata.critical(e.message)
|
142
|
+
exit 5
|
105
143
|
end
|
106
144
|
end
|
107
145
|
end
|
@@ -4,16 +4,15 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Delete < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
|
-
|
9
|
-
opts.banner = "Usage: simp-metadata delete <component_name>"
|
7
|
+
options = defaults(argv) do |opts|
|
8
|
+
opts.banner = 'Usage: simp-metadata delete <component_name>'
|
10
9
|
end
|
11
10
|
|
12
11
|
engine, root = get_engine(engine, options)
|
13
12
|
begin
|
14
13
|
engine.releases.delete(argv[0])
|
15
|
-
if
|
16
|
-
engine.save(([
|
14
|
+
if root == true
|
15
|
+
engine.save((['simp-metadata', 'delete'] + argv).join(' '))
|
17
16
|
end
|
18
17
|
rescue RuntimeError => e
|
19
18
|
Simp::Metadata.critical(e.message)
|
@@ -4,14 +4,12 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Pry < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
7
|
options = defaults(argv) do |opts|
|
9
|
-
opts.banner =
|
8
|
+
opts.banner = 'Usage: simp-metadata pry'
|
10
9
|
end
|
11
10
|
|
12
11
|
engine, root = get_engine(engine, options)
|
13
12
|
require 'pry'
|
14
|
-
binding.pry
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -4,38 +4,37 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Release < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
7
|
options = defaults(argv) do |opts|
|
9
|
-
opts.banner =
|
10
|
-
opts.banner =
|
8
|
+
opts.banner = 'Usage: simp-metadata release <release_name> [components]'
|
9
|
+
opts.banner = ' simp-metadata release diff <release1> <release2>'
|
11
10
|
end
|
12
|
-
|
13
|
-
|
14
11
|
engine, root = get_engine(engine, options)
|
15
12
|
begin
|
16
13
|
section = argv[0]
|
14
|
+
|
17
15
|
case section
|
18
|
-
|
19
|
-
|
16
|
+
when 'components'
|
17
|
+
puts engine.releases[options['release']].components.keys.join("\n")
|
20
18
|
|
21
|
-
|
22
|
-
|
23
|
-
|
19
|
+
when 'puppetfile'
|
20
|
+
type = argv[1]
|
21
|
+
puts engine.releases[options['release']].puppetfile('type' => type)
|
24
22
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
23
|
+
when 'diff'
|
24
|
+
release1 = argv[1]
|
25
|
+
release2 = argv[2]
|
26
|
+
attribute = argv[3]
|
27
|
+
release1 = engine.releases[release1]
|
28
|
+
release2 = engine.releases[release2]
|
29
|
+
diff = release1.diff(release2, attribute)
|
30
|
+
puts diff.to_yaml
|
31
|
+
else
|
32
|
+
puts 'components:'
|
33
|
+
engine.releases[options['release']].components.keys.each do |line|
|
34
|
+
puts " #{line}"
|
35
|
+
end
|
38
36
|
end
|
37
|
+
|
39
38
|
rescue RuntimeError => e
|
40
39
|
Simp::Metadata.critical(e.message)
|
41
40
|
exit 5
|
@@ -4,12 +4,10 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Releases < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
7
|
options = defaults(argv) do |opts|
|
9
|
-
opts.banner =
|
8
|
+
opts.banner = 'Usage: simp-metadata releases'
|
10
9
|
end
|
11
10
|
|
12
|
-
|
13
11
|
engine, root = get_engine(engine, options)
|
14
12
|
begin
|
15
13
|
puts engine.releases.keys
|
@@ -4,27 +4,24 @@ module Simp
|
|
4
4
|
module Commands
|
5
5
|
class Save < Simp::Metadata::Commands::Base
|
6
6
|
def run(argv, engine = nil)
|
7
|
-
|
8
7
|
options = defaults(argv) do |opts|
|
9
|
-
opts.banner =
|
8
|
+
opts.banner = 'Usage: simp-metadata save [options] [message]'
|
10
9
|
end
|
11
10
|
|
12
|
-
|
13
11
|
engine, root = get_engine(engine, options)
|
14
|
-
if
|
15
|
-
|
12
|
+
short = if argv.empty?
|
13
|
+
'Auto-saving using simp-metadata'
|
14
|
+
else
|
15
|
+
argv.join(' ')
|
16
|
+
end
|
17
|
+
|
18
|
+
if $commandqueue.nil?
|
19
|
+
engine.save(short)
|
16
20
|
else
|
17
|
-
short = argv.join(" ")
|
18
|
-
end
|
19
|
-
if ($commandqueue != nil)
|
20
21
|
message = []
|
21
|
-
|
22
|
-
message << $commandqueue.pop
|
23
|
-
end
|
22
|
+
message << $commandqueue.pop until $commandqueue.empty?
|
24
23
|
puts message
|
25
24
|
engine.save("#{short}\n\nsimp-metadata log:\n #{message.join("\n ")}")
|
26
|
-
else
|
27
|
-
engine.save(short)
|
28
25
|
end
|
29
26
|
end
|
30
27
|
end
|
@@ -6,30 +6,27 @@ module Simp
|
|
6
6
|
module Commands
|
7
7
|
class Script < Simp::Metadata::Commands::Base
|
8
8
|
def run(argv, engine = nil)
|
9
|
-
|
10
9
|
options = defaults(argv) do |opts|
|
11
|
-
opts.banner =
|
10
|
+
opts.banner = 'Usage: simp-metadata script [options] <filename>'
|
12
11
|
end
|
13
12
|
|
14
|
-
$commandqueue = Queue.new
|
13
|
+
$commandqueue = Queue.new
|
15
14
|
|
16
15
|
engine, root = get_engine(engine, options)
|
17
|
-
|
18
|
-
Simp::Metadata.critical(
|
16
|
+
if argv[0].nil?
|
17
|
+
Simp::Metadata.critical('filename must be specified')
|
19
18
|
exit 3
|
20
19
|
end
|
21
20
|
data = File.read(argv[0])
|
22
21
|
lines = data.split("\n")
|
23
22
|
lines.each do |line|
|
24
|
-
temp_argv = line.split(
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|
23
|
+
temp_argv = line.split(' ')
|
24
|
+
next if temp_argv.empty?
|
25
|
+
next if temp_argv[0] =~ /^#/
|
26
|
+
$commandqueue.push(line)
|
27
|
+
command = Module.const_get("Simp::Metadata::Commands::#{temp_argv[0].tr('-', '_').capitalize}").new
|
28
|
+
temp_argv.shift
|
29
|
+
command.run(temp_argv, engine)
|
33
30
|
end
|
34
31
|
end
|
35
32
|
end
|