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.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +494 -0
  3. data/Rakefile +19 -22
  4. data/exe/simp-install +1 -1
  5. data/exe/simp-media +1 -1
  6. data/exe/simp-metadata +1 -1
  7. data/lib/simp/install/command.rb +34 -35
  8. data/lib/simp/media.rb +0 -1
  9. data/lib/simp/media/command.rb +34 -35
  10. data/lib/simp/media/engine.rb +29 -35
  11. data/lib/simp/media/type.rb +1 -2
  12. data/lib/simp/media/type/base.rb +12 -4
  13. data/lib/simp/media/type/control-repo.rb +96 -107
  14. data/lib/simp/media/type/internet.rb +8 -8
  15. data/lib/simp/media/type/iso.rb +0 -1
  16. data/lib/simp/media/type/local.rb +18 -19
  17. data/lib/simp/media/type/tar.rb +37 -37
  18. data/lib/simp/metadata.rb +240 -258
  19. data/lib/simp/metadata/bootstrap_source.rb +93 -89
  20. data/lib/simp/metadata/buildinfo.rb +23 -23
  21. data/lib/simp/metadata/command.rb +60 -58
  22. data/lib/simp/metadata/commands.rb +1 -1
  23. data/lib/simp/metadata/commands/base.rb +28 -25
  24. data/lib/simp/metadata/commands/clone.rb +3 -5
  25. data/lib/simp/metadata/commands/component.rb +128 -90
  26. data/lib/simp/metadata/commands/delete.rb +4 -5
  27. data/lib/simp/metadata/commands/pry.rb +1 -3
  28. data/lib/simp/metadata/commands/release.rb +22 -23
  29. data/lib/simp/metadata/commands/releases.rb +1 -3
  30. data/lib/simp/metadata/commands/save.rb +10 -13
  31. data/lib/simp/metadata/commands/script.rb +11 -14
  32. data/lib/simp/metadata/commands/search.rb +15 -20
  33. data/lib/simp/metadata/commands/set-write-url.rb +1 -3
  34. data/lib/simp/metadata/commands/set-write.rb +1 -3
  35. data/lib/simp/metadata/commands/update.rb +9 -10
  36. data/lib/simp/metadata/component.rb +310 -154
  37. data/lib/simp/metadata/components.rb +15 -16
  38. data/lib/simp/metadata/engine.rb +31 -39
  39. data/lib/simp/metadata/fake_uri.rb +2 -0
  40. data/lib/simp/metadata/location.rb +99 -105
  41. data/lib/simp/metadata/locations.rb +19 -21
  42. data/lib/simp/metadata/release.rb +30 -39
  43. data/lib/simp/metadata/releases.rb +14 -15
  44. data/lib/simp/metadata/source.rb +69 -79
  45. data/lib/simp/metadata/version.rb +9 -0
  46. data/spec/simp/media/command_spec.rb +4 -5
  47. data/spec/simp/media/engine_spec.rb +14 -14
  48. data/spec/simp/media/type/control_repo_spec.rb +10 -12
  49. data/spec/simp/media/type/internet_spec.rb +11 -11
  50. data/spec/simp/media/type/iso_spec.rb +6 -7
  51. data/spec/simp/media/type/local_spec.rb +6 -8
  52. data/spec/simp/media/type/tar_spec.rb +6 -8
  53. data/spec/simp/metadata/buildinfo_spec.rb +19 -17
  54. data/spec/simp/metadata/commands/clone_spec.rb +4 -3
  55. data/spec/simp/metadata/component_spec.rb +43 -54
  56. data/spec/simp/metadata/engine_spec.rb +38 -41
  57. data/spec/simp/metadata/release_spec.rb +72 -79
  58. data/spec/simp/metadata/source_spec.rb +8 -6
  59. data/spec/simp/metadata_spec.rb +95 -98
  60. data/spec/spec_helper.rb +33 -21
  61. metadata +5 -3
data/Rakefile CHANGED
@@ -3,7 +3,6 @@
3
3
  # To change this template file, choose Tools | Templates
4
4
  # and open the template in the editor.
5
5
 
