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,68 +1,68 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Generate
5
- class Task < PuppetObject
6
- def friendly_name
7
- 'Task'
8
- end
9
-
10
- def template_files
11
- return {} if spec_only?
12
- {
13
- 'task.erb' => File.join('tasks', task_name + '.sh'),
14
- }
15
- end
16
-
17
- def template_data
18
- {
19
- name: object_name,
20
- }
21
- end
22
-
23
- # Checks that the task has not already been defined with a different
24
- # extension.
25
- #
26
- # @raise [PDK::CLI::ExitWithError] if files with the same name as the
27
- # task exist in the <module>/tasks/ directory
28
- def check_preconditions
29
- super
30
-
31
- error = _("A task named '%{name}' already exists in this module; defined in %{file}")
32
- allowed_extensions = %w[.md .conf]
33
-
34
- PDK::Util::Filesystem.glob(File.join(context.root_path, 'tasks', task_name + '.*')).each do |file|
35
- next if allowed_extensions.include?(File.extname(file))
36
-
37
- raise PDK::CLI::ExitWithError, error % { name: task_name, file: file }
38
- end
39
- end
40
-
41
- def non_template_files
42
- task_metadata_file = File.join('tasks', task_name + '.json')
43
- { task_metadata_file => JSON.pretty_generate(task_metadata) }
44
- end
45
-
46
- private
47
-
48
- # Calculates the file name of the task files ('init' if the task has the
49
- # same name as the module, otherwise use the specified task name).
50
- #
51
- # @return [String] the base name of the file(s) for the task.
52
- #
53
- # @api private
54
- def task_name
55
- (object_name == module_name) ? 'init' : object_name
56
- end
57
-
58
- def task_metadata
59
- {
60
- puppet_task_version: 1,
61
- supports_noop: false,
62
- description: options.fetch(:description, 'A short description of this task'),
63
- parameters: {},
64
- }
65
- end
66
- end
67
- end
68
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Generate
5
+ class Task < PuppetObject
6
+ def friendly_name
7
+ 'Task'
8
+ end
9
+
10
+ def template_files
11
+ return {} if spec_only?
12
+ {
13
+ 'task.erb' => File.join('tasks', task_name + '.sh'),
14
+ }
15
+ end
16
+
17
+ def template_data
18
+ {
19
+ name: object_name,
20
+ }
21
+ end
22
+
23
+ # Checks that the task has not already been defined with a different
24
+ # extension.
25
+ #
26
+ # @raise [PDK::CLI::ExitWithError] if files with the same name as the
27
+ # task exist in the <module>/tasks/ directory
28
+ def check_preconditions
29
+ super
30
+
31
+ error = _("A task named '%{name}' already exists in this module; defined in %{file}")
32
+ allowed_extensions = %w[.md .conf]
33
+
34
+ PDK::Util::Filesystem.glob(File.join(context.root_path, 'tasks', task_name + '.*')).each do |file|
35
+ next if allowed_extensions.include?(File.extname(file))
36
+
37
+ raise PDK::CLI::ExitWithError, error % { name: task_name, file: file }
38
+ end
39
+ end
40
+
41
+ def non_template_files
42
+ task_metadata_file = File.join('tasks', task_name + '.json')
43
+ { task_metadata_file => JSON.pretty_generate(task_metadata) }
44
+ end
45
+
46
+ private
47
+
48
+ # Calculates the file name of the task files ('init' if the task has the
49
+ # same name as the module, otherwise use the specified task name).
50
+ #
51
+ # @return [String] the base name of the file(s) for the task.
52
+ #
53
+ # @api private
54
+ def task_name
55
+ (object_name == module_name) ? 'init' : object_name
56
+ end
57
+
58
+ def task_metadata
59
+ {
60
+ puppet_task_version: 1,
61
+ supports_noop: false,
62
+ description: options.fetch(:description, 'A short description of this task'),
63
+ parameters: {},
64
+ }
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,33 +1,33 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Generate
5
- class Transport < PuppetObject
6
- def friendly_name
7
- 'Resource API Transport'.freeze
8
- end
9
-
10
- def template_files
11
- # Note : Due to how the V1 templates work, the names of the source template files may be mismatched to
12
- # their destination, e.g. transport_type.erb is really a transport schema
13
- files = {
14
- 'transport_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', object_name) + '_spec.rb',
15
- 'transport_type_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', 'schema', object_name) + '_spec.rb',
16
- }
17
- return files if spec_only?
18
- files.merge(
19
- 'transport.erb' => File.join('lib', 'puppet', 'transport', object_name) + '.rb',
20
- 'transport_device.erb' => File.join('lib', 'puppet', 'util', 'network_device', object_name, 'device.rb'),
21
- 'transport_type.erb' => File.join('lib', 'puppet', 'transport', 'schema', object_name) + '.rb',
22
- )
23
- end
24
-
25
- def template_data
26
- {
27
- name: object_name,
28
- transport_class: class_name_from_object_name(object_name),
29
- }
30
- end
31
- end
32
- end
33
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Generate
5
+ class Transport < PuppetObject
6
+ def friendly_name
7
+ 'Resource API Transport'.freeze
8
+ end
9
+
10
+ def template_files
11
+ # Note : Due to how the V1 templates work, the names of the source template files may be mismatched to
12
+ # their destination, e.g. transport_type.erb is really a transport schema
13
+ files = {
14
+ 'transport_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', object_name) + '_spec.rb',
15
+ 'transport_type_spec.erb' => File.join('spec', 'unit', 'puppet', 'transport', 'schema', object_name) + '_spec.rb',
16
+ }
17
+ return files if spec_only?
18
+ files.merge(
19
+ 'transport.erb' => File.join('lib', 'puppet', 'transport', object_name) + '.rb',
20
+ 'transport_device.erb' => File.join('lib', 'puppet', 'util', 'network_device', object_name, 'device.rb'),
21
+ 'transport_type.erb' => File.join('lib', 'puppet', 'transport', 'schema', object_name) + '.rb',
22
+ )
23
+ end
24
+
25
+ def template_data
26
+ {
27
+ name: object_name,
28
+ transport_class: class_name_from_object_name(object_name),
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
data/lib/pdk/generate.rb CHANGED
@@ -1,24 +1,24 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Generate
5
- autoload :DefinedType, 'pdk/generate/defined_type'
6
- autoload :Module, 'pdk/generate/module'
7
- autoload :Provider, 'pdk/generate/provider'
8
- autoload :PuppetClass, 'pdk/generate/puppet_class'
9
- autoload :PuppetObject, 'pdk/generate/puppet_object'
10
- autoload :Task, 'pdk/generate/task'
11
- autoload :Transport, 'pdk/generate/transport'
12
-
13
- def generators
14
- @generators ||= [
15
- PDK::Generate::DefinedType,
16
- PDK::Generate::Provider,
17
- PDK::Generate::PuppetClass,
18
- PDK::Generate::Task,
19
- PDK::Generate::Transport,
20
- ].freeze
21
- end
22
- module_function :generators
23
- end
24
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Generate
5
+ autoload :DefinedType, 'pdk/generate/defined_type'
6
+ autoload :Module, 'pdk/generate/module'
7
+ autoload :Provider, 'pdk/generate/provider'
8
+ autoload :PuppetClass, 'pdk/generate/puppet_class'
9
+ autoload :PuppetObject, 'pdk/generate/puppet_object'
10
+ autoload :Task, 'pdk/generate/task'
11
+ autoload :Transport, 'pdk/generate/transport'
12
+
13
+ def generators
14
+ @generators ||= [
15
+ PDK::Generate::DefinedType,
16
+ PDK::Generate::Provider,
17
+ PDK::Generate::PuppetClass,
18
+ PDK::Generate::Task,
19
+ PDK::Generate::Transport,
20
+ ].freeze
21
+ end
22
+ module_function :generators
23
+ end
24
+ end
data/lib/pdk/i18n.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'gettext-setup'
2
-
3
- GettextSetup.initialize(File.absolute_path('../../locales', File.dirname(__FILE__)))
4
- GettextSetup.negotiate_locale!(GettextSetup.candidate_locales)
1
+ require 'gettext-setup'
2
+
3
+ GettextSetup.initialize(File.absolute_path('../../locales', File.dirname(__FILE__)))
4
+ GettextSetup.negotiate_locale!(GettextSetup.candidate_locales)
data/lib/pdk/logger.rb CHANGED
@@ -1,45 +1,45 @@
1
- require 'logger'
2
- require 'pdk'
3
-
4
- module PDK
5
- class Logger < ::Logger
6
- WRAP_COLUMN_LIMIT = 78
7
-
8
- def initialize
9
- super(STDERR)
10
- @sent_messages = {}
11
-
12
- # TODO: Decide on output format.
13
- self.formatter = proc do |severity, _datetime, _progname, msg|
14
- prefix = "pdk (#{severity}): "
15
- if msg.is_a?(Hash)
16
- if msg.fetch(:wrap, false)
17
- wrap_pattern = %r{(.{1,#{WRAP_COLUMN_LIMIT - prefix.length}})(\s+|\Z)}
18
- "#{prefix}#{msg[:text].gsub(wrap_pattern, "\\1\n#{' ' * prefix.length}")}\n"
19
- else
20
- "#{prefix}#{msg[:text]}\n"
21
- end
22
- else
23
- "#{prefix}#{msg}\n"
24
- end
25
- end
26
-
27
- self.level = ::Logger::INFO
28
- end
29
-
30
- def warn_once(*args)
31
- hash = args.inspect.hash
32
- return if (@sent_messages[::Logger::WARN] ||= {}).key?(hash)
33
- @sent_messages[::Logger::WARN][hash] = true
34
- warn(*args)
35
- end
36
-
37
- def enable_debug_output
38
- self.level = ::Logger::DEBUG
39
- end
40
-
41
- def debug?
42
- level == ::Logger::DEBUG
43
- end
44
- end
45
- end
1
+ require 'logger'
2
+ require 'pdk'
3
+
4
+ module PDK
5
+ class Logger < ::Logger
6
+ WRAP_COLUMN_LIMIT = 78
7
+
8
+ def initialize
9
+ super(STDERR)
10
+ @sent_messages = {}
11
+
12
+ # TODO: Decide on output format.
13
+ self.formatter = proc do |severity, _datetime, _progname, msg|
14
+ prefix = "pdk (#{severity}): "
15
+ if msg.is_a?(Hash)
16
+ if msg.fetch(:wrap, false)
17
+ wrap_pattern = %r{(.{1,#{WRAP_COLUMN_LIMIT - prefix.length}})(\s+|\Z)}
18
+ "#{prefix}#{msg[:text].gsub(wrap_pattern, "\\1\n#{' ' * prefix.length}")}\n"
19
+ else
20
+ "#{prefix}#{msg[:text]}\n"
21
+ end
22
+ else
23
+ "#{prefix}#{msg}\n"
24
+ end
25
+ end
26
+
27
+ self.level = ::Logger::INFO
28
+ end
29
+
30
+ def warn_once(*args)
31
+ hash = args.inspect.hash
32
+ return if (@sent_messages[::Logger::WARN] ||= {}).key?(hash)
33
+ @sent_messages[::Logger::WARN][hash] = true
34
+ warn(*args)
35
+ end
36
+
37
+ def enable_debug_output
38
+ self.level = ::Logger::DEBUG
39
+ end
40
+
41
+ def debug?
42
+ level == ::Logger::DEBUG
43
+ end
44
+ end
45
+ end