pdk 2.3.0 → 2.4.0

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 (153) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1329 -1321
  3. data/LICENSE +201 -201
  4. data/README.md +163 -163
  5. data/exe/pdk +10 -10
  6. data/lib/pdk/analytics/client/google_analytics.rb +143 -143
  7. data/lib/pdk/analytics/client/noop.rb +25 -25
  8. data/lib/pdk/analytics/util.rb +19 -19
  9. data/lib/pdk/analytics.rb +30 -30
  10. data/lib/pdk/answer_file.rb +12 -12
  11. data/lib/pdk/bolt.rb +19 -19
  12. data/lib/pdk/cli/build.rb +82 -82
  13. data/lib/pdk/cli/bundle.rb +48 -48
  14. data/lib/pdk/cli/config/get.rb +26 -26
  15. data/lib/pdk/cli/config.rb +22 -22
  16. data/lib/pdk/cli/console.rb +148 -148
  17. data/lib/pdk/cli/convert.rb +52 -52
  18. data/lib/pdk/cli/env.rb +52 -52
  19. data/lib/pdk/cli/errors.rb +25 -25
  20. data/lib/pdk/cli/exec/command.rb +293 -293
  21. data/lib/pdk/cli/exec/interactive_command.rb +114 -114
  22. data/lib/pdk/cli/exec.rb +84 -84
  23. data/lib/pdk/cli/exec_group.rb +104 -104
  24. data/lib/pdk/cli/get/config.rb +24 -24
  25. data/lib/pdk/cli/get.rb +20 -20
  26. data/lib/pdk/cli/module/build.rb +12 -12
  27. data/lib/pdk/cli/module/generate.rb +47 -47
  28. data/lib/pdk/cli/module.rb +14 -14
  29. data/lib/pdk/cli/new/class.rb +32 -32
  30. data/lib/pdk/cli/new/defined_type.rb +32 -32
  31. data/lib/pdk/cli/new/fact.rb +29 -29
  32. data/lib/pdk/cli/new/function.rb +29 -29
  33. data/lib/pdk/cli/new/module.rb +53 -53
  34. data/lib/pdk/cli/new/provider.rb +29 -29
  35. data/lib/pdk/cli/new/task.rb +34 -34
  36. data/lib/pdk/cli/new/test.rb +52 -52
  37. data/lib/pdk/cli/new/transport.rb +27 -27
  38. data/lib/pdk/cli/new.rb +21 -21
  39. data/lib/pdk/cli/release/prep.rb +39 -39
  40. data/lib/pdk/cli/release/publish.rb +50 -50
  41. data/lib/pdk/cli/release.rb +194 -194
  42. data/lib/pdk/cli/remove/config.rb +80 -80
  43. data/lib/pdk/cli/remove.rb +20 -20
  44. data/lib/pdk/cli/set/config.rb +119 -119
  45. data/lib/pdk/cli/set.rb +20 -20
  46. data/lib/pdk/cli/test/unit.rb +90 -90
  47. data/lib/pdk/cli/test.rb +11 -11
  48. data/lib/pdk/cli/update.rb +64 -64
  49. data/lib/pdk/cli/util/command_redirector.rb +27 -27
  50. data/lib/pdk/cli/util/interview.rb +72 -72
  51. data/lib/pdk/cli/util/option_normalizer.rb +55 -55
  52. data/lib/pdk/cli/util/option_validator.rb +68 -68
  53. data/lib/pdk/cli/util/spinner.rb +13 -13
  54. data/lib/pdk/cli/util/update_manager_printer.rb +82 -82
  55. data/lib/pdk/cli/util.rb +305 -305
  56. data/lib/pdk/cli/validate.rb +116 -116
  57. data/lib/pdk/cli.rb +175 -175
  58. data/lib/pdk/config/analytics_schema.json +26 -26
  59. data/lib/pdk/config/errors.rb +5 -5
  60. data/lib/pdk/config/ini_file.rb +183 -183
  61. data/lib/pdk/config/ini_file_setting.rb +39 -39
  62. data/lib/pdk/config/json.rb +34 -34
  63. data/lib/pdk/config/json_schema_namespace.rb +142 -142
  64. data/lib/pdk/config/json_schema_setting.rb +53 -53
  65. data/lib/pdk/config/json_with_schema.rb +49 -49
  66. data/lib/pdk/config/namespace.rb +354 -354
  67. data/lib/pdk/config/setting.rb +135 -135
  68. data/lib/pdk/config/validator.rb +31 -31
  69. data/lib/pdk/config/yaml.rb +46 -46
  70. data/lib/pdk/config/yaml_with_schema.rb +59 -59
  71. data/lib/pdk/config.rb +390 -390
  72. data/lib/pdk/context/control_repo.rb +60 -60
  73. data/lib/pdk/context/module.rb +28 -28
  74. data/lib/pdk/context/none.rb +22 -22
  75. data/lib/pdk/context.rb +99 -99
  76. data/lib/pdk/control_repo.rb +90 -90
  77. data/lib/pdk/generate/defined_type.rb +43 -43
  78. data/lib/pdk/generate/fact.rb +25 -25
  79. data/lib/pdk/generate/function.rb +48 -48
  80. data/lib/pdk/generate/module.rb +352 -352
  81. data/lib/pdk/generate/provider.rb +28 -28
  82. data/lib/pdk/generate/puppet_class.rb +43 -43
  83. data/lib/pdk/generate/puppet_object.rb +232 -232
  84. data/lib/pdk/generate/task.rb +68 -68
  85. data/lib/pdk/generate/transport.rb +33 -33
  86. data/lib/pdk/generate.rb +24 -24
  87. data/lib/pdk/i18n.rb +4 -4
  88. data/lib/pdk/logger.rb +45 -45
  89. data/lib/pdk/module/build.rb +322 -322
  90. data/lib/pdk/module/convert.rb +296 -296
  91. data/lib/pdk/module/metadata.rb +202 -202
  92. data/lib/pdk/module/release.rb +260 -260
  93. data/lib/pdk/module/update.rb +131 -131
  94. data/lib/pdk/module/update_manager.rb +227 -227
  95. data/lib/pdk/module.rb +30 -30
  96. data/lib/pdk/report/event.rb +370 -370
  97. data/lib/pdk/report.rb +121 -121
  98. data/lib/pdk/template/fetcher/git.rb +85 -85
  99. data/lib/pdk/template/fetcher/local.rb +28 -28
  100. data/lib/pdk/template/fetcher.rb +98 -98
  101. data/lib/pdk/template/renderer/v1/legacy_template_dir.rb +116 -116
  102. data/lib/pdk/template/renderer/v1/renderer.rb +132 -132
  103. data/lib/pdk/template/renderer/v1/template_file.rb +102 -102
  104. data/lib/pdk/template/renderer/v1.rb +25 -25
  105. data/lib/pdk/template/renderer.rb +96 -96
  106. data/lib/pdk/template/template_dir.rb +67 -67
  107. data/lib/pdk/template.rb +59 -59
  108. data/lib/pdk/tests/unit.rb +252 -252
  109. data/lib/pdk/util/bundler.rb +259 -259
  110. data/lib/pdk/util/changelog_generator.rb +137 -137
  111. data/lib/pdk/util/env.rb +47 -47
  112. data/lib/pdk/util/filesystem.rb +138 -138
  113. data/lib/pdk/util/git.rb +179 -179
  114. data/lib/pdk/util/json_finder.rb +85 -85
  115. data/lib/pdk/util/puppet_strings.rb +125 -125
  116. data/lib/pdk/util/puppet_version.rb +266 -266
  117. data/lib/pdk/util/ruby_version.rb +179 -179
  118. data/lib/pdk/util/template_uri.rb +295 -295
  119. data/lib/pdk/util/vendored_file.rb +93 -93
  120. data/lib/pdk/util/version.rb +43 -43
  121. data/lib/pdk/util/windows/api_types.rb +82 -82
  122. data/lib/pdk/util/windows/file.rb +36 -36
  123. data/lib/pdk/util/windows/process.rb +79 -79
  124. data/lib/pdk/util/windows/string.rb +16 -16
  125. data/lib/pdk/util/windows.rb +15 -15
  126. data/lib/pdk/util.rb +278 -277
  127. data/lib/pdk/validate/control_repo/control_repo_validator_group.rb +23 -23
  128. data/lib/pdk/validate/control_repo/environment_conf_validator.rb +98 -98
  129. data/lib/pdk/validate/external_command_validator.rb +208 -208
  130. data/lib/pdk/validate/internal_ruby_validator.rb +100 -100
  131. data/lib/pdk/validate/invokable_validator.rb +228 -228
  132. data/lib/pdk/validate/metadata/metadata_json_lint_validator.rb +86 -86
  133. data/lib/pdk/validate/metadata/metadata_syntax_validator.rb +78 -78
  134. data/lib/pdk/validate/metadata/metadata_validator_group.rb +20 -20
  135. data/lib/pdk/validate/puppet/puppet_epp_validator.rb +133 -133
  136. data/lib/pdk/validate/puppet/puppet_lint_validator.rb +66 -66
  137. data/lib/pdk/validate/puppet/puppet_syntax_validator.rb +137 -137
  138. data/lib/pdk/validate/puppet/puppet_validator_group.rb +21 -21
  139. data/lib/pdk/validate/ruby/ruby_rubocop_validator.rb +80 -80
  140. data/lib/pdk/validate/ruby/ruby_validator_group.rb +19 -19
  141. data/lib/pdk/validate/tasks/tasks_metadata_lint_validator.rb +88 -88
  142. data/lib/pdk/validate/tasks/tasks_name_validator.rb +50 -50
  143. data/lib/pdk/validate/tasks/tasks_validator_group.rb +20 -20
  144. data/lib/pdk/validate/validator.rb +118 -118
  145. data/lib/pdk/validate/validator_group.rb +104 -104
  146. data/lib/pdk/validate/yaml/yaml_syntax_validator.rb +95 -95
  147. data/lib/pdk/validate/yaml/yaml_validator_group.rb +19 -19
  148. data/lib/pdk/validate.rb +94 -94
  149. data/lib/pdk/version.rb +4 -4
  150. data/lib/pdk.rb +76 -76
  151. data/locales/config.yaml +21 -21
  152. data/locales/pdk.pot +2094 -2094
  153. metadata +5 -6
