pdk 1.13.0 → 1.14.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 (82) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +41 -0
  4. data/lib/pdk.rb +0 -13
  5. data/lib/pdk/analytics.rb +18 -2
  6. data/lib/pdk/analytics/client/google_analytics.rb +3 -0
  7. data/lib/pdk/answer_file.rb +4 -1
  8. data/lib/pdk/cli.rb +7 -2
  9. data/lib/pdk/cli/build.rb +2 -2
  10. data/lib/pdk/cli/bundle.rb +7 -1
  11. data/lib/pdk/cli/console.rb +148 -0
  12. data/lib/pdk/cli/convert.rb +2 -2
  13. data/lib/pdk/cli/exec.rb +14 -14
  14. data/lib/pdk/cli/exec/command.rb +16 -11
  15. data/lib/pdk/cli/exec/interactive_command.rb +4 -0
  16. data/lib/pdk/cli/exec_group.rb +5 -5
  17. data/lib/pdk/cli/module/build.rb +0 -2
  18. data/lib/pdk/cli/module/generate.rb +1 -2
  19. data/lib/pdk/cli/new.rb +1 -1
  20. data/lib/pdk/cli/new/defined_type.rb +2 -0
  21. data/lib/pdk/cli/new/provider.rb +2 -0
  22. data/lib/pdk/cli/new/task.rb +2 -0
  23. data/lib/pdk/cli/new/{unit_test.rb → test.rb} +16 -12
  24. data/lib/pdk/cli/new/transport.rb +2 -0
  25. data/lib/pdk/cli/test/unit.rb +5 -3
  26. data/lib/pdk/cli/update.rb +2 -3
  27. data/lib/pdk/cli/util.rb +45 -14
  28. data/lib/pdk/cli/util/spinner.rb +2 -2
  29. data/lib/pdk/cli/validate.rb +6 -2
  30. data/lib/pdk/config.rb +20 -8
  31. data/lib/pdk/config/analytics_schema.json +26 -0
  32. data/lib/pdk/config/json.rb +14 -3
  33. data/lib/pdk/config/json_schema_namespace.rb +143 -0
  34. data/lib/pdk/config/json_schema_setting.rb +53 -0
  35. data/lib/pdk/config/json_with_schema.rb +50 -0
  36. data/lib/pdk/config/namespace.rb +84 -76
  37. data/lib/pdk/config/setting.rb +132 -0
  38. data/lib/pdk/config/yaml.rb +15 -3
  39. data/lib/pdk/config/yaml_with_schema.rb +59 -0
  40. data/lib/pdk/generate.rb +0 -2
  41. data/lib/pdk/generate/module.rb +29 -16
  42. data/lib/pdk/generate/puppet_object.rb +31 -28
  43. data/lib/pdk/module.rb +2 -2
  44. data/lib/pdk/module/build.rb +21 -8
  45. data/lib/pdk/module/convert.rb +64 -7
  46. data/lib/pdk/module/metadata.rb +5 -1
  47. data/lib/pdk/module/templatedir.rb +24 -7
  48. data/lib/pdk/module/update.rb +5 -1
  49. data/lib/pdk/module/update_manager.rb +21 -13
  50. data/lib/pdk/report.rb +4 -3
  51. data/lib/pdk/report/event.rb +5 -3
  52. data/lib/pdk/tests/unit.rb +36 -7
  53. data/lib/pdk/util.rb +20 -8
  54. data/lib/pdk/util/bundler.rb +14 -6
  55. data/lib/pdk/util/filesystem.rb +5 -0
  56. data/lib/pdk/util/git.rb +6 -0
  57. data/lib/pdk/util/puppet_strings.rb +24 -2
  58. data/lib/pdk/util/puppet_version.rb +25 -10
  59. data/lib/pdk/util/ruby_version.rb +13 -1
  60. data/lib/pdk/util/template_uri.rb +23 -2
  61. data/lib/pdk/util/vendored_file.rb +28 -24
  62. data/lib/pdk/util/version.rb +5 -5
  63. data/lib/pdk/validate/base_validator.rb +5 -4
  64. data/lib/pdk/validate/metadata/metadata_json_lint.rb +0 -4
  65. data/lib/pdk/validate/metadata/metadata_syntax.rb +5 -3
  66. data/lib/pdk/validate/metadata_validator.rb +0 -2
  67. data/lib/pdk/validate/puppet/puppet_epp.rb +4 -4
  68. data/lib/pdk/validate/puppet/puppet_lint.rb +0 -3
  69. data/lib/pdk/validate/puppet/puppet_syntax.rb +4 -4
  70. data/lib/pdk/validate/puppet_validator.rb +0 -2
  71. data/lib/pdk/validate/ruby/rubocop.rb +0 -5
  72. data/lib/pdk/validate/ruby_validator.rb +0 -2
  73. data/lib/pdk/validate/tasks/metadata_lint.rb +9 -5
  74. data/lib/pdk/validate/tasks/name.rb +4 -2
  75. data/lib/pdk/validate/tasks_validator.rb +0 -2
  76. data/lib/pdk/validate/yaml/syntax.rb +4 -4
  77. data/lib/pdk/validate/yaml_validator.rb +0 -2
  78. data/lib/pdk/version.rb +1 -1
  79. data/locales/pdk.pot +351 -311
  80. metadata +11 -7
  81. data/lib/pdk/config/validator.rb +0 -31
  82. data/lib/pdk/config/value.rb +0 -94
