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,131 +1,131 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module Module
5
- class Update < Convert
6
- GIT_DESCRIBE_PATTERN = %r{\A(?<base>.+?)-(?<additional_commits>\d+)-g(?<sha>.+)\Z}
7
-
8
- def run
9
- template_uri.uri_fragment = new_template_version
10
-
11
- stage_changes!
12
-
13
- if current_version == new_version
14
- PDK.logger.debug _('This module is already up to date with version %{version} of the template.') % {
15
- version: new_version,
16
- }
17
- end
18
-
19
- unless update_manager.changes?
20
- PDK::Report.default_target.puts(_('No changes required.'))
21
- return
22
- end
23
-
24
- PDK.logger.info(update_message)
25
-
26
- print_summary
27
- full_report('update_report.txt') unless update_manager.changes[:modified].empty?
28
-
29
- return if noop?
30
-
31
- unless force?
32
- message = _('Do you want to continue and make these changes to your module?')
33
- return unless PDK::CLI::Util.prompt_for_yes(message)
34
- end
35
-
36
- # Remove these files straight away as these changes are not something
37
- # that the user needs to review.
38
- update_manager.unlink_file('Gemfile.lock')
39
- update_manager.unlink_file(File.join('.bundle', 'config'))
40
-
41
- update_manager.sync_changes!
42
-
43
- require 'pdk/util/bundler'
44
- PDK::Util::Bundler.ensure_bundle!
45
-
46
- print_result 'Update completed'
47
- end
48
-
49
- def module_metadata
50
- @module_metadata ||= PDK::Module::Metadata.from_file(File.join(module_dir, 'metadata.json'))
51
- rescue ArgumentError => e
52
- raise PDK::CLI::ExitWithError, e.message
53
- end
54
-
55
- def template_uri
56
- @template_uri ||= PDK::Util::TemplateURI.new(module_metadata.data['template-url'])
57
- end
58
-
59
- def current_version
60
- @current_version ||= describe_ref_to_s(current_template_version)
61
- end
62
-
63
- def new_version
64
- @new_version ||= fetch_remote_version(new_template_version)
65
- end
66
-
67
- def new_template_version
68
- return options[:'template-ref'] if options[:'template-ref']
69
-
70
- if template_uri.default? && PDK::Util::Git.tag?(template_uri.bare_uri, template_uri.uri_fragment) && PDK::Util.package_install?
71
- PDK::Util::TemplateURI.default_template_ref
72
- else
73
- template_uri.uri_fragment
74
- end
75
- end
76
-
77
- def pinned_to_puppetlabs_template_tag?
78
- return false unless template_uri.puppetlabs_template?
79
- return false unless PDK::Util::Git.tag?(template_uri.bare_uri, template_uri.uri_fragment)
80
- return false if latest_template?
81
-
82
- template_uri.uri_fragment == new_template_version
83
- end
84
-
85
- private
86
-
87
- def latest_template?
88
- [PDK::TEMPLATE_REF, 'master', 'main'].include?(template_uri.uri_fragment)
89
- end
90
-
91
- def current_template_version
92
- @current_template_version ||= module_metadata.data['template-ref']
93
- end
94
-
95
- def describe_ref_to_s(describe_ref)
96
- data = GIT_DESCRIBE_PATTERN.match(describe_ref)
97
-
98
- return data if data.nil?
99
-
100
- if data[:base] =~ %r{^(?:heads|remotes)/}
101
- "#{data[:base].gsub(%r{^(heads/|remotes/\w+?/)}, '')}@#{data[:sha]}"
102
- else
103
- data[:base]
104
- end
105
- end
106
-
107
- def fetch_remote_version(template_ref)
108
- return template_ref unless current_template_version.is_a?(String)
109
- return template_ref if template_ref == PDK::TEMPLATE_REF
110
-
111
- sha_length = GIT_DESCRIBE_PATTERN.match(current_template_version)[:sha].length - 1
112
- "#{template_ref}@#{PDK::Util::Git.ls_remote(template_uri.bare_uri, template_ref)[0..sha_length]}"
113
- end
114
-
115
- def update_message
116
- format_string = if template_uri.default?
117
- _('Updating %{module_name} using the default template, from %{current_version} to %{new_version}')
118
- else
119
- _('Updating %{module_name} using the template at %{template_url}, from %{current_version} to %{new_version}')
120
- end
121
-
122
- format_string % {
123
- module_name: module_metadata.data['name'],
124
- template_url: template_uri.bare_uri,
125
- current_version: current_version,
126
- new_version: new_version,
127
- }
128
- end
129
- end
130
- end
131
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module Module
5
+ class Update < Convert
6
+ GIT_DESCRIBE_PATTERN = %r{\A(?<base>.+?)-(?<additional_commits>\d+)-g(?<sha>.+)\Z}
7
+
8
+ def run
9
+ template_uri.uri_fragment = new_template_version
10
+
11
+ stage_changes!
12
+
13
+ if current_version == new_version
14
+ PDK.logger.debug _('This module is already up to date with version %{version} of the template.') % {
15
+ version: new_version,
16
+ }
17
+ end
18
+
19
+ unless update_manager.changes?
20
+ PDK::Report.default_target.puts(_('No changes required.'))
21
+ return
22
+ end
23
+
24
+ PDK.logger.info(update_message)
25
+
26
+ print_summary
27
+ full_report('update_report.txt') unless update_manager.changes[:modified].empty?
28
+
29
+ return if noop?
30
+
31
+ unless force?
32
+ message = _('Do you want to continue and make these changes to your module?')
33
+ return unless PDK::CLI::Util.prompt_for_yes(message)
34
+ end
35
+
36
+ # Remove these files straight away as these changes are not something
37
+ # that the user needs to review.
38
+ update_manager.unlink_file('Gemfile.lock')
39
+ update_manager.unlink_file(File.join('.bundle', 'config'))
40
+
41
+ update_manager.sync_changes!
42
+
43
+ require 'pdk/util/bundler'
44
+ PDK::Util::Bundler.ensure_bundle!
45
+
46
+ print_result 'Update completed'
47
+ end
48
+
49
+ def module_metadata
50
+ @module_metadata ||= PDK::Module::Metadata.from_file(File.join(module_dir, 'metadata.json'))
51
+ rescue ArgumentError => e
52
+ raise PDK::CLI::ExitWithError, e.message
53
+ end
54
+
55
+ def template_uri
56
+ @template_uri ||= PDK::Util::TemplateURI.new(module_metadata.data['template-url'])
57
+ end
58
+
59
+ def current_version
60
+ @current_version ||= describe_ref_to_s(current_template_version)
61
+ end
62
+
63
+ def new_version
64
+ @new_version ||= fetch_remote_version(new_template_version)
65
+ end
66
+
67
+ def new_template_version
68
+ return options[:'template-ref'] if options[:'template-ref']
69
+
70
+ if template_uri.default? && PDK::Util::Git.tag?(template_uri.bare_uri, template_uri.uri_fragment) && PDK::Util.package_install?
71
+ PDK::Util::TemplateURI.default_template_ref
72
+ else
73
+ template_uri.uri_fragment
74
+ end
75
+ end
76
+
77
+ def pinned_to_puppetlabs_template_tag?
78
+ return false unless template_uri.puppetlabs_template?
79
+ return false unless PDK::Util::Git.tag?(template_uri.bare_uri, template_uri.uri_fragment)
80
+ return false if latest_template?
81
+
82
+ template_uri.uri_fragment == new_template_version
83
+ end
84
+
85
+ private
86
+
87
+ def latest_template?
88
+ [PDK::TEMPLATE_REF, 'master', 'main'].include?(template_uri.uri_fragment)
89
+ end
90
+
91
+ def current_template_version
92
+ @current_template_version ||= module_metadata.data['template-ref']
93
+ end
94
+
95
+ def describe_ref_to_s(describe_ref)
96
+ data = GIT_DESCRIBE_PATTERN.match(describe_ref)
97
+
98
+ return data if data.nil?
99
+
100
+ if data[:base] =~ %r{^(?:heads|remotes)/}
101
+ "#{data[:base].gsub(%r{^(heads/|remotes/\w+?/)}, '')}@#{data[:sha]}"
102
+ else
103
+ data[:base]
104
+ end
105
+ end
106
+
107
+ def fetch_remote_version(template_ref)
108
+ return template_ref unless current_template_version.is_a?(String)
109
+ return template_ref if template_ref == PDK::TEMPLATE_REF
110
+
111
+ sha_length = GIT_DESCRIBE_PATTERN.match(current_template_version)[:sha].length - 1
112
+ "#{template_ref}@#{PDK::Util::Git.ls_remote(template_uri.bare_uri, template_ref)[0..sha_length]}"
113
+ end
114
+
115
+ def update_message
116
+ format_string = if template_uri.default?
117
+ _('Updating %{module_name} using the default template, from %{current_version} to %{new_version}')
118
+ else
119
+ _('Updating %{module_name} using the template at %{template_url}, from %{current_version} to %{new_version}')
120
+ end
121
+
122
+ format_string % {
123
+ module_name: module_metadata.data['name'],
124
+ template_url: template_uri.bare_uri,
125
+ current_version: current_version,
126
+ new_version: new_version,
127
+ }
128
+ end
129
+ end
130
+ end
131
+ end