@@ -1,125 +1,125 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Util
5
- module PuppetStrings
6
- class NoObjectError < StandardError; end
7
- class RunError < StandardError; end
8
- class NoGeneratorError < StandardError; end
9
-
10
- # Runs Puppet for the purposes of generating puppet-strings output.
11
- #
12
- # @param *args [String] additional parameters to pass to puppet.
13
- #
14
- # @return [Hash{Symbol=>Object}] the result of the command execution.
15
- def self.puppet(*args)
16
- require 'pdk/cli/exec/command'
17
-
18
- PDK::Util::Bundler.ensure_binstubs!('puppet')
19
-
20
- argv = [File.join(PDK::Util.module_root, 'bin', 'puppet')] + args
21
- argv.unshift(File.join(PDK::Util::RubyVersion.bin_path, 'ruby.exe')) if Gem.win_platform?
22
-
23
- command = PDK::CLI::Exec::Command.new(*argv).tap do |c|
24
- c.context = :module
25
- c.add_spinner(_('Examining module contents'))
26
- end
27
-
28
- command.execute!
29
- end
30
-
31
- # Generates and parses the JSON output from puppet-strings.
32
- #
33
- # @returns [Hash{String=>Object}] the parsed puppet-strings output.
34
- #
35
- # @raises [PDK::Util::PuppetStrings::RunError] if the puppet-strings
36
- # command exits non-zero.
37
- # @raises [PDK::Util::PuppetStrings::RunError] if the puppet-strings
38
- # command outputs invalid JSON.
39
- def self.generate_hash
40
- result = puppet('strings', 'generate', '--format', 'json')
41
-
42
- raise RunError, result[:stderr] unless result[:exit_code].zero?
43
-
44
- JSON.parse(result[:stdout])
45
- rescue JSON::ParserError => e
46
- PDK.logger.debug(e)
47
- raise RunError, _('Unable to parse puppet-strings output')
48
- end
49
-
50
- # Searches the puppet-strings result to find the definition of the named
51
- # object.
52
- #
53
- # @param name [String] the name of the object definition to search for.
54
- # If the object name is not prepended with the module name,
55
- # "#{module_name}::#{object_name}" will also be search for.
56
- #
57
- # @returns [Array[PDK::Generate::PuppetObject, Hash{String=>Object}]] the
58
- # appropriate generator class for the object as the first element and
59
- # the puppet-strings description hash for the definition.
60
- #
61
- # @raises [PDK::Util::PuppetStrings::NoObjectError] if the named object
62
- # can not be found in the puppet-strings output.
63
- # @raises [PDK::Util::PuppetStrings::NoGeneratorError] if the named
64
- # object does not have a corresponding PDK generator class.
65
- def self.find_object(name)
66
- module_name = PDK::Util.module_metadata['name'].rpartition('-').last
67
-
68
- object_names = [name]
69
- object_names << "#{module_name}::#{name}" unless name.start_with?("#{module_name}::")
70
-
71
- known_objects = generate_hash
72
- object_type = known_objects.keys.find do |obj_type|
73
- known_objects[obj_type].any? { |obj| object_names.include?(obj['name']) }
74
- end
75
-
76
- raise NoObjectError if object_type.nil?
77
-
78
- generator = find_generator(object_type)
79
-
80
- raise NoGeneratorError, object_type if generator.nil?
81
-
82
- [generator, known_objects[object_type].find { |obj| object_names.include?(obj['name']) }]
83
- end
84
-
85
- # Generate a list of all objects that PDK has a generator for.
86
- #
87
- # @returns [Array[Array[PDK::Generate::PuppetObject,
88
- # Array[Hash{String=>Object}]]]] an associative array where the first
89
- # element of each pair is the generator class and the second element of
90
- # each pair is an array of description hashes from puppet-strings.
91
- def self.all_objects
92
- require 'pdk/generate'
93
-
94
- generators = PDK::Generate.generators.select do |gen|
95
- gen.const_defined?(:PUPPET_STRINGS_TYPE) && !gen::PUPPET_STRINGS_TYPE.nil?
96
- end
97
-
98
- known_objects = generate_hash
99
-
100
- generators.map { |gen| [gen, known_objects[gen::PUPPET_STRINGS_TYPE]] }.reject do |_, obj|
101
- obj.nil? || obj.empty?
102
- end
103
- end
104
-
105
- # Evaluates the mapping of puppet-strings object type to PDK generator
106
- # class.
107
- #
108
- # @param type [String] the object type as returned from puppet-strings.
109
- #
110
- # @returns [PDK:Generate::PuppetObject,nil] a child of
111
- # PDK::Generate::PuppetObject or nil a suitable generator is not found.
112
- #
113
- # @example
114
- # PDK::Util::PuppetStrings.find_generator('puppet_classes')
115
- # => PDK::Generate::PuppetClass
116
- def self.find_generator(type)
117
- require 'pdk/generate'
118
-
119
- PDK::Generate.generators.find do |gen|
120
- gen.const_defined?(:PUPPET_STRINGS_TYPE) && gen::PUPPET_STRINGS_TYPE == type
121
- end
122
- end
123
- end
124
- end
125
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Util
5
+ module PuppetStrings
6
+ class NoObjectError < StandardError; end
7
+ class RunError < StandardError; end
8
+ class NoGeneratorError < StandardError; end
9
+
10
+ # Runs Puppet for the purposes of generating puppet-strings output.
11
+ #
12
+ # @param *args [String] additional parameters to pass to puppet.
13
+ #
14
+ # @return [Hash{Symbol=>Object}] the result of the command execution.
15
+ def self.puppet(*args)
16
+ require 'pdk/cli/exec/command'
17
+
18
+ PDK::Util::Bundler.ensure_binstubs!('puppet')
19
+
20
+ argv = [File.join(PDK::Util.module_root, 'bin', 'puppet')] + args
21
+ argv.unshift(File.join(PDK::Util::RubyVersion.bin_path, 'ruby.exe')) if Gem.win_platform?
22
+
23
+ command = PDK::CLI::Exec::Command.new(*argv).tap do |c|
24
+ c.context = :module
25
+ c.add_spinner(_('Examining module contents'))
26
+ end
27
+
28
+ command.execute!
29
+ end
30
+
31
+ # Generates and parses the JSON output from puppet-strings.
32
+ #
33
+ # @returns [Hash{String=>Object}] the parsed puppet-strings output.
34
+ #
35
+ # @raises [PDK::Util::PuppetStrings::RunError] if the puppet-strings
36
+ # command exits non-zero.
37
+ # @raises [PDK::Util::PuppetStrings::RunError] if the puppet-strings
38
+ # command outputs invalid JSON.
39
+ def self.generate_hash
40
+ result = puppet('strings', 'generate', '--format', 'json')
41
+
42
+ raise RunError, result[:stderr] unless result[:exit_code].zero?
43
+
44
+ JSON.parse(result[:stdout])
45
+ rescue JSON::ParserError => e
46
+ PDK.logger.debug(e)
47
+ raise RunError, _('Unable to parse puppet-strings output')
48
+ end
49
+
50
+ # Searches the puppet-strings result to find the definition of the named
51
+ # object.
52
+ #
53
+ # @param name [String] the name of the object definition to search for.
54
+ # If the object name is not prepended with the module name,
55
+ # "#{module_name}::#{object_name}" will also be search for.
56
+ #
57
+ # @returns [Array[PDK::Generate::PuppetObject, Hash{String=>Object}]] the
58
+ # appropriate generator class for the object as the first element and
59
+ # the puppet-strings description hash for the definition.
60
+ #
61
+ # @raises [PDK::Util::PuppetStrings::NoObjectError] if the named object
62
+ # can not be found in the puppet-strings output.
63
+ # @raises [PDK::Util::PuppetStrings::NoGeneratorError] if the named
64
+ # object does not have a corresponding PDK generator class.
65
+ def self.find_object(name)
66
+ module_name = PDK::Util.module_metadata['name'].rpartition('-').last
67
+
68
+ object_names = [name]
69
+ object_names << "#{module_name}::#{name}" unless name.start_with?("#{module_name}::")
70
+
71
+ known_objects = generate_hash
72
+ object_type = known_objects.keys.find do |obj_type|
73
+ known_objects[obj_type].any? { |obj| object_names.include?(obj['name']) }
74
+ end
75
+
76
+ raise NoObjectError if object_type.nil?
77
+
78
+ generator = find_generator(object_type)
79
+
80
+ raise NoGeneratorError, object_type if generator.nil?
81
+
82
+ [generator, known_objects[object_type].find { |obj| object_names.include?(obj['name']) }]
83
+ end
84
+
85
+ # Generate a list of all objects that PDK has a generator for.
86
+ #
87
+ # @returns [Array[Array[PDK::Generate::PuppetObject,
88
+ # Array[Hash{String=>Object}]]]] an associative array where the first
89
+ # element of each pair is the generator class and the second element of
90
+ # each pair is an array of description hashes from puppet-strings.
91
+ def self.all_objects
92
+ require 'pdk/generate'
93
+
94
+ generators = PDK::Generate.generators.select do |gen|
95
+ gen.const_defined?(:PUPPET_STRINGS_TYPE) && !gen::PUPPET_STRINGS_TYPE.nil?
96
+ end
97
+
98
+ known_objects = generate_hash
99
+
100
+ generators.map { |gen| [gen, known_objects[gen::PUPPET_STRINGS_TYPE]] }.reject do |_, obj|
101
+ obj.nil? || obj.empty?
102
+ end
103
+ end
104
+
105
+ # Evaluates the mapping of puppet-strings object type to PDK generator
106
+ # class.
107
+ #
108
+ # @param type [String] the object type as returned from puppet-strings.
109
+ #
110
+ # @returns [PDK:Generate::PuppetObject,nil] a child of
111
+ # PDK::Generate::PuppetObject or nil a suitable generator is not found.
112
+ #
113
+ # @example
114
+ # PDK::Util::PuppetStrings.find_generator('puppet_classes')
115
+ # => PDK::Generate::PuppetClass
116
+ def self.find_generator(type)
117
+ require 'pdk/generate'
118
+
119
+ PDK::Generate.generators.find do |gen|
120
+ gen.const_defined?(:PUPPET_STRINGS_TYPE) && gen::PUPPET_STRINGS_TYPE == type
121
+ end
122
+ end
123
+ end
124
+ end
125
+ end