@@ -1,7 +1,4 @@
1
- require 'rexml/document'
2
- require 'time'
3
1
  require 'pdk/report/event'
4
- require 'socket'
5
2
 
6
3
  module PDK
7
4
  class Report
@@ -48,6 +45,10 @@ module PDK
48
45
  # @param target [#write] an IO object that the report will be written to.
49
46
  # Defaults to PDK::Report.default_target.
50
47
  def write_junit(target = self.class.default_target)
48
+ require 'rexml/document'
49
+ require 'time'
50
+ require 'socket'
51
+
51
52
  # Open a File Object for IO if target is a string containing a filename or path
52
53
  target = File.open(target, 'w') if target.is_a? String
53
54
 
@@ -1,6 +1,3 @@
1
- require 'rexml/document'
2
- require 'pathname'
3
-
4
1
  module PDK
5
2
  class Report
6
3
  class Event
@@ -132,6 +129,8 @@ module PDK
132
129
  #
133
130
  # @return [REXML::Element] The rendered event.
134
131
  def to_junit
132
+ require 'rexml/document'
133
+
135
134
  testcase = REXML::Element.new('testcase')
136
135
  testcase.attributes['classname'] = [source, test].compact.join('.')
137
136
  testcase.attributes['name'] = [file, line, column].compact.join(':')
@@ -195,6 +194,9 @@ module PDK
195
194
  raise ArgumentError, _('File must be a String.')
196
195
  end
197
196
 
197
+ require 'pathname'
198
+ require 'pdk/util'
199
+
198
200
  path = Pathname.new(value)
199
201
 
200
202
  if path.absolute?
@@ -1,8 +1,3 @@
1
- require 'pdk'
2
- require 'pdk/cli/exec'
3
- require 'pdk/util/bundler'
4
- require 'json'
5
-
6
1
  module PDK
7
2
  module Test
8
3
  class Unit
@@ -13,14 +8,23 @@ module PDK
13
8
  end
14
9
 
15
10
  def self.rake_bin
11
+ require 'pdk/util'
12
+
16
13
  @rake ||= File.join(PDK::Util.module_root, 'bin', 'rake')
17
14
  end
18
15
 
19
- def self.rake(task, spinner_text, environment = {})
16
+ def self.cmd_with_args(task)
17
+ require 'pdk/util/ruby_version'
18
+
20
19
  argv = [rake_bin, task]
21
20
  argv.unshift(File.join(PDK::Util::RubyVersion.bin_path, 'ruby.exe')) if Gem.win_platform?
21
+ argv
22
+ end
22
23
 
23
- command = PDK::CLI::Exec::Command.new(*argv).tap do |c|
24
+ def self.rake(task, spinner_text, environment = {})
25
+ require 'pdk/cli/exec/command'
26
+
27
+ command = PDK::CLI::Exec::Command.new(*cmd_with_args(task)).tap do |c|
24
28
  c.context = :module
25
29
  c.add_spinner(spinner_text) if spinner_text
26
30
  c.environment = environment
@@ -29,6 +33,19 @@ module PDK
29
33
  command.execute!
30
34
  end
31
35
 
