pdk 3.0.1 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +37 -1
- data/lib/pdk/cli/build.rb +6 -5
- data/lib/pdk/cli/bundle.rb +0 -2
- data/lib/pdk/cli/console.rb +0 -2
- data/lib/pdk/cli/convert.rb +3 -3
- data/lib/pdk/cli/env.rb +0 -2
- data/lib/pdk/cli/exec/command.rb +0 -2
- data/lib/pdk/cli/new/class.rb +0 -2
- data/lib/pdk/cli/new/defined_type.rb +0 -2
- data/lib/pdk/cli/new/fact.rb +0 -2
- data/lib/pdk/cli/new/function.rb +0 -2
- data/lib/pdk/cli/new/module.rb +0 -2
- data/lib/pdk/cli/new/provider.rb +0 -2
- data/lib/pdk/cli/new/task.rb +0 -2
- data/lib/pdk/cli/new/test.rb +0 -2
- data/lib/pdk/cli/release/prep.rb +0 -2
- data/lib/pdk/cli/release/publish.rb +0 -2
- data/lib/pdk/cli/release.rb +0 -9
- data/lib/pdk/cli/test/unit.rb +0 -2
- data/lib/pdk/cli/update.rb +3 -3
- data/lib/pdk/cli/util.rb +0 -38
- data/lib/pdk/cli/validate.rb +0 -7
- data/lib/pdk/cli.rb +0 -2
- data/lib/pdk/config/namespace.rb +3 -3
- data/lib/pdk/config/setting.rb +3 -3
- data/lib/pdk/config.rb +0 -80
- data/lib/pdk/module/convert.rb +8 -3
- data/lib/pdk/module/metadata.rb +18 -10
- data/lib/pdk/module/release.rb +9 -6
- data/lib/pdk/module/update_manager.rb +29 -3
- data/lib/pdk/report/event.rb +1 -1
- data/lib/pdk/template/renderer/v1/legacy_template_dir.rb +10 -13
- data/lib/pdk/template/renderer/v1/renderer.rb +3 -1
- data/lib/pdk/template.rb +0 -3
- data/lib/pdk/tests/unit.rb +3 -3
- data/lib/pdk/util/filesystem.rb +10 -0
- data/lib/pdk/util.rb +1 -0
- data/lib/pdk/version.rb +2 -2
- data/lib/pdk.rb +0 -14
- metadata +63 -98
- data/lib/pdk/analytics/client/google_analytics.rb +0 -141
- data/lib/pdk/analytics/client/noop.rb +0 -25
- data/lib/pdk/analytics/util.rb +0 -18
- data/lib/pdk/analytics.rb +0 -30
- data/lib/pdk/config/analytics_schema.json +0 -26
- data/lib/pdk/module/build.rb +0 -302
- data/lib/pdk/monkey_patches.rb +0 -268
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ea7fd13c13423022b2ef3e28275d98860b34b9afe9d4b5ccac56c06a0a29346
|
4
|
+
data.tar.gz: 5025806f00ad6d9b36bb0957d8da65765cc46cd335c11ef75cf3b82f88a61e79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3b2866a2a221d87d7c87ecc15231b0a97b00bce150cdd97fd6a6a1ee99f36d9ead2fcee2aef644360aaef84e499f1adff1cdb8de9a10ec084ac302743255a6a
|
7
|
+
data.tar.gz: e4fbd9517b238b85d55c59df0a838f831ac1033e84ec2daa96487470f91e1c5954bf96208b223311ab8c8e4c00bc3150570094017576d7e1ffb105c57f2f2eff
|
data/CHANGELOG.md
CHANGED
@@ -5,7 +5,43 @@ All notable changes to this project will be documented in this file.
|
|
5
5
|
|
6
6
|
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org).
|
7
7
|
|
8
|
-
## [v3.0
|
8
|
+
## [v3.3.0](https://github.com/puppetlabs/pdk/tree/v3.3.0) - 2024-09-10
|
9
|
+
|
10
|
+
[Full Changelog](https://github.com/puppetlabs/pdk/compare/v3.2.0...v3.3.0)
|
11
|
+
|
12
|
+
## Added
|
13
|
+
|
14
|
+
- Skip 'name' validation when in a controlrepo context [#1352](https://github.com/puppetlabs/pdk/pull/1352) ([garrettrowell](https://github.com/garrettrowell))
|
15
|
+
- (CAT-1896) - Use puppet-modulebuilder for PDK build [#1374](https://github.com/puppetlabs/pdk/pull/1374) ([jordanbreen28](https://github.com/jordanbreen28))
|
16
|
+
|
17
|
+
### Fixed
|
18
|
+
|
19
|
+
- (CAT-1643) Update childprocess and remove patch [#1356](https://github.com/puppetlabs/pdk/pull/1356) ([david22swan](https://github.com/david22swan))
|
20
|
+
- (CAT-2026) Update how pdk test unit --list detects an error [#1388](https://github.com/puppetlabs/pdk/pull/1388) ([david22swan](https://github.com/david22swan))
|
21
|
+
|
22
|
+
## [v3.2.0](https://github.com/puppetlabs/pdk/tree/v3.2.0) - 2024-05-02
|
23
|
+
|
24
|
+
[Full Changelog](https://github.com/puppetlabs/pdk/compare/v3.1.0...v3.2.0)
|
25
|
+
|
26
|
+
### Fixed
|
27
|
+
|
28
|
+
- (CAT-1807) Remove analytics from the PDK [#1339](https://github.com/puppetlabs/pdk/pull/1339) ([david22swan](https://github.com/david22swan))
|
29
|
+
|
30
|
+
## [v3.1.0](https://github.com/puppetlabs/pdk/tree/v3.1.0) - 2024-04-11
|
31
|
+
|
32
|
+
[Full Changelog](https://github.com/puppetlabs/pdk/compare/v3.0.1...v3.1.0)
|
33
|
+
|
34
|
+
### Added
|
35
|
+
|
36
|
+
- Allow `pdk convert` and `pdk update` to work in a ControlRepo context [#1310](https://github.com/puppetlabs/pdk/pull/1310) ([garrettrowell](https://github.com/garrettrowell))
|
37
|
+
- Support executable templates [#1289](https://github.com/puppetlabs/pdk/pull/1289) ([nabertrand](https://github.com/nabertrand))
|
38
|
+
|
39
|
+
### Fixed
|
40
|
+
|
41
|
+
- (CAT-1796) Fix missing locale gem [#1337](https://github.com/puppetlabs/pdk/pull/1337) ([LukasAud](https://github.com/LukasAud))
|
42
|
+
- (CAT-1703) Convert concurrent-ruby from a pin to a pessimistic constraint [#1312](https://github.com/puppetlabs/pdk/pull/1312) ([david22swan](https://github.com/david22swan))
|
43
|
+
|
44
|
+
## [v3.0.1](https://github.com/puppetlabs/pdk/tree/v3.0.1) - 2023-12-13
|
9
45
|
|
10
46
|
[Full Changelog](https://github.com/puppetlabs/pdk/compare/v3.0.0...v3.0.1)
|
11
47
|
|
data/lib/pdk/cli/build.rb
CHANGED
@@ -12,7 +12,6 @@ module PDK
|
|
12
12
|
option nil, 'force', 'Skips the prompts and builds the module package.'
|
13
13
|
|
14
14
|
run do |opts, _args, _cmd|
|
15
|
-
require 'pdk/module/build'
|
16
15
|
require 'pdk/module/metadata'
|
17
16
|
require 'pdk/cli/util'
|
18
17
|
|
@@ -22,8 +21,6 @@ module PDK
|
|
22
21
|
log_level: :info
|
23
22
|
)
|
24
23
|
|
25
|
-
PDK::CLI::Util.analytics_screen_view('build', opts)
|
26
|
-
|
27
24
|
module_metadata = PDK::Module::Metadata.from_file('metadata.json')
|
28
25
|
|
29
26
|
# TODO: Ensure forge metadata has been set, or call out to interview
|
@@ -39,7 +36,11 @@ module PDK
|
|
39
36
|
end
|
40
37
|
end
|
41
38
|
|
42
|
-
|
39
|
+
# build module
|
40
|
+
require 'puppet/modulebuilder'
|
41
|
+
module_dir = PDK::Util::Filesystem.expand_path(Dir.pwd)
|
42
|
+
target_dir = PDK::Util::Filesystem.expand_path(opts[:'target-dir'])
|
43
|
+
builder = Puppet::Modulebuilder::Builder.new(module_dir, target_dir, PDK.logger)
|
43
44
|
|
44
45
|
unless opts[:force]
|
45
46
|
if builder.package_already_exists?
|
@@ -51,7 +52,7 @@ module PDK
|
|
51
52
|
end
|
52
53
|
end
|
53
54
|
|
54
|
-
unless
|
55
|
+
unless PDK::Util.module_pdk_compatible?(module_dir)
|
55
56
|
PDK.logger.info 'This module is not compatible with PDK, so PDK can not validate or test this build. ' \
|
56
57
|
'Unvalidated modules may have errors when uploading to the Forge. ' \
|
57
58
|
'To make this module PDK compatible and use validate features, cancel the build and run `pdk convert`.'
|
data/lib/pdk/cli/bundle.rb
CHANGED
@@ -23,8 +23,6 @@ module PDK
|
|
23
23
|
screen_view_name << args[0] if args.size >= 1
|
24
24
|
screen_view_name << args[1] if args.size >= 2 && args[0] == 'exec'
|
25
25
|
|
26
|
-
PDK::CLI::Util.analytics_screen_view(screen_view_name.join('_'))
|
27
|
-
|
28
26
|
# Ensure that the correct Ruby is activated before running command.
|
29
27
|
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env({})
|
30
28
|
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
data/lib/pdk/cli/console.rb
CHANGED
@@ -34,8 +34,6 @@ module PDK
|
|
34
34
|
|
35
35
|
PDK::CLI::Util.validate_puppet_version_opts(processed_options)
|
36
36
|
|
37
|
-
PDK::CLI::Util.analytics_screen_view('console', args)
|
38
|
-
|
39
37
|
# TODO: figure out if we need to remove default configs set by puppet
|
40
38
|
# so it is scoped for the module only
|
41
39
|
# "--environmentpath"...
|
data/lib/pdk/cli/convert.rb
CHANGED
@@ -18,7 +18,9 @@ module PDK
|
|
18
18
|
# Write the context information to the debug log
|
19
19
|
PDK.context.to_debug_log
|
20
20
|
|
21
|
-
|
21
|
+
unless PDK.context.is_a?(PDK::Context::Module) || PDK.context.is_a?(PDK::Context::ControlRepo)
|
22
|
+
raise PDK::CLI::ExitWithError, '`pdk convert` can only be run from inside a valid module directory.'
|
23
|
+
end
|
22
24
|
|
23
25
|
raise PDK::CLI::ExitWithError, 'You can not specify --noop and --force when converting a module' if opts[:noop] && opts[:force]
|
24
26
|
|
@@ -31,8 +33,6 @@ module PDK
|
|
31
33
|
|
32
34
|
PDK::CLI::Util.validate_template_opts(opts)
|
33
35
|
|
34
|
-
PDK::CLI::Util.analytics_screen_view('convert', opts)
|
35
|
-
|
36
36
|
if opts[:'skip-interview'] && opts[:'full-interview']
|
37
37
|
PDK.logger.info 'Ignoring --full-interview and continuing with --skip-interview.'
|
38
38
|
opts[:'full-interview'] = false
|
data/lib/pdk/cli/env.rb
CHANGED
@@ -17,8 +17,6 @@ module PDK
|
|
17
17
|
|
18
18
|
PDK::CLI::Util.validate_puppet_version_opts(opts)
|
19
19
|
|
20
|
-
PDK::CLI::Util.analytics_screen_view('env')
|
21
|
-
|
22
20
|
# Ensure that the correct Ruby is activated before running command.
|
23
21
|
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts)
|
24
22
|
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
data/lib/pdk/cli/exec/command.rb
CHANGED
data/lib/pdk/cli/new/class.rb
CHANGED
@@ -22,8 +22,6 @@ module PDK
|
|
22
22
|
|
23
23
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid class name", name: class_name) unless Util::OptionValidator.valid_class_name?(class_name)
|
24
24
|
|
25
|
-
PDK::CLI::Util.analytics_screen_view('new_class', opts)
|
26
|
-
|
27
25
|
updates = PDK::Generate::PuppetClass.new(PDK.context, class_name, opts).run
|
28
26
|
PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
|
29
27
|
end
|
@@ -20,8 +20,6 @@ module PDK
|
|
20
20
|
|
21
21
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid defined type name", name: defined_type_name) unless Util::OptionValidator.valid_defined_type_name?(defined_type_name)
|
22
22
|
|
23
|
-
PDK::CLI::Util.analytics_screen_view('new_defined_type', opts)
|
24
|
-
|
25
23
|
require 'pdk/generate/defined_type'
|
26
24
|
|
27
25
|
updates = PDK::Generate::DefinedType.new(PDK.context, defined_type_name, opts).run
|
data/lib/pdk/cli/new/fact.rb
CHANGED
@@ -17,8 +17,6 @@ module PDK
|
|
17
17
|
|
18
18
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid fact name", name: fact_name) unless Util::OptionValidator.valid_fact_name?(fact_name)
|
19
19
|
|
20
|
-
PDK::CLI::Util.analytics_screen_view('new_fact', opts)
|
21
|
-
|
22
20
|
require 'pdk/generate/fact'
|
23
21
|
|
24
22
|
updates = PDK::Generate::Fact.new(PDK.context, fact_name, opts).run
|
data/lib/pdk/cli/new/function.rb
CHANGED
@@ -18,8 +18,6 @@ module PDK
|
|
18
18
|
|
19
19
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid function name", name: function_name) unless Util::OptionValidator.valid_function_name?(function_name)
|
20
20
|
|
21
|
-
PDK::CLI::Util.analytics_screen_view('new_function', opts)
|
22
|
-
|
23
21
|
require 'pdk/generate/function'
|
24
22
|
updates = PDK::Generate::Function.new(PDK.context, function_name, opts).run
|
25
23
|
PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
|
data/lib/pdk/cli/new/module.rb
CHANGED
@@ -22,8 +22,6 @@ module PDK
|
|
22
22
|
|
23
23
|
PDK::CLI::Util.validate_template_opts(opts)
|
24
24
|
|
25
|
-
PDK::CLI::Util.analytics_screen_view('new_module', opts)
|
26
|
-
|
27
25
|
if opts[:'skip-interview'] && opts[:'full-interview']
|
28
26
|
PDK.logger.info 'Ignoring --full-interview and continuing with --skip-interview.'
|
29
27
|
opts[:'full-interview'] = false
|
data/lib/pdk/cli/new/provider.rb
CHANGED
@@ -17,8 +17,6 @@ module PDK
|
|
17
17
|
|
18
18
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid provider name", name: provider_name) unless Util::OptionValidator.valid_provider_name?(provider_name)
|
19
19
|
|
20
|
-
PDK::CLI::Util.analytics_screen_view('new_provider', opts)
|
21
|
-
|
22
20
|
require 'pdk/generate/provider'
|
23
21
|
|
24
22
|
updates = PDK::Generate::Provider.new(PDK.context, provider_name, opts).run
|
data/lib/pdk/cli/new/task.rb
CHANGED
@@ -24,8 +24,6 @@ module PDK
|
|
24
24
|
|
25
25
|
raise PDK::CLI::ExitWithError, format("'%{name}' is not a valid task name", name: task_name) unless Util::OptionValidator.valid_task_name?(task_name)
|
26
26
|
|
27
|
-
PDK::CLI::Util.analytics_screen_view('new_task', opts)
|
28
|
-
|
29
27
|
updates = PDK::Generate::Task.new(PDK.context, task_name, opts).run
|
30
28
|
PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
|
31
29
|
end
|
data/lib/pdk/cli/new/test.rb
CHANGED
@@ -39,8 +39,6 @@ module PDK
|
|
39
39
|
begin
|
40
40
|
generator, obj = PDK::Util::PuppetStrings.find_object(object_name)
|
41
41
|
|
42
|
-
PDK::CLI::Util.analytics_screen_view('new_test', opts)
|
43
|
-
|
44
42
|
updates = generator.new(PDK.context, obj['name'], opts.merge(spec_only: true)).run
|
45
43
|
PDK::CLI::Util::UpdateManagerPrinter.print_summary(updates, tense: :past)
|
46
44
|
rescue PDK::Util::PuppetStrings::NoObjectError
|
data/lib/pdk/cli/release/prep.rb
CHANGED
data/lib/pdk/cli/release.rb
CHANGED
@@ -3,7 +3,6 @@ require 'pdk/validate'
|
|
3
3
|
require 'pdk/util/bundler'
|
4
4
|
require 'pdk/cli/util/interview'
|
5
5
|
require 'pdk/util/changelog_generator'
|
6
|
-
require 'pdk/module/build'
|
7
6
|
|
8
7
|
module PDK
|
9
8
|
module CLI
|
@@ -41,8 +40,6 @@ module PDK
|
|
41
40
|
|
42
41
|
Release.prepare_interview(opts) unless opts[:force]
|
43
42
|
|
44
|
-
Release.send_analytics('release', opts)
|
45
|
-
|
46
43
|
release = PDK::Module::Release.new(nil, opts)
|
47
44
|
|
48
45
|
Release.module_compatibility_checks!(release, opts)
|
@@ -81,12 +78,6 @@ module PDK
|
|
81
78
|
end
|
82
79
|
end
|
83
80
|
|
84
|
-
# Send_analytics for the given command and Cri options
|
85
|
-
def self.send_analytics(command, opts)
|
86
|
-
# Don't pass tokens to analytics
|
87
|
-
PDK::CLI::Util.analytics_screen_view(command, opts.reject { |k, _| k == :'forge-token' })
|
88
|
-
end
|
89
|
-
|
90
81
|
def self.prepare_interview(opts)
|
91
82
|
questions = []
|
92
83
|
|
data/lib/pdk/cli/test/unit.rb
CHANGED
@@ -34,8 +34,6 @@ module PDK
|
|
34
34
|
|
35
35
|
PDK::CLI::Util.module_version_check
|
36
36
|
|
37
|
-
PDK::CLI::Util.analytics_screen_view('test_unit', opts)
|
38
|
-
|
39
37
|
# Ensure that the bundled gems are up to date and correct Ruby is activated before running or listing tests.
|
40
38
|
puppet_env = PDK::CLI::Util.puppet_from_opts_or_env(opts)
|
41
39
|
PDK::Util::RubyVersion.use(puppet_env[:ruby_version])
|
data/lib/pdk/cli/update.rb
CHANGED
@@ -14,7 +14,9 @@ module PDK
|
|
14
14
|
# Write the context information to the debug log
|
15
15
|
PDK.context.to_debug_log
|
16
16
|
|
17
|
-
|
17
|
+
unless PDK.context.is_a?(PDK::Context::Module) || PDK.context.is_a?(PDK::Context::ControlRepo)
|
18
|
+
raise PDK::CLI::ExitWithError, '`pdk update` can only be run from inside a valid module directory.'
|
19
|
+
end
|
18
20
|
|
19
21
|
raise PDK::CLI::ExitWithError, 'This module does not appear to be PDK compatible. To make the module compatible with PDK, run `pdk convert`.' unless PDK::Util.module_pdk_compatible?
|
20
22
|
|
@@ -31,8 +33,6 @@ module PDK
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
PDK::CLI::Util.analytics_screen_view('update', opts)
|
35
|
-
|
36
36
|
updater = PDK::Module::Update.new(PDK.context.root_path, opts)
|
37
37
|
|
38
38
|
if updater.pinned_to_puppetlabs_template_tag?
|
data/lib/pdk/cli/util.rb
CHANGED
@@ -245,44 +245,6 @@ module PDK
|
|
245
245
|
raise PDK::CLI::ExitWithError, '--template-url may not be used to specify paths containing #\'s.'
|
246
246
|
end
|
247
247
|
module_function :validate_template_opts
|
248
|
-
|
249
|
-
def analytics_screen_view(screen_name, opts = {})
|
250
|
-
require 'pdk/analytics'
|
251
|
-
|
252
|
-
dimensions = {
|
253
|
-
ruby_version: RUBY_VERSION
|
254
|
-
}
|
255
|
-
|
256
|
-
cmd_opts = opts.dup.reject do |_, v|
|
257
|
-
v.nil? || (v.respond_to?(:empty?) && v.empty?)
|
258
|
-
end
|
259
|
-
|
260
|
-
if (format_args = cmd_opts.delete(:format))
|
261
|
-
formats = PDK::CLI::Util::OptionNormalizer.report_formats(format_args)
|
262
|
-
dimensions[:output_format] = formats.map { |r| r[:method].to_s.delete_prefix('write_') }.sort.uniq.join(',')
|
263
|
-
else
|
264
|
-
dimensions[:output_format] = 'default'
|
265
|
-
end
|
266
|
-
|
267
|
-
safe_opts = [:'puppet-version', :'pe-version']
|
268
|
-
safe_bools = [true, false]
|
269
|
-
redacted_opts = cmd_opts.map do |k, v|
|
270
|
-
value = if safe_bools.include?(v) || safe_opts.include?(k)
|
271
|
-
v
|
272
|
-
else
|
273
|
-
'redacted'
|
274
|
-
end
|
275
|
-
"#{k}=#{value}"
|
276
|
-
end
|
277
|
-
dimensions[:cli_options] = redacted_opts.join(',') unless redacted_opts.empty?
|
278
|
-
|
279
|
-
ignored_env_vars = ['PDK_ANALYTICS_CONFIG', 'PDK_DISABLE_ANALYTICS']
|
280
|
-
env_vars = PDK::Util::Env.select { |k, _| k.start_with?('PDK_') && !ignored_env_vars.include?(k) }.map { |k, v| "#{k}=#{v}" }
|
281
|
-
dimensions[:env_vars] = env_vars.join(',') unless env_vars.empty?
|
282
|
-
|
283
|
-
PDK.analytics.screen_view(screen_name, **dimensions)
|
284
|
-
end
|
285
|
-
module_function :analytics_screen_view
|
286
248
|
end
|
287
249
|
end
|
288
250
|
end
|
data/lib/pdk/cli/validate.rb
CHANGED
@@ -29,7 +29,6 @@ module PDK
|
|
29
29
|
require 'pdk/validate'
|
30
30
|
|
31
31
|
if opts[:list]
|
32
|
-
PDK::CLI::Util.analytics_screen_view('validate', opts)
|
33
32
|
PDK.logger.info(format('Available validators: %{validator_names}', validator_names: PDK::Validate.validator_names.join(', ')))
|
34
33
|
exit 0
|
35
34
|
end
|
@@ -75,12 +74,6 @@ module PDK
|
|
75
74
|
end
|
76
75
|
validators_to_run = PDK::Validate.validator_names if validators_to_run.nil?
|
77
76
|
|
78
|
-
if validators_to_run.sort == PDK::Validate.validator_names.sort
|
79
|
-
PDK::CLI::Util.analytics_screen_view('validate', opts)
|
80
|
-
else
|
81
|
-
PDK::CLI::Util.analytics_screen_view(['validate', validators_to_run.sort].flatten.join('_'), opts)
|
82
|
-
end
|
83
|
-
|
84
77
|
# Subsequent arguments are targets.
|
85
78
|
targets.concat(args.to_a[1..]) if args.length > 1
|
86
79
|
|
data/lib/pdk/cli.rb
CHANGED
@@ -16,7 +16,6 @@ module Cri
|
|
16
16
|
class CriExitException
|
17
17
|
def initialize(is_error:)
|
18
18
|
@is_error = is_error
|
19
|
-
PDK.analytics.event('CLI', 'invalid command', label: PDK::CLI.anonymised_args.join(' ')) if error?
|
20
19
|
end
|
21
20
|
end
|
22
21
|
end
|
@@ -56,7 +55,6 @@ module PDK
|
|
56
55
|
|
57
56
|
def self.run(args)
|
58
57
|
@args = args
|
59
|
-
PDK::Config.analytics_config_interview! unless PDK::Util::Env['PDK_DISABLE_ANALYTICS'] || PDK::Config.analytics_config_exist?
|
60
58
|
@base_cmd.run(args)
|
61
59
|
rescue PDK::CLI::ExitWithError => e
|
62
60
|
PDK.logger.send(e.log_level, e.message)
|
data/lib/pdk/config/namespace.rb
CHANGED
@@ -24,7 +24,7 @@ module PDK
|
|
24
24
|
# a child of (defaults to nil).
|
25
25
|
# @option params [self] :persistent_defaults whether default values should be persisted
|
26
26
|
# to disk when evaluated. By default they are not persisted to disk. This is typically
|
27
|
-
# used for settings which a randomly generated, instead of being deterministic, e.g.
|
27
|
+
# used for settings which a randomly generated, instead of being deterministic, e.g. module_defaults author
|
28
28
|
# @param block [Proc] a block that is evaluated within the new instance.
|
29
29
|
def initialize(name = nil, file: nil, parent: nil, persistent_defaults: false, &block)
|
30
30
|
@file = PDK::Util::Filesystem.expand_path(file) unless file.nil?
|
@@ -162,7 +162,7 @@ module PDK
|
|
162
162
|
new_hash = {}
|
163
163
|
settings.each_pair { |k, v| new_hash[k] = v.value }
|
164
164
|
@mounts.each_pair { |k, mount_point| new_hash[k] = mount_point.to_h if mount_point.include_in_parent? }
|
165
|
-
new_hash.delete_if { |_k, v| v.nil? }
|
165
|
+
new_hash.delete_if { |_k, v| v.nil? }
|
166
166
|
new_hash
|
167
167
|
end
|
168
168
|
|
@@ -238,7 +238,7 @@ module PDK
|
|
238
238
|
# Returns true when filter is nil.
|
239
239
|
# Returns true if the filter is exactly the same name as the setting.
|
240
240
|
# Returns true if the name is a sub-key of the filter e.g.
|
241
|
-
# Given a filter of user.module_defaults, `user.module_defaults.author` will return true, but `user.
|
241
|
+
# Given a filter of user.module_defaults, `user.module_defaults.author` will return true, but `user.pdk_feature_flags.requested` will return false.
|
242
242
|
#
|
243
243
|
# @param name [String] The setting name to test.
|
244
244
|
# @param filter [String] The filter used to test on the name.
|
data/lib/pdk/config/setting.rb
CHANGED
@@ -9,9 +9,9 @@ module PDK
|
|
9
9
|
#
|
10
10
|
# @example
|
11
11
|
#
|
12
|
-
# PDK::Config::Namespace.new('
|
13
|
-
# setting :
|
14
|
-
# validate PDK::Config::Validator.
|
12
|
+
# PDK::Config::Namespace.new('module_defaults') do
|
13
|
+
# setting :author do
|
14
|
+
# validate PDK::Config::Validator.string
|
15
15
|
# default_to { false }
|
16
16
|
# end
|
17
17
|
# end
|
data/lib/pdk/config.rb
CHANGED
@@ -19,7 +19,6 @@ module PDK
|
|
19
19
|
# @option options [String] 'system.module_defaults.path' Path to the system module answers PDK configuration file
|
20
20
|
# @option options [String] 'user.path' Path to the user PDK configuration file
|
21
21
|
# @option options [String] 'user.module_defaults.path' Path to the user module answers PDK configuration file
|
22
|
-
# @option options [String] 'user.analytics.path' Path to the user analytics PDK configuration file
|
23
22
|
# @option options [PDK::Context::AbstractContext] 'context' The context that the configuration should be created in
|
24
23
|
def initialize(options = nil)
|
25
24
|
options = {} if options.nil?
|
@@ -28,7 +27,6 @@ module PDK
|
|
28
27
|
'system.module_defaults.path' => PDK::Config.system_answers_path,
|
29
28
|
'user.path' => PDK::Config.user_config_path,
|
30
29
|
'user.module_defaults.path' => PDK::AnswerFile.default_answer_file_path,
|
31
|
-
'user.analytics.path' => PDK::Config.analytics_config_path,
|
32
30
|
'context' => PDK.context
|
33
31
|
}.merge(options)
|
34
32
|
end
|
@@ -51,27 +49,6 @@ module PDK
|
|
51
49
|
@user_config ||= PDK::Config::JSON.new('user', file: local_options['user.path']) do
|
52
50
|
mount :module_defaults, PDK::Config::JSON.new(file: local_options['user.module_defaults.path'])
|
53
51
|
|
54
|
-
# Due to the json-schema gem having issues with Windows based paths, and only supporting Draft 05 (or less) do
|
55
|
-
# not use JSON validation yet. Once PDK drops support for EOL rubies, we will be able to use the json_schemer gem
|
56
|
-
# Which has much more modern support
|
57
|
-
# Reference - https://github.com/puppetlabs/pdk/pull/777
|
58
|
-
# Reference - https://tickets.puppetlabs.com/browse/PDK-1526
|
59
|
-
mount :analytics, PDK::Config::YAML.new(file: local_options['user.analytics.path'], persistent_defaults: true) do
|
60
|
-
setting :disabled do
|
61
|
-
validate PDK::Config::Validator.boolean
|
62
|
-
default_to { PDK::Config.bolt_analytics_config.fetch('disabled', true) }
|
63
|
-
end
|
64
|
-
|
65
|
-
setting 'user-id' do
|
66
|
-
validate PDK::Config::Validator.uuid
|
67
|
-
default_to do
|
68
|
-
require 'securerandom'
|
69
|
-
|
70
|
-
PDK::Config.bolt_analytics_config.fetch('user-id', SecureRandom.uuid)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
52
|
# Display the feature flags
|
76
53
|
mount :pdk_feature_flags, PDK::Config::Namespace.new('pdk_feature_flags') do
|
77
54
|
setting 'available' do
|
@@ -191,18 +168,6 @@ module PDK
|
|
191
168
|
deep_set_object(value, options[:force], send(all_scopes[scope_name]), *names[1..])
|
192
169
|
end
|
193
170
|
|
194
|
-
def self.bolt_analytics_config
|
195
|
-
file = PDK::Util::Filesystem.expand_path('~/.puppetlabs/bolt/analytics.yaml')
|
196
|
-
PDK::Config::YAML.new(file: file)
|
197
|
-
rescue PDK::Config::LoadError => e
|
198
|
-
PDK.logger.debug format('Unable to load %{file}: %{message}', file: file, message: e.message)
|
199
|
-
PDK::Config::YAML.new
|
200
|
-
end
|
201
|
-
|
202
|
-
def self.analytics_config_path
|
203
|
-
PDK::Util::Env['PDK_ANALYTICS_CONFIG'] || File.join(File.dirname(PDK::Util.configdir), 'puppet', 'analytics.yml')
|
204
|
-
end
|
205
|
-
|
206
171
|
def self.user_config_path
|
207
172
|
File.join(PDK::Util.configdir, 'user_config.json')
|
208
173
|
end
|
@@ -224,51 +189,6 @@ module PDK
|
|
224
189
|
File.join(json_schemas_path, "#{name}_schema.json")
|
225
190
|
end
|
226
191
|
|
227
|
-
def self.analytics_config_exist?
|
228
|
-
PDK::Util::Filesystem.file?(analytics_config_path)
|
229
|
-
end
|
230
|
-
|
231
|
-
def self.analytics_config_interview!
|
232
|
-
require 'pdk/cli/util'
|
233
|
-
|
234
|
-
return unless PDK::CLI::Util.interactive?
|
235
|
-
|
236
|
-
pre_message =
|
237
|
-
format('PDK collects anonymous usage information to help us understand how ' \
|
238
|
-
'it is being used and make decisions on how to improve it. You can ' \
|
239
|
-
'find out more about what data we collect and how it is used in the ' \
|
240
|
-
"PDK documentation at %{url}.\n", url: 'https://puppet.com/docs/pdk/latest/pdk_install.html')
|
241
|
-
post_message =
|
242
|
-
format('You can opt in or out of the usage data collection at any time by ' \
|
243
|
-
'editing the analytics configuration file at %{path} and changing ' \
|
244
|
-
"the '%{key}' value.", path: PDK::Config.analytics_config_path, key: 'disabled')
|
245
|
-
|
246
|
-
questions = [
|
247
|
-
{
|
248
|
-
name: 'enabled',
|
249
|
-
question: 'Do you consent to the collection of anonymous PDK usage information?',
|
250
|
-
type: :yes
|
251
|
-
}
|
252
|
-
]
|
253
|
-
|
254
|
-
require 'pdk/cli/util/interview'
|
255
|
-
|
256
|
-
PDK.logger.info(text: pre_message, wrap: true)
|
257
|
-
prompt = TTY::Prompt.new(help_color: :cyan)
|
258
|
-
interview = PDK::CLI::Util::Interview.new(prompt)
|
259
|
-
interview.add_questions(questions)
|
260
|
-
answers = interview.run
|
261
|
-
|
262
|
-
if answers.nil?
|
263
|
-
PDK.logger.info 'No answer given, opting out of analytics collection.'
|
264
|
-
PDK.config.set(['user', 'analytics', 'disabled'], true)
|
265
|
-
else
|
266
|
-
PDK.config.set(['user', 'analytics', 'disabled'], !answers['enabled'])
|
267
|
-
end
|
268
|
-
|
269
|
-
PDK.logger.info(text: post_message, wrap: true)
|
270
|
-
end
|
271
|
-
|
272
192
|
private
|
273
193
|
|
274
194
|
# :nocov: This is a private method and is tested elsewhere
|
data/lib/pdk/module/convert.rb
CHANGED
@@ -148,7 +148,7 @@ module PDK
|
|
148
148
|
module_name = new_metadata.nil? ? 'new-module' : new_metadata.data['name']
|
149
149
|
metadata_for_render = new_metadata.nil? ? {} : new_metadata.data
|
150
150
|
|
151
|
-
template_dir.render_new_module(module_name, metadata_for_render) do |relative_file_path, file_content, file_status|
|
151
|
+
template_dir.render_new_module(module_name, metadata_for_render) do |relative_file_path, file_content, file_status, file_executable|
|
152
152
|
absolute_file_path = File.join(module_dir, relative_file_path)
|
153
153
|
case file_status
|
154
154
|
when :unmanage
|
@@ -156,12 +156,17 @@ module PDK
|
|
156
156
|
when :delete
|
157
157
|
update_manager.remove_file(absolute_file_path)
|
158
158
|
when :init
|
159
|
-
|
159
|
+
if convert? && !PDK::Util::Filesystem.exist?(absolute_file_path)
|
160
|
+
update_manager.add_file(absolute_file_path, file_content)
|
161
|
+
update_manager.make_file_executable(absolute_file_path) if file_executable
|
162
|
+
end
|
160
163
|
when :manage
|
161
164
|
if PDK::Util::Filesystem.exist?(absolute_file_path)
|
162
165
|
update_manager.modify_file(absolute_file_path, file_content)
|
166
|
+
update_manager.make_file_executable(absolute_file_path) if file_executable && !PDK::Util::Filesystem.stat(absolute_file_path).executable?
|
163
167
|
else
|
164
168
|
update_manager.add_file(absolute_file_path, file_content)
|
169
|
+
update_manager.make_file_executable(absolute_file_path) if file_executable
|
165
170
|
end
|
166
171
|
end
|
167
172
|
end
|
@@ -206,7 +211,7 @@ module PDK
|
|
206
211
|
return if options[:noop]
|
207
212
|
|
208
213
|
project_dir = File.basename(Dir.pwd)
|
209
|
-
options[:module_name] = project_dir.split('-', 2).compact[-1]
|
214
|
+
options[:module_name] = PDK.context.is_a?(PDK::Context::ControlRepo) ? project_dir : project_dir.split('-', 2).compact[-1]
|
210
215
|
options[:prompt] = false
|
211
216
|
options[:'skip-interview'] = true if options[:force]
|
212
217
|
|