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,148 +1,148 @@
1
- module PDK::CLI
2
- @console_cmd = @base_cmd.define_command do
3
- name 'console'
4
- usage _('console [console_options]')
5
- summary _('(Experimental) Start a session of the puppet debugger console.')
6
- default_subcommand 'help'
7
- description _(<<-EOF
8
- The pdk console runs a interactive session of the puppet debugger tool to test out snippets of code, run
9
- language evaluations, datatype prototyping and much more. A virtual playground for your puppet code!
10
- For usage details see the puppet debugger docs at https://docs.puppet-debugger.com.
11
-
12
- EOF
13
- )
14
- PDK::CLI.puppet_version_options(self)
15
- PDK::CLI.puppet_dev_option(self)
16
- # we have to skip option parsing because it is expected the user
17
- # will be passing additional args that are passed to the debugger
18
- skip_option_parsing
19
-
20
- # TODO: using -h or --help skips the pdk help and passes to puppet debugger help
21
- run do |_opts, args, _cmd|
22
- require 'pdk/cli/util'
23
- require 'pdk/util'
24
-
25
- PDK::CLI::Util.ensure_in_module!(
26
- message: _('Console can only be run from inside a valid module directory'),
27
- log_level: :fatal,
28
- )
29
-
30
- PDK::CLI::Util.module_version_check
31
-
32
- processed_options, processed_args = process_opts(args)
33
-
34
- PDK::CLI::Util.validate_puppet_version_opts(processed_options)
35
-
36
- PDK::CLI::Util.analytics_screen_view('console', args)
37
-
38
- # TODO: figure out if we need to remove default configs set by puppet
39
- # so it is scoped for the module only
40
- # "--environmentpath"...
41
- flags = if PDK::Util.in_module_root?
42
- ["--basemodulepath=#{base_module_path}",
43
- "--modulepath=#{base_module_path}"]
44
- else
45
- []
46
- end
47
- debugger_args = ['debugger'] + processed_args + flags
48
- result = run_in_module(processed_options, debugger_args)
49
-
50
- exit result[:exit_code]
51
- end
52
-
53
- # Logs a fatal message about the gem missing and how to add it
54
- def inform_user_for_missing_gem(gem_name = 'puppet-debugger', version = '~> 0.14')
55
- PDK.logger.fatal(<<-EOF
56
- Your Gemfile is missing the #{gem_name} gem. You can add the missing gem
57
- by updating your #{File.join(PDK::Util.module_root, '.sync.yml')} file with the following
58
- and running pdk update.
59
-
60
- Gemfile:
61
- required:
62
- ":development":
63
- - gem: #{gem_name}
64
- version: \"#{version}\"
65
-
66
- EOF
67
- )
68
- end
69
-
70
- # @return [Boolean] - true if the gem was found in the lockfile
71
- # @param [String] - name of ruby gem to check in bundle lockfile
72
- def gem_in_bundle_lockfile?(gem_name)
73
- require 'bundler'
74
- require 'pdk/util/bundler'
75
-
76
- lock_file_path = PDK::Util::Bundler::BundleHelper.new.gemfile_lock
77
- PDK.logger.debug("Checking lockfile #{lock_file_path} for #{gem_name}")
78
- lock_file = ::Bundler::LockfileParser.new(::Bundler.read_file(lock_file_path))
79
- !lock_file.specs.find { |spec| spec.name.eql?(gem_name) }.nil?
80
- rescue ::Bundler::GemfileNotFound => e
81
- PDK.logger.debug _(e.message)
82
- false
83
- end
84
-
85
- def check_fixtures_dir
86
- existing_path = base_module_path.split(':').find do |path|
87
- PDK::Util::Filesystem.directory?(path) && Dir.entries(path).length > 2
88
- end
89
- PDK.logger.warn _('Module fixtures not found, please run pdk bundle exec rake spec_prep.') unless existing_path
90
- end
91
-
92
- # @return [Array] - array of split options [{:"puppet-version"=>"6.9.0"}, ['--loglevel=debug']]
93
- # options are for the pdk and debugger pass through
94
- def process_opts(opts)
95
- args = opts.map do |e|
96
- if e =~ %r{\A-{2}puppet|pe\-version|dev}
97
- value = e.split('=')
98
- (value.count < 2) ? value + [''] : value
99
- end
100
- end
101
- args = args.compact.to_h
102
- # symbolize keys
103
- args = args.inject({}) do |memo, (k, v)| # rubocop:disable Style/EachWithObject
104
- memo[k.sub('--', '').to_sym] = v
105
- memo
106
- end
107
- # pass through all other args that are bound for puppet debugger
108
- processed_args = opts.map { |e| e unless e =~ %r{\A-{2}puppet|pe\-version|dev} }.compact
109
- [args, processed_args]
110
- end
111
-
112
- # @param opts [Hash] - the options passed into the CRI command
113
- # @param bundle_args [Array] array of bundle exec args and puppet debugger args
114
- # @return [Hash] - a command result hash
115
- def run_in_module(opts, bundle_args)
116
- require 'pdk/cli/exec'
117
- require 'pdk/cli/exec/interactive_command'
118
- require 'pdk/util/ruby_version'
119
- require 'pdk/util/bundler'
120
-
121
- check_fixtures_dir
122
- output = opts[:debug].nil?
123
- puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts, output)
124
- gemfile_env = PDK::Util::Bundler::BundleHelper.gemfile_env(puppet_env[:gemset])
125
- PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
126
- PDK::Util::RubyVersion.instance(puppet_env[:ruby_version])
127
- PDK::Util::Bundler.ensure_bundle!(puppet_env[:gemset])
128
- unless gem_in_bundle_lockfile?('puppet-debugger')
129
- inform_user_for_missing_gem
130
- return { exit_code: 1 }
131
- end
132
-
133
- debugger_args = %w[exec puppet] + bundle_args
134
- command = PDK::CLI::Exec::InteractiveCommand.new(PDK::CLI::Exec.bundle_bin, *debugger_args).tap do |c|
135
- c.context = :pwd
136
- c.update_environment(gemfile_env)
137
- end
138
- command.execute!
139
- end
140
-
141
- # @return [String] - the basemodulepath of the fixtures and modules from the current module
142
- # also includes ./modules in case librarian puppet is used
143
- def base_module_path
144
- base_module_path = File.join(PDK::Util.module_fixtures_dir, 'modules')
145
- "#{base_module_path}:#{File.join(PDK::Util.module_root, 'modules')}"
146
- end
147
- end
148
- end
1
+ module PDK::CLI
2
+ @console_cmd = @base_cmd.define_command do
3
+ name 'console'
4
+ usage _('console [console_options]')
5
+ summary _('(Experimental) Start a session of the puppet debugger console.')
6
+ default_subcommand 'help'
7
+ description _(<<-EOF
8
+ The pdk console runs a interactive session of the puppet debugger tool to test out snippets of code, run
9
+ language evaluations, datatype prototyping and much more. A virtual playground for your puppet code!
10
+ For usage details see the puppet debugger docs at https://docs.puppet-debugger.com.
11
+
12
+ EOF
13
+ )
14
+ PDK::CLI.puppet_version_options(self)
15
+ PDK::CLI.puppet_dev_option(self)
16
+ # we have to skip option parsing because it is expected the user
17
+ # will be passing additional args that are passed to the debugger
18
+ skip_option_parsing
19
+
20
+ # TODO: using -h or --help skips the pdk help and passes to puppet debugger help
21
+ run do |_opts, args, _cmd|
22
+ require 'pdk/cli/util'
23
+ require 'pdk/util'
24
+
25
+ PDK::CLI::Util.ensure_in_module!(
26
+ message: _('Console can only be run from inside a valid module directory'),
27
+ log_level: :fatal,
28
+ )
29
+
30
+ PDK::CLI::Util.module_version_check
31
+
32
+ processed_options, processed_args = process_opts(args)
33
+
34
+ PDK::CLI::Util.validate_puppet_version_opts(processed_options)
35
+
36
+ PDK::CLI::Util.analytics_screen_view('console', args)
37
+
38
+ # TODO: figure out if we need to remove default configs set by puppet
39
+ # so it is scoped for the module only
40
+ # "--environmentpath"...
41
+ flags = if PDK::Util.in_module_root?
42
+ ["--basemodulepath=#{base_module_path}",
43
+ "--modulepath=#{base_module_path}"]
44
+ else
45
+ []
46
+ end
47
+ debugger_args = ['debugger'] + processed_args + flags
48
+ result = run_in_module(processed_options, debugger_args)
49
+
50
+ exit result[:exit_code]
51
+ end
52
+
53
+ # Logs a fatal message about the gem missing and how to add it
54
+ def inform_user_for_missing_gem(gem_name = 'puppet-debugger', version = '~> 0.14')
55
+ PDK.logger.fatal(<<-EOF
56
+ Your Gemfile is missing the #{gem_name} gem. You can add the missing gem
57
+ by updating your #{File.join(PDK::Util.module_root, '.sync.yml')} file with the following
58
+ and running pdk update.
59
+
60
+ Gemfile:
61
+ required:
62
+ ":development":
63
+ - gem: #{gem_name}
64
+ version: \"#{version}\"
65
+
66
+ EOF
67
+ )
68
+ end
69
+
70
+ # @return [Boolean] - true if the gem was found in the lockfile
71
+ # @param [String] - name of ruby gem to check in bundle lockfile
72
+ def gem_in_bundle_lockfile?(gem_name)
73
+ require 'bundler'
74
+ require 'pdk/util/bundler'
75
+
76
+ lock_file_path = PDK::Util::Bundler::BundleHelper.new.gemfile_lock
77
+ PDK.logger.debug("Checking lockfile #{lock_file_path} for #{gem_name}")
78
+ lock_file = ::Bundler::LockfileParser.new(::Bundler.read_file(lock_file_path))
79
+ !lock_file.specs.find { |spec| spec.name.eql?(gem_name) }.nil?
80
+ rescue ::Bundler::GemfileNotFound => e
81
+ PDK.logger.debug _(e.message)
82
+ false
83
+ end
84
+
85
+ def check_fixtures_dir
86
+ existing_path = base_module_path.split(':').find do |path|
87
+ PDK::Util::Filesystem.directory?(path) && Dir.entries(path).length > 2
88
+ end
89
+ PDK.logger.warn _('Module fixtures not found, please run pdk bundle exec rake spec_prep.') unless existing_path
90
+ end
91
+
92
+ # @return [Array] - array of split options [{:"puppet-version"=>"6.9.0"}, ['--loglevel=debug']]
93
+ # options are for the pdk and debugger pass through
94
+ def process_opts(opts)
95
+ args = opts.map do |e|
96
+ if e =~ %r{\A-{2}puppet|pe\-version|dev}
97
+ value = e.split('=')
98
+ (value.count < 2) ? value + [''] : value
99
+ end
100
+ end
101
+ args = args.compact.to_h
102
+ # symbolize keys
103
+ args = args.inject({}) do |memo, (k, v)| # rubocop:disable Style/EachWithObject
104
+ memo[k.sub('--', '').to_sym] = v
105
+ memo
106
+ end
107
+ # pass through all other args that are bound for puppet debugger
108
+ processed_args = opts.map { |e| e unless e =~ %r{\A-{2}puppet|pe\-version|dev} }.compact
109
+ [args, processed_args]
110
+ end
111
+
112
+ # @param opts [Hash] - the options passed into the CRI command
113
+ # @param bundle_args [Array] array of bundle exec args and puppet debugger args
114
+ # @return [Hash] - a command result hash
115
+ def run_in_module(opts, bundle_args)
116
+ require 'pdk/cli/exec'
117
+ require 'pdk/cli/exec/interactive_command'
118
+ require 'pdk/util/ruby_version'
119
+ require 'pdk/util/bundler'
120
+
121
+ check_fixtures_dir
122
+ output = opts[:debug].nil?
123
+ puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts, output)
124
+ gemfile_env = PDK::Util::Bundler::BundleHelper.gemfile_env(puppet_env[:gemset])
125
+ PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
126
+ PDK::Util::RubyVersion.instance(puppet_env[:ruby_version])
127
+ PDK::Util::Bundler.ensure_bundle!(puppet_env[:gemset])
128
+ unless gem_in_bundle_lockfile?('puppet-debugger')
129
+ inform_user_for_missing_gem
130
+ return { exit_code: 1 }
131
+ end
132
+
133
+ debugger_args = %w[exec puppet] + bundle_args
134
+ command = PDK::CLI::Exec::InteractiveCommand.new(PDK::CLI::Exec.bundle_bin, *debugger_args).tap do |c|
135
+ c.context = :pwd
136
+ c.update_environment(gemfile_env)
137
+ end
138
+ command.execute!
139
+ end
140
+
141
+ # @return [String] - the basemodulepath of the fixtures and modules from the current module
142
+ # also includes ./modules in case librarian puppet is used
143
+ def base_module_path
144
+ base_module_path = File.join(PDK::Util.module_fixtures_dir, 'modules')
145
+ "#{base_module_path}:#{File.join(PDK::Util.module_root, 'modules')}"
146
+ end
147
+ end
148
+ end
@@ -1,52 +1,52 @@
1
- module PDK::CLI
2
- @convert_cmd = @base_cmd.define_command do
3
- name 'convert'
4
- usage _('convert [options]')
5
- summary _('Convert an existing module to be compatible with the PDK.')
6
-
7
- PDK::CLI.template_url_option(self)
8
- PDK::CLI.template_ref_option(self)
9
- PDK::CLI.skip_interview_option(self)
10
- PDK::CLI.full_interview_option(self)
11
- flag nil, :noop, _('Do not convert the module, just output what would be done.')
12
- flag nil, :force, _('Convert the module automatically, with no prompts.')
13
- flag nil, :'add-tests', _('Add any missing tests while converting the module.')
14
- flag nil, :'default-template', _('Convert the module to use the default PDK template.')
15
-
16
- run do |opts, _args, _cmd|
17
- # Write the context information to the debug log
18
- PDK.context.to_debug_log
19
-
20
- unless PDK.context.is_a?(PDK::Context::Module)
21
- raise PDK::CLI::ExitWithError, _('`pdk convert` can only be run from inside a valid module directory.')
22
- end
23
-
24
- if opts[:noop] && opts[:force]
25
- raise PDK::CLI::ExitWithError, _('You can not specify --noop and --force when converting a module')
26
- end
27
-
28
- if opts[:'default-template']
29
- raise PDK::CLI::ExitWithError, _('You can not specify --template-url and --default-template.') if opts[:'template-url']
30
-
31
- opts[:'template-url'] = PDK::Util::TemplateURI.default_template_addressable_uri.to_s
32
- PDK.config.set(%w[user module_defaults template-url], nil)
33
- end
34
-
35
- PDK::CLI::Util.validate_template_opts(opts)
36
-
37
- PDK::CLI::Util.analytics_screen_view('convert', opts)
38
-
39
- if opts[:'skip-interview'] && opts[:'full-interview']
40
- PDK.logger.info _('Ignoring --full-interview and continuing with --skip-interview.')
41
- opts[:'full-interview'] = false
42
- end
43
-
44
- if opts[:force] && opts[:'full-interview']
45
- PDK.logger.info _('Ignoring --full-interview and continuing with --force.')
46
- opts[:'full-interview'] = false
47
- end
48
-
49
- PDK::Module::Convert.invoke(PDK.context.root_path, opts)
50
- end
51
- end
52
- end
1
+ module PDK::CLI
2
+ @convert_cmd = @base_cmd.define_command do
3
+ name 'convert'
4
+ usage _('convert [options]')
5
+ summary _('Convert an existing module to be compatible with the PDK.')
6
+
7
+ PDK::CLI.template_url_option(self)
8
+ PDK::CLI.template_ref_option(self)
9
+ PDK::CLI.skip_interview_option(self)
10
+ PDK::CLI.full_interview_option(self)
11
+ flag nil, :noop, _('Do not convert the module, just output what would be done.')
12
+ flag nil, :force, _('Convert the module automatically, with no prompts.')
13
+ flag nil, :'add-tests', _('Add any missing tests while converting the module.')
14
+ flag nil, :'default-template', _('Convert the module to use the default PDK template.')
15
+
16
+ run do |opts, _args, _cmd|
17
+ # Write the context information to the debug log
18
+ PDK.context.to_debug_log
19
+
20
+ unless PDK.context.is_a?(PDK::Context::Module)
21
+ raise PDK::CLI::ExitWithError, _('`pdk convert` can only be run from inside a valid module directory.')
22
+ end
23
+
24
+ if opts[:noop] && opts[:force]
25
+ raise PDK::CLI::ExitWithError, _('You can not specify --noop and --force when converting a module')
26
+ end
27
+
28
+ if opts[:'default-template']
29
+ raise PDK::CLI::ExitWithError, _('You can not specify --template-url and --default-template.') if opts[:'template-url']
30
+
31
+ opts[:'template-url'] = PDK::Util::TemplateURI.default_template_addressable_uri.to_s
32
+ PDK.config.set(%w[user module_defaults template-url], nil)
33
+ end
34
+
35
+ PDK::CLI::Util.validate_template_opts(opts)
36
+
37
+ PDK::CLI::Util.analytics_screen_view('convert', opts)
38
+
39
+ if opts[:'skip-interview'] && opts[:'full-interview']
40
+ PDK.logger.info _('Ignoring --full-interview and continuing with --skip-interview.')
41
+ opts[:'full-interview'] = false
42
+ end
43
+
44
+ if opts[:force] && opts[:'full-interview']
45
+ PDK.logger.info _('Ignoring --full-interview and continuing with --force.')
46
+ opts[:'full-interview'] = false
47
+ end
48
+
49
+ PDK::Module::Convert.invoke(PDK.context.root_path, opts)
50
+ end
51
+ end
52
+ end
data/lib/pdk/cli/env.rb CHANGED
@@ -1,52 +1,52 @@
1
- module PDK::CLI
2
- @env_cmd = @base_cmd.define_command do
3
- name 'env'
4
- usage _('env')
5
- summary _('(Experimental) Output environment variables for specific Puppet context')
6
- description _(<<-EOF
7
- [experimental] Aids in setting a CLI context for a specified version of Puppet by outputting export commands for necessary environment variables.
8
- EOF
9
- )
10
-
11
- PDK::CLI.puppet_version_options(self)
12
- PDK::CLI.puppet_dev_option(self)
13
-
14
- run do |opts, _args, _cmd|
15
- require 'pdk/util'
16
- require 'pdk/util/ruby_version'
17
-
18
- PDK::CLI::Util.validate_puppet_version_opts(opts)
19
-
20
- PDK::CLI::Util.analytics_screen_view('env')
21
-
22
- # Ensure that the correct Ruby is activated before running command.
23
- puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts)
24
- PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
25
-
26
- resolved_env = {
27
- 'PDK_RESOLVED_PUPPET_VERSION' => puppet_env[:gemset][:puppet],
28
- 'PDK_RESOLVED_RUBY_VERSION' => puppet_env[:ruby_version],
29
- }
30
-
31
- resolved_env['GEM_HOME'] = PDK::Util::RubyVersion.gem_home
32
- gem_path = PDK::Util::RubyVersion.gem_path
33
- resolved_env['GEM_PATH'] = gem_path.empty? ? resolved_env['GEM_HOME'] : gem_path
34
-
35
- # Make sure invocation of Ruby prefers our private installation.
36
- package_binpath = PDK::Util.package_install? ? File.join(PDK::Util.pdk_package_basedir, 'bin') : nil
37
-
38
- resolved_env['PATH'] = [
39
- PDK::Util::RubyVersion.bin_path,
40
- File.join(resolved_env['GEM_HOME'], 'bin'),
41
- PDK::Util::RubyVersion.gem_paths_raw.map { |gem_path_raw| File.join(gem_path_raw, 'bin') },
42
- package_binpath,
43
- PDK::Util::Env['PATH'],
44
- ].compact.flatten.join(File::PATH_SEPARATOR)
45
-
46
- resolved_env.each do |var, val|
47
- puts "export #{var}=\"#{val}\""
48
- end
49
- exit 0
50
- end
51
- end
52
- end
1
+ module PDK::CLI
2
+ @env_cmd = @base_cmd.define_command do
3
+ name 'env'
4
+ usage _('env')
5
+ summary _('(Experimental) Output environment variables for specific Puppet context')
6
+ description _(<<-EOF
7
+ [experimental] Aids in setting a CLI context for a specified version of Puppet by outputting export commands for necessary environment variables.
8
+ EOF
9
+ )
10
+
11
+ PDK::CLI.puppet_version_options(self)
12
+ PDK::CLI.puppet_dev_option(self)
13
+
14
+ run do |opts, _args, _cmd|
15
+ require 'pdk/util'
16
+ require 'pdk/util/ruby_version'
17
+
18
+ PDK::CLI::Util.validate_puppet_version_opts(opts)
19
+
20
+ PDK::CLI::Util.analytics_screen_view('env')
21
+
22
+ # Ensure that the correct Ruby is activated before running command.
23
+ puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts)
24
+ PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
25
+
26
+ resolved_env = {
27
+ 'PDK_RESOLVED_PUPPET_VERSION' => puppet_env[:gemset][:puppet],
28
+ 'PDK_RESOLVED_RUBY_VERSION' => puppet_env[:ruby_version],
29
+ }
30
+
31
+ resolved_env['GEM_HOME'] = PDK::Util::RubyVersion.gem_home
32
+ gem_path = PDK::Util::RubyVersion.gem_path
33
+ resolved_env['GEM_PATH'] = gem_path.empty? ? resolved_env['GEM_HOME'] : gem_path
34
+
35
+ # Make sure invocation of Ruby prefers our private installation.
36
+ package_binpath = PDK::Util.package_install? ? File.join(PDK::Util.pdk_package_basedir, 'bin') : nil
37
+
38
+ resolved_env['PATH'] = [
39
+ PDK::Util::RubyVersion.bin_path,
40
+ File.join(resolved_env['GEM_HOME'], 'bin'),
41
+ PDK::Util::RubyVersion.gem_paths_raw.map { |gem_path_raw| File.join(gem_path_raw, 'bin') },
42
+ package_binpath,
43
+ PDK::Util::Env['PATH'],
44
+ ].compact.flatten.join(File::PATH_SEPARATOR)
45
+
46
+ resolved_env.each do |var, val|
47
+ puts "export #{var}=\"#{val}\""
48
+ end
49
+ exit 0
50
+ end
51
+ end
52
+ end
@@ -1,25 +1,25 @@
1
- require 'pdk'
2
-
3
- module PDK
4
- module CLI
5
- class FatalError < StandardError
6
- attr_reader :exit_code
7
-
8
- def initialize(msg = _('An unexpected error has occurred. Try running the command again with --debug'), opts = {})
9
- @exit_code = opts.fetch(:exit_code, 1)
10
- super(msg)
11
- end
12
- end
13
-
14
- class ExitWithError < StandardError
15
- attr_reader :exit_code
16
- attr_reader :log_level
17
-
18
- def initialize(msg, opts = {})
19
- @exit_code = opts.fetch(:exit_code, 1)
20
- @log_level = opts.fetch(:log_level, :error)
21
- super(msg)
22
- end
23
- end
24
- end
25
- end
1
+ require 'pdk'
2
+
3
+ module PDK
4
+ module CLI
5
+ class FatalError < StandardError
6
+ attr_reader :exit_code
7
+
8
+ def initialize(msg = _('An unexpected error has occurred. Try running the command again with --debug'), opts = {})
9
+ @exit_code = opts.fetch(:exit_code, 1)
10
+ super(msg)
11
+ end
12
+ end
13
+
14
+ class ExitWithError < StandardError
15
+ attr_reader :exit_code
16
+ attr_reader :log_level
17
+
18
+ def initialize(msg, opts = {})
19
+ @exit_code = opts.fetch(:exit_code, 1)
20
+ @log_level = opts.fetch(:log_level, :error)
21
+ super(msg)
22
+ end
23
+ end
24
+ end
25
+ end