36
+ def self.interactive_rake(task, environment)
37
+ require 'pdk/cli/exec/interactive_command'
38
+
39
+ command = PDK::CLI::Exec::InteractiveCommand.new(*cmd_with_args(task)).tap do |c|
40
+ c.context = :module
41
+ c.environment = environment.reject do |key, _|
42
+ key == 'CI_SPEC_OPTIONS'
43
+ end
44
+ end
45
+
46
+ command.execute!
47
+ end
48
+
32
49
  def self.parallel_with_no_tests?(ran_in_parallel, json_result, result)
33
50
  ran_in_parallel && json_result.empty? &&
34
51
  ((!result[:exit_code].zero? && result[:stderr].strip =~ %r{Pass files or folders to run$}) ||
@@ -64,6 +81,9 @@ module PDK
64
81
  end
65
82
 
66
83
  def self.invoke(report, options = {})
84
+ require 'pdk/util'
85
+ require 'pdk/util/bundler'
86
+
67
87
  PDK::Util::Bundler.ensure_binstubs!('rake', 'rspec-core')
68
88
 
69
89
  setup
@@ -73,6 +93,12 @@ module PDK
73
93
  environment = { 'CI_SPEC_OPTIONS' => '--format j' }
74
94
  environment['PUPPET_GEM_VERSION'] = options[:puppet] if options[:puppet]
75
95
  spinner_msg = options[:parallel] ? _('Running unit tests in parallel.') : _('Running unit tests.')
96
+
97
+ if options[:interactive]
98
+ result = interactive_rake(cmd(tests, options), environment)
99
+ return result[:exit_code]
100
+ end
101
+
76
102
  result = rake(cmd(tests, options), spinner_msg, environment)
77
103
 
78
104
  json_result = if options[:parallel]
@@ -184,6 +210,9 @@ module PDK
184
210
 
185
211
  # @return array of { :id, :full_description }
186
212
  def self.list(options = {})
213
+ require 'pdk/util'
214
+ require 'pdk/util/bundler'
215
+
187
216
  PDK::Util::Bundler.ensure_binstubs!('rake')
188
217
 
189
218
  environment = {}
@@ -1,12 +1,7 @@
1
- require 'tmpdir'
2
- require 'tempfile'
3
-
4
- require 'pdk/util/version'
1
+ # PDK::Util::Windows can not be lazy loaded because it conditionally requires
2
+ # other files on Windows only. This can probably be fixed up with a later
3
+ # refactoring.
5
4
  require 'pdk/util/windows'
6
- require 'pdk/util/vendored_file'
7
- require 'pdk/util/filesystem'
8
- require 'pdk/util/template_uri'
9
- require 'pdk/util/puppet_strings'
10
5
 
11
6
  module PDK
12
7
  module Util
@@ -45,6 +40,8 @@ module PDK
45
40
  #
46
41
  # @return [String] The temporary directory path.
47
42
  def make_tmpdir_name(base)
43
+ require 'tmpdir'
44
+
48
45
  t = Time.now.strftime('%Y%m%d')
49
46
  name = "#{base}#{t}-#{Process.pid}-#{rand(0x100000000).to_s(36)}"
50
47
  File.join(Dir.tmpdir, name)
@@ -69,11 +66,15 @@ module PDK
69
66
  module_function :canonical_path
70
67
 
71
68
  def package_install?
69
+ require 'pdk/util/version'
70
+
72
71
  !PDK::Util::Version.version_file.nil?
73
72
  end
74
73
  module_function :package_install?
75
74
 
76
75
  def development_mode?
76
+ require 'pdk/util/version'
77
+
77
78
  (!PDK::Util::Version.git_ref.nil? || PDK::VERSION.end_with?('.pre'))
78
79
  end
79
80
  module_function :development_mode?
@@ -85,6 +86,7 @@ module PDK
85
86
 
86
87
  def pdk_package_basedir
87
88
  raise PDK::CLI::FatalError, _('Package basedir requested for non-package install.') unless package_install?
89
+ require 'pdk/util/version'
88
90
 
89
91
  File.dirname(PDK::Util::Version.version_file)
90
92
  end
@@ -132,6 +134,14 @@ module PDK
132
134
  end
133
135
  module_function :module_root
134
136
 
137
+ # The module's fixtures directory for spec testing
138
+ # @return [String] - the path to the module's fixtures directory
139
+ def module_fixtures_dir
140
+ dir = module_root
141
+ File.join(module_root, 'spec', 'fixtures') unless dir.nil?
142
+ end
143
+ module_function :module_fixtures_dir
144
+
135
145
  # Returns true or false depending on if any of the common directories in a module
136
146
  # are found in the current directory
137
147
  #
@@ -210,6 +220,8 @@ module PDK
210
220
 
211
221
  # TO-DO: Refactor replacement of lib/pdk/module/build.rb:metadata to use this function instead
212
222
  def module_metadata
223
+ require 'pdk/module/metadata'
224
+
213
225
  PDK::Module::Metadata.from_file(File.join(module_root, 'metadata.json')).data
214
226
  end
215
227
  module_function :module_metadata
@@ -1,15 +1,11 @@
1
- require 'bundler'
2
- require 'digest'
3
- require 'fileutils'
4
- require 'pdk/util'
5
- require 'pdk/cli/exec'
6
-
7
1
  module PDK
8
2
  module Util
9
3
  module Bundler
10
4
  class BundleHelper; end
11
5
 
12
6
  def self.ensure_bundle!(gem_overrides = nil)
7
+ require 'fileutils'
8
+
13
9
  bundle = BundleHelper.new
14
10
 
15
11
  # This will default ensure_bundle! to re-resolving everything to latest
@@ -70,6 +66,8 @@ module PDK
70
66
  end
71
67
 
72
68
  def self.bundle_cache_key(gemfile, gem_overrides)
69
+ require 'digest'
70
+
73
71
  override_sig = (gem_overrides || {}).sort_by { |gem, _| gem.to_s }.to_s
74
72
  Digest::MD5.hexdigest(gemfile.to_s + override_sig)
75
73
  end
@@ -77,6 +75,7 @@ module PDK
77
75
 
78
76
  class BundleHelper
79
77
  def gemfile
78
+ require 'pdk/util'
80
79
  @gemfile ||= PDK::Util.find_upwards('Gemfile')
81
80
  end
82
81
 
@@ -108,6 +107,10 @@ module PDK
108
107
  end
109
108
 
110
109
  def lock!
110
+ require 'pdk/util'
111
+ require 'fileutils'
112
+ require 'pdk/util/ruby_version'
113
+
111
114
  if PDK::Util.package_install?
112
115
  # In packaged installs, use vendored Gemfile.lock as a starting point.
113
116
  # Subsequent 'bundle install' will still pick up any new dependencies.
@@ -185,6 +188,8 @@ module PDK
185
188
  end
186
189
 
187
190
  def install!(gem_overrides = {})
191
+ require 'pdk/util/ruby_version'
192
+
188
193
  argv = ['install', "--gemfile=#{gemfile}"]
189
194
  argv << '-j4' unless Gem.win_platform? && Gem::Version.new(PDK::Util::RubyVersion.active_ruby_version) < Gem::Version.new('2.3.5')
190
195
 
@@ -239,6 +244,9 @@ module PDK
239
244
  end
240
245
 
241
246
  def bundle_command(*args)
247
+ require 'pdk/cli/exec'
248
+ require 'pdk/cli/exec/command'
249
+
242
250
  PDK::CLI::Exec::Command.new(PDK::CLI::Exec.bundle_bin, *args).tap do |c|
243
251
  c.context = :module
244
252
  end
@@ -64,6 +64,11 @@ module PDK
64
64
  File.exist?(*args)
65
65
  end
66
66
  module_function :exist?
67
+
68
+ def rm(*args)
69
+ FileUtils.rm(*args)
70
+ end
71
+ module_function :rm
67
72
  #:nocov:
68
73
  end
69
74
  end
@@ -36,6 +36,8 @@ module PDK
36
36
  end
37
37
 
38
38
  def self.git_bin
39
+ require 'pdk/cli/exec'
40
+
39
41
  git_bin = Gem.win_platform? ? 'git.exe' : 'git'
40
42
  vendored_bin_path = File.join(git_bindir, git_bin)
41
43
 
@@ -43,12 +45,16 @@ module PDK
43
45
  end
44
46
 
45
47
  def self.git(*args)
48
+ require 'pdk/cli/exec'
49
+
46
50
  PDK::CLI::Exec.ensure_bin_present!(git_bin, 'git')
47
51
 
48
52
  PDK::CLI::Exec.execute(git_bin, *args)
49
53
  end
50
54
 
51
55
  def self.git_with_env(env, *args)
56
+ require 'pdk/cli/exec'
57
+
52
58
  PDK::CLI::Exec.ensure_bin_present!(git_bin, 'git')
53
59
 
54
60
  PDK::CLI::Exec.execute_with_env(env, git_bin, *args)
@@ -1,5 +1,3 @@
1
- require 'pdk/cli/exec'
2
-
3
1
  module PDK
4
2
  module Util
5
3
  module PuppetStrings
@@ -13,6 +11,8 @@ module PDK
13
11
  #
14
12
  # @return [Hash{Symbol=>Object}] the result of the command execution.
15
13
  def self.puppet(*args)
14
+ require 'pdk/cli/exec/command'
15
+
16
16
  PDK::Util::Bundler.ensure_binstubs!('puppet')
17
17
 
18
18
  argv = [File.join(PDK::Util.module_root, 'bin', 'puppet')] + args
@@ -80,6 +80,26 @@ module PDK
80
80
  [generator, known_objects[object_type].find { |obj| object_names.include?(obj['name']) }]
81
81
  end
82
82
 
83
+ # Generate a list of all objects that PDK has a generator for.
84
+ #
85
+ # @returns [Array[Array[PDK::Generate::PuppetObject,
86
+ # Array[Hash{String=>Object}]]]] an associative array where the first
87
+ # element of each pair is the generator class and the second element of
88
+ # each pair is an array of description hashes from puppet-strings.
89
+ def self.all_objects
90
+ require 'pdk/generate'
91
+
92
+ generators = PDK::Generate::GENERATORS.select do |gen|
93
+ gen.respond_to?(:puppet_strings_type) && !gen.puppet_strings_type.nil?
94
+ end
95
+
96
+ known_objects = generate_hash
97
+
98
+ generators.map { |gen| [gen, known_objects[gen.puppet_strings_type]] }.reject do |_, obj|
99
+ obj.nil? || obj.empty?
100
+ end
101
+ end
102
+
83
103
  # Evaluates the mapping of puppet-strings object type to PDK generator
84
104
  # class.
85
105
  #
@@ -92,6 +112,8 @@ module PDK
92
112
  # PDK::Util::PuppetStrings.find_generator('puppet_classes')
93
113
  # => PDK::Generate::PuppetClass
94
114
  def self.find_generator(type)
115
+ require 'pdk/generate'
116
+
95
117
  PDK::Generate::GENERATORS.find do |gen|
96
118
  gen.respond_to?(:puppet_strings_type) && gen.puppet_strings_type == type
97
119
  end
@@ -1,6 +1,3 @@
1
- require 'pdk/util'
2
- require 'pdk/util/git'
3
-
4
1
  module PDK
5
2
  module Util
6
3
  class PuppetVersion
@@ -21,6 +18,8 @@ module PDK
21
18
  DEFAULT_PUPPET_DEV_BRANCH = 'master'.freeze
22
19
 
23
20
  def puppet_dev_env
21
+ require 'pdk/util/ruby_version'
22
+
24
23
  {
25
24
  gem_version: 'file://%{path}' % { path: puppet_dev_path },
26
25
  ruby_version: PDK::Util::RubyVersion.latest_ruby_version,
@@ -28,6 +27,8 @@ module PDK
28
27
  end
29
28
 
30
29
  def puppet_dev_path
30
+ require 'pdk/util'
31
+
31
32
  File.join(PDK::Util.cachedir, 'src', 'puppet')
32
33
  end
33
34
 
@@ -42,6 +43,9 @@ module PDK
42
43
  end
43
44
 
44
45
  def fetch_puppet_dev
46
+ require 'pdk/util/git'
47
+ require 'fileutils'
48
+
45
49
  # Check if the source is cloned and is a readable git repo
46
50
  unless PDK::Util::Git.remote_repo? puppet_dev_path
47
51
  # Check if the path has something in it already. Delete it and prepare for clone if so.
@@ -133,6 +137,9 @@ module PDK
133
137
  end
134
138
 
135
139
  def from_module_metadata(metadata = nil)
140
+ require 'pdk/module/metadata'
141
+ require 'pdk/util'
142
+
136
143
  if metadata.nil?
137
144
  metadata_file = PDK::Util.find_upwards('metadata.json')
138
145
 
@@ -191,6 +198,8 @@ module PDK
191
198
  end
192
199
 
193
200
  def fetch_pe_version_map
201
+ require 'pdk/util/vendored_file'
202
+
194
203
  map = PDK::Util::VendoredFile.new('pe_versions.json', PE_VERSIONS_URL).read
195
204
 
196
205
  JSON.parse(map)
@@ -205,17 +214,19 @@ module PDK
205
214
  end
206
215
 
207
216
  def rubygems_puppet_versions
208
- return @rubygems_puppet_versions unless @rubygems_puppet_versions.nil?
209
-
210
- fetcher = Gem::SpecFetcher.fetcher
211
- puppet_tuples = fetcher.detect(:released) do |spec_tuple|
212
- spec_tuple.name == 'puppet' && Gem::Platform.match(spec_tuple.platform)
217
+ @rubygems_puppet_versions ||= begin
218
+ fetcher = Gem::SpecFetcher.fetcher
219
+ puppet_tuples = fetcher.detect(:released) do |spec_tuple|
220
+ spec_tuple.name == 'puppet' && Gem::Platform.match(spec_tuple.platform)
221
+ end
222
+ puppet_versions = puppet_tuples.map { |name, _| name.version }.uniq
223
+ puppet_versions.sort { |a, b| b <=> a }
213
224
  end
214
- puppet_versions = puppet_tuples.map { |name, _| name.version }.uniq
215
- @rubygems_puppet_versions = puppet_versions.sort { |a, b| b <=> a }
216
225
  end
217
226
 
218
227
  def find_gem(requirement)
228
+ require 'pdk/util'
229
+
219
230
  if PDK::Util.package_install?
220
231
  find_in_package_cache(requirement)
221
232
  else
@@ -224,11 +235,15 @@ module PDK
224
235
  end
225
236
 
226
237
  def find_in_rubygems(requirement)
238
+ require 'pdk/util/ruby_version'
239
+
227
240
  version = rubygems_puppet_versions.find { |r| requirement.satisfied_by?(r) }
228
241
  version.nil? ? nil : { gem_version: version, ruby_version: PDK::Util::RubyVersion.default_ruby_version }
229
242
  end
230
243
 
231
244
  def find_in_package_cache(requirement)
245
+ require 'pdk/util/ruby_version'
246
+
232
247
  PDK::Util::RubyVersion.versions.each do |ruby_version, _|
233
248
  PDK::Util::RubyVersion.use(ruby_version)
234
249
  version = PDK::Util::RubyVersion.available_puppet_versions.find { |r| requirement.satisfied_by?(r) }
@@ -1,4 +1,3 @@
1
- require 'pdk/util'
2
1
  require 'forwardable'
3
2
 
4
3
  module PDK
@@ -41,6 +40,8 @@ module PDK
41
40
  end
42
41
 
43
42
  def scan_for_packaged_rubies
43
+ require 'pdk/util'
44
+
44
45
  ruby_basedir = File.join(PDK::Util.pdk_package_basedir, 'private', 'ruby', '*')
45
46
  Dir[ruby_basedir].sort.map { |ruby_dir|
46
47
  version = File.basename(ruby_dir)
@@ -49,6 +50,9 @@ module PDK
49
50
  end
50
51
 
51
52
  def default_ruby_version
53
+ require 'pdk/util'
54
+ require 'pdk/util/puppet_version'
55
+
52
56
  @default_ruby_version ||= if PDK::Util.package_install?
53
57
  # Default to the ruby that supports the latest puppet gem. If you wish to default to a
54
58
  # specific Puppet Gem version use the following example;
@@ -69,6 +73,8 @@ module PDK
69
73
  end
70
74
 
71
75
  def versions
76
+ require 'pdk/util'
77
+
72
78
  @versions ||= if PDK::Util.package_install?
73
79
  scan_for_packaged_rubies
74
80
  else
@@ -84,6 +90,8 @@ module PDK
84
90
  end
85
91
 
86
92
  def bin_path
93
+ require 'pdk/util'
94
+
87
95
  if PDK::Util.package_install?
88
96
  File.join(PDK::Util.pdk_package_basedir, 'private', 'ruby', ruby_version, 'bin')
89
97
  else
@@ -92,6 +100,8 @@ module PDK
92
100
  end
93
101
 
94
102
  def gem_paths_raw
103
+ require 'pdk/util'
104
+
95
105
  if PDK::Util.package_install?
96
106
  # Subprocesses use their own set of gems which are managed by pdk or
97
107
  # installed with the package. We also include the separate gem path
@@ -115,6 +125,8 @@ module PDK
115
125
  end
116
126
 
117
127
  def gem_home
128
+ require 'pdk/util'
129
+
118
130
  # `bundle install --path` ignores all "system" installed gems and
119
131
  # causes unnecessary package installs. `bundle install` (without
120
132
  # --path) installs into GEM_HOME, which by default is non-user