6
-
7
6
  require 'rubygems'
8
7
  require 'rake'
9
8
  require 'rake/clean'
@@ -11,10 +10,10 @@ require 'rubygems/package_task'
11
10
  require 'rake/testtask'
12
11
  require 'rspec/core/rake_task'
13
12
 
14
-
15
13
  Rake::TestTask.new do |t|
16
14
  t.test_files = FileList['test/**/*.rb']
17
15
  end
16
+
18
17
  begin
19
18
  require 'rspec/core/rake_task'
20
19
  RSpec::Core::RakeTask.new(:spec)
@@ -35,35 +34,33 @@ end
35
34
 
36
35
  begin
37
36
 
38
- # yardstick
37
+ # yardstick
39
38
 
40
- # measure coverage
41
- require 'yardstick/rake/measurement'
42
-
43
- Yardstick::Rake::Measurement.new(:yardstick_measure) do |measurement|
44
- measurement.output = 'measurement/report.txt'
45
- end
39
+ # measure coverage
40
+ require 'yardstick/rake/measurement'
46
41
 
42
+ Yardstick::Rake::Measurement.new(:yardstick_measure) do |measurement|
43
+ measurement.output = 'measurement/report.txt'
44
+ end
47
45
 
48
- # verify coverage
46
+ # verify coverage
49
47
 
50
- require 'yardstick/rake/verify'
48
+ require 'yardstick/rake/verify'
51
49
 
52
- Yardstick::Rake::Verify.new(:yardstick_verify) do |verify|
53
- verify.threshold = 50
54
- verify.require_exact_threshold = false
55
- end
50
+ Yardstick::Rake::Verify.new(:yardstick_verify) do |verify|
51
+ verify.threshold = 50
52
+ verify.require_exact_threshold = false
53
+ end
56
54
  rescue LoadError
57
55
  end
58
56
 
59
- begin
57
+ begin
60
58
 
61
- # reek
62
- require 'reek/rake/task'
59
+ # reek
60
+ require 'reek/rake/task'
63
61
 
64
- Reek::Rake::Task.new do |t|
65
- t.fail_on_error = false
66
- end
62
+ Reek::Rake::Task.new do |t|
63
+ t.fail_on_error = false
64
+ end
67
65
  rescue LoadError
68
66
  end
69
-
@@ -2,7 +2,7 @@
2
2
 
3
3
  begin
4
4
  require 'simp/install/command'
5
- command = Simp::Install::Command.new()
5
+ command = Simp::Install::Command.new
6
6
  command.run(ARGV)
7
7
 
8
8
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  begin
4
4
  require 'simp/media/command'
5
- command = Simp::Media::Command.new()
5
+ command = Simp::Media::Command.new
6
6
  command.run(ARGV)
7
7
 
8
8
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  begin
4
4
  require 'simp/metadata/command'
5
- command = Simp::Metadata::Command.new()
5
+ command = Simp::Metadata::Command.new
6
6
  command.run(ARGV)
7
7
 
8
8
  end
@@ -7,57 +7,57 @@ module Simp
7
7
  def run(argv)
8
8
  options = {}
9
9
  OptionParser.new do |opts|
10
- opts.banner = "Usage: simp-install [options]"
10
+ opts.banner = 'Usage: simp-install [options]'
11
11
 
12
- opts.on("-v", "--version [version]", "version to install") do |opt|
13
- options["version"] = opt
12
+ opts.on('-v', '--version [version]', 'version to install') do |opt|
13
+ options['version'] = opt
14
14
  end
15
- opts.on("-i", "--input [file]", "input filename") do |opt|
16
- options["input"] = opt
15
+ opts.on('-i', '--input [file]', 'input filename') do |opt|
16
+ options['input'] = opt
17
17
  end
18
- opts.on("-t", "--input-type [type]", "input install type", "valid types:", " - internet", " - local", " - tar", " - iso") do |opt|
19
- options["input_type"] = opt
18
+ opts.on('-t', '--input-type [type]', 'input install type', 'valid types:', ' - internet', ' - local', ' - tar', ' - iso') do |opt|
19
+ options['input_type'] = opt
20
20
  end
21
- opts.on("-o", "--output [file]", "output filename, path, or url (if control_repo type is specified)") do |opt|
22
- options["output"] = opt
21
+ opts.on('-o', '--output [file]', 'output filename, path, or url (if control_repo type is specified)') do |opt|
22
+ options['output'] = opt
23
23
  end
24
- opts.on("-T", "--output-type [type]", "output install type", "valid types:", " - control_repo", " - local", " - tar", " - iso") do |opt|
25
- options["output_type"] = opt
24
+ opts.on('-T', '--output-type [type]', 'output install type', 'valid types:', ' - control_repo', ' - local', ' - tar', ' - iso') do |opt|
25
+ options['output_type'] = opt
26
26
  end
27
- opts.on("-e", "--edition [edition_name]", "SIMP Edition", "valid editions:", " - community", " - enterprise") do |opt|
28
- options["edition"] = opt
27
+ opts.on('-e', '--edition [edition_name]', 'SIMP Edition', 'valid editions:', ' - community', ' - enterprise') do |opt|
28
+ options['edition'] = opt
29
29
  end
30
- opts.on("-f", "--flavor [flavor_name]", "SIMP flavor", "valid flavors:", " - default") do |opt|
31
- options["destination_branch"] = opt
30
+ opts.on('-f', '--flavor [flavor_name]', 'SIMP flavor', 'valid flavors:', ' - default') do |opt|
31
+ options['destination_branch'] = opt
32
32
  end
33
- opts.on("-c", "--channel [channel_name]", "Distribution Channel") do |opt|
34
- options["channel"] = opt
33
+ opts.on('-c', '--channel [channel_name]', 'Distribution Channel') do |opt|
34
+ options['channel'] = opt
35
35
  end
36
- opts.on("-l", "--license [license]", "path to license file") do |opt|
37
- options["license"] = opt
36
+ opts.on('-l', '--license [license]', 'path to license file') do |opt|
37
+ options['license'] = opt
38
38
  end
39
- opts.on("-s", "--sign", "sign output (if applicable)") do |opt|
40
- options["sign"] = opt
39
+ opts.on('-s', '--sign', 'sign output (if applicable)') do |opt|
40
+ options['sign'] = opt
41
41
  end
42
- opts.on("-S", "--signing-key [keyid]", "GPG ID of signing key") do |opt|
43
- options["signing_key"] = opt
42
+ opts.on('-S', '--signing-key [keyid]', 'GPG ID of signing key') do |opt|
43
+ options['signing_key'] = opt
44
44
  end
45
- opts.on("-d", "--local-directory [directory]", "Local directory to add to SIMP") do |opt|
46
- options["local_directory"] = opt
45
+ opts.on('-d', '--local-directory [directory]', 'Local directory to add to SIMP') do |opt|
46
+ options['local_directory'] = opt
47
47
  end
48
- opts.on("-u", "--url [url]", "URL of git hosting server to use (control-repo output only)") do |opt|
49
- options["embed"] = opt
48
+ opts.on('-u', '--url [url]', 'URL of git hosting server to use (control-repo output only)') do |opt|
49
+ options['embed'] = opt
50
50
  end
51
- opts.on("-E", "--embed", "embed puppet modules (control-repo output only)") do |opt|
52
- options["embed"] = opt
51
+ opts.on('-E', '--embed', 'embed puppet modules (control-repo output only)') do |opt|
52
+ options['embed'] = opt
53
53
  end
54
- opts.on("-b", "--branch [branch_name]", "branch to use (control-repo output only)") do |opt|
55
- options["branch"] = opt
54
+ opts.on('-b', '--branch [branch_name]', 'branch to use (control-repo output only)') do |opt|
55
+ options['branch'] = opt
56
56
  end
57
- opts.on("-B", "--destination_branch [branch_name]", "destination branch to use (control-repo output only)") do |opt|
58
- options["destination_branch"] = opt
57
+ opts.on('-B', '--destination_branch [branch_name]', 'destination branch to use (control-repo output only)') do |opt|
58
+ options['destination_branch'] = opt
59
59
  end
60
- opts.on("-d", "--debug [level]", "debug logging level: critical, error, warning, info, debug1, debug2") do |opt|
60
+ opts.on('-d', '--debug [level]', 'debug logging level: critical, error, warning, info, debug1, debug2') do |opt|
61
61
  $simp_metadata_debug_level = opt
62
62
  end
63
63
  end.parse!(argv)
@@ -67,4 +67,3 @@ module Simp
67
67
  end
68
68
  end
69
69
  end
70
-
@@ -4,6 +4,5 @@ require 'simp/media/type'
4
4
 
5
5
  module Simp
6
6
  module Media
7
-
8
7
  end
9
8
  end
@@ -6,57 +6,57 @@ module Simp
6
6
  def run(argv)
7
7
  options = {}
8
8
  OptionParser.new do |opts|
9
- opts.banner = "Usage: simp-media [options]"
9
+ opts.banner = 'Usage: simp-media [options]'
10
10
 
11
- opts.on("-v", "--version [version]", "version to install") do |opt|
12
- options["version"] = opt
11
+ opts.on('-v', '--version [version]', 'version to install') do |opt|
12
+ options['version'] = opt
13
13
  end
14
- opts.on("-i", "--input [file]", "input filename") do |opt|
15
- options["input"] = opt
14
+ opts.on('-i', '--input [file]', 'input filename') do |opt|
15
+ options['input'] = opt
16
16
  end
17
- opts.on("-t", "--input-type [type]", "input install type", "valid types:", " - internet", " - local", " - tar", " - iso") do |opt|
18
- options["input_type"] = opt
17
+ opts.on('-t', '--input-type [type]', 'input install type', 'valid types:', ' - internet', ' - local', ' - tar', ' - iso') do |opt|
18
+ options['input_type'] = opt
19
19
  end
20
- opts.on("-o", "--output [file]", "output filename, path, or url (if control_repo type is specified)") do |opt|
21
- options["output"] = opt
20
+ opts.on('-o', '--output [file]', 'output filename, path, or url (if control_repo type is specified)') do |opt|
21
+ options['output'] = opt
22
22
  end
23
- opts.on("-T", "--output-type [type]", "output install type", "valid types:", " - control_repo", " - local", " - tar", " - iso") do |opt|
24
- options["output_type"] = opt
23
+ opts.on('-T', '--output-type [type]', 'output install type', 'valid types:', ' - control_repo', ' - local', ' - tar', ' - iso') do |opt|
24
+ options['output_type'] = opt
25
25
  end
26
- opts.on("-e", "--edition [edition_name]", "SIMP Edition", "valid editions:", " - community", " - enterprise") do |opt|
27
- options["edition"] = opt
26
+ opts.on('-e', '--edition [edition_name]', 'SIMP Edition', 'valid editions:', ' - community', ' - enterprise') do |opt|
27
+ options['edition'] = opt
28
28
  end
29
- opts.on("-f", "--flavor [flavor_name]", "SIMP flavor", "valid flavors:", " - default") do |opt|
30
- options["destination_branch"] = opt
29
+ opts.on('-f', '--flavor [flavor_name]', 'SIMP flavor', 'valid flavors:', ' - default') do |opt|
30
+ options['destination_branch'] = opt
31
31
  end
32
- opts.on("-c", "--channel [channel_name]", "Distribution Channel") do |opt|
33
- options["channel"] = opt
32
+ opts.on('-c', '--channel [channel_name]', 'Distribution Channel') do |opt|
33
+ options['channel'] = opt
34
34
  end
35
- opts.on("-l", "--license [license]", "path to license file") do |opt|
36
- options["license"] = opt
35
+ opts.on('-l', '--license [license]', 'path to license file') do |opt|
36
+ options['license'] = opt
37
37
  end
38
- opts.on("-s", "--sign", "sign output (if applicable)") do |opt|
39
- options["sign"] = opt
38
+ opts.on('-s', '--sign', 'sign output (if applicable)') do |opt|
39
+ options['sign'] = opt
40
40
  end
41
- opts.on("-S", "--signing-key [keyid]", "GPG ID of signing key") do |opt|
42
- options["signing_key"] = opt
41
+ opts.on('-S', '--signing-key [keyid]', 'GPG ID of signing key') do |opt|
42
+ options['signing_key'] = opt
43
43
  end
44
- opts.on("-D", "--local-directory [directory]", "Local directory to add to SIMP") do |opt|
45
- options["local_directory"] = opt
44
+ opts.on('-D', '--local-directory [directory]', 'Local directory to add to SIMP') do |opt|
45
+ options['local_directory'] = opt
46
46
  end
47
- opts.on("-u", "--url [url]", "URL of git hosting server to use (control-repo output only)") do |opt|
48
- options["embed"] = opt
47
+ opts.on('-u', '--url [url]', 'URL of git hosting server to use (control-repo output only)') do |opt|
48
+ options['embed'] = opt
49
49
  end
50
- opts.on("-E", "--embed", "embed puppet modules (control-repo output only)") do |opt|
51
- options["embed"] = opt
50
+ opts.on('-E', '--embed', 'embed puppet modules (control-repo output only)') do |opt|
51
+ options['embed'] = opt
52
52
  end
53
- opts.on("-b", "--branch [branch_name]", "branch to use (control-repo output only)") do |opt|
54
- options["branch"] = opt
53
+ opts.on('-b', '--branch [branch_name]', 'branch to use (control-repo output only)') do |opt|
54
+ options['branch'] = opt
55
55
  end
56
- opts.on("-B", "--destination_branch [branch_name]", "destination branch to use (control-repo output only)") do |opt|
57
- options["destination_branch"] = opt
56
+ opts.on('-B', '--destination_branch [branch_name]', 'destination branch to use (control-repo output only)') do |opt|
57
+ options['destination_branch'] = opt
58
58
  end
59
- opts.on("-d", "--debug [level]", "debug logging level: critical, error, warning, info, debug1, debug2") do |opt|
59
+ opts.on('-d', '--debug [level]', 'debug logging level: critical, error, warning, info, debug1, debug2') do |opt|
60
60
  $simp_metadata_debug_level = opt
61
61
  end
62
62
  end.parse!(argv)
@@ -66,4 +66,3 @@ module Simp
66
66
  end
67
67
  end
68
68
  end
69
-
@@ -31,54 +31,48 @@ module Simp
31
31
  Simp::Metadata.critical(output)
32
32
  end
33
33
 
34
- def initialize(options ={})
34
+ def initialize(options = {})
35
35
  {
36
- "input_type" => "internet",
37
- "input" => nil,
38
- "output_type" => "control_repo",
39
- "output" => "file:///usr/share/simp/control-repo",
40
- "url" => nil,
41
- "embed" => true,
42
- "license" => '/etc/simp/license.key',
43
- "sign" => false,
44
- "signing_key" => nil,
45
- "metadata" => nil,
46
- "branch" => "production",
47
- "destination_branch" => nil,
48
- "edition" => "community",
49
- "channel" => "stable",
50
- "flavor" => "default",
36
+ 'input_type' => 'internet',
37
+ 'input' => nil,
38
+ 'output_type' => 'control_repo',
39
+ 'output' => 'file:///usr/share/simp/control-repo',
40
+ 'url' => nil,
41
+ 'embed' => true,
42
+ 'license' => '/etc/simp/license.key',
43
+ 'sign' => false,
44
+ 'signing_key' => nil,
45
+ 'metadata' => nil,
46
+ 'branch' => 'production',
47
+ 'destination_branch' => nil,
48
+ 'edition' => 'community',
49
+ 'channel' => 'stable',
50
+ 'flavor' => 'default'
51
51
  }.each do |key, default_value|
52
- unless (options.key?(key))
53
- options[key] = default_value
54
- end
52
+ options[key] = default_value unless options.key?(key)
55
53
  end
56
54
  @cleanup = []
57
55
  @options = options
58
- if (options["input_type"] == nil)
59
- raise "input_type must be specified"
60
- end
61
- if (options["output_type"] == nil)
62
- raise "output_type must be specified"
63
- end
64
- @input = Module.const_get("Simp::Media::Type::#{@options["input_type"].capitalize}").new(options, self)
65
- @output = Module.const_get("Simp::Media::Type::#{@options["output_type"].capitalize}").new(options, self)
56
+ raise 'input_type must be specified' if options['input_type'].nil?
57
+ raise 'output_type must be specified' if options['output_type'].nil?
58
+ @input = Module.const_get("Simp::Media::Type::#{@options['input_type'].capitalize}").new(options, self)
59
+ @output = Module.const_get("Simp::Media::Type::#{@options['output_type'].capitalize}").new(options, self)
66
60
  end
67
61
 
68
- def run()
62
+ def run
69
63
  # XXX ToDo: Need to not create a target_directory if an input directory exists
70
- if (@output.target_directory == nil)
71
- target = Dir.mktmpdir("cachedir")
64
+ if @output.target_directory.nil?
65
+ target = Dir.mktmpdir('cachedir')
72
66
  @cleanup << target
73
67
  else
74
68
  target = @output.target_directory
75
69
  end
76
70
 
77
71
  # XXX ToDo: only set this if input is specified
78
- @input.input_directory = @options["input"]
72
+ @input.input_directory = @options['input']
79
73
 
80
- metadata = Simp::Metadata::Engine.new(nil, nil, @options["edition"])
81
- version = @options["version"]
74
+ metadata = Simp::Metadata::Engine.new(nil, nil, @options['edition'])
75
+ version = @options['version']
82
76
  metadata.releases[version].components.each do |component|
83
77
  info("Adding #{component.name}")
84
78
  retval = @input.fetch_component(component, {})
@@ -90,11 +84,11 @@ module Simp
90
84
  cleanup
91
85
  end
92
86
 
93
- def loaded?()
87
+ def loaded?
94
88
  true
95
89
  end
96
90
 
97
- def cleanup()
91
+ def cleanup
98
92
  @cleanup.each do |path|
99
93
  FileUtils.rmtree(path)
100
94
  end
@@ -1,14 +1,13 @@
1
-
2
1
  require 'simp/media/type/base'
3
2
  require 'simp/media/type/internet'
4
3
  require 'simp/media/type/local'
5
4
  require 'simp/media/type/tar'
6
5
  require 'simp/media/type/iso'
7
6
  require 'simp/media/type/control-repo'
7
+
8
8
  module Simp
9
9
  module Media
10
10
  module Type
11
-
12
11
  end
13
12
  end
14
13
  end
@@ -5,10 +5,12 @@ module Simp
5
5
  class Base
6
6
  attr_accessor :engine
7
7
  attr_accessor :options
8
+
8
9
  def initialize(options, engine)
9
10
  @options = options
10
11
  @engine = engine
11
12
  end
13
+
12
14
  def debug2(output)
13
15
  engine.debug2(output)
14
16
  end
@@ -32,9 +34,10 @@ module Simp
32
34
  def critical(output)
33
35
  engine.critical(output)
34
36
  end
37
+
35
38
  def run(command)
36
39
  exitcode = nil
37
- Open3.popen3(command) do |stdin, stdout, stderr, thread|
40
+ Open3.popen3(command) do |_stdin, stdout, stderr, thread|
38
41
  pid = thread.pid
39
42
  debug1(stdout.read.chomp)
40
43
  debug1(stderr.read.chomp)
@@ -42,19 +45,24 @@ module Simp
42
45
  end
43
46
  exitcode
44
47
  end
48
+
45
49
  def target_directory
46
50
  nil
47
51
  end
52
+
48
53
  def cleanup
49
54
  true
50
55
  end
51
- def fetch_component(component, options)
56
+
57
+ def fetch_component(_component, _options)
52
58
  raise '`fetch_component` not implemented'
53
59
  end
54
- def add_component(component, options)
60
+
61
+ def add_component(_component, _options)
55
62
  raise '`add_component` not implemented'
56
63
  end
57
- def finalize()
64
+
65
+ def finalize
58
66
  raise '`finalize` not implemented'
59
67
  end
60
68
  end