Module: PDK::Util
- Defined in:
- lib/pdk/util.rb,
lib/pdk/util/git.rb,
lib/pdk/util/bundler.rb,
lib/pdk/util/version.rb,
lib/pdk/util/windows.rb,
lib/pdk/util/filesystem.rb,
lib/pdk/util/ruby_version.rb,
lib/pdk/util/template_uri.rb,
lib/pdk/util/vendored_file.rb,
lib/pdk/util/puppet_version.rb
Defined Under Namespace
Modules: Bundler, Filesystem, Git, Version, Windows Classes: GitError, PuppetVersion, RubyVersion, TemplateURI, VendoredFile
Constant Summary collapse
- MODULE_FOLDERS =
%w[ manifests lib tasks facts.d functions types ].freeze
Class Method Summary collapse
-
.cachedir ⇒ String
Returns the fully qualified path to a per-user PDK cachedir.
-
.canonical_path(path) ⇒ String
Return an expanded, absolute path.
- .development_mode? ⇒ Boolean
-
.find_all_json_in(text) ⇒ Array<Hash>
Iterate through possible JSON documents for all valid JSON.
-
.find_first_json_in(text) ⇒ Hash?
Iterate through possible JSON documents until we find one that is valid.
-
.find_upwards(target, start_dir = nil) ⇒ String?
Searches upwards from current working directory for the given target file.
-
.find_valid_json_in(text, opts = {}) ⇒ Hash, ...
Iterate through possible JSON documents until we find one that is valid.
- .gem_install? ⇒ Boolean
-
.in_module_root? ⇒ boolean
Returns true or false depending on if any of the common directories in a module are found in the current directory.
-
.make_tmpdir_name(base) ⇒ String
Generate a name for a temporary directory.
-
.module_metadata ⇒ Object
TO-DO: Refactor replacement of lib/pdk/module/build.rb:metadata to use this function instead.
-
.module_pdk_compatible? ⇒ Boolean
TO-DO: Refactor replacement of lib/pdk/module/build.rb:module_pdk_compatible? to use this function instead.
- .module_pdk_version ⇒ Object
-
.module_root ⇒ String?
Returns path to the root of the module being worked on.
- .package_cachedir ⇒ Object
- .package_install? ⇒ Boolean
- .pdk_package_basedir ⇒ Object
-
.targets_relative_to_pwd(targets) ⇒ Array<String>
Returns the targets’ paths relative to the working directory.
Class Method Details
.cachedir ⇒ String
Returns the fully qualified path to a per-user PDK cachedir.
100 101 102 103 104 105 106 |
# File 'lib/pdk/util.rb', line 100 def cachedir if Gem.win_platform? File.join(ENV['LOCALAPPDATA'], 'PDK', 'cache') else File.join(Dir.home, '.pdk', 'cache') end end |
.canonical_path(path) ⇒ String
Return an expanded, absolute path
58 59 60 61 62 63 64 65 66 67 |
# File 'lib/pdk/util.rb', line 58 def canonical_path(path) if Gem.win_platform? unless File.exist?(path) raise PDK::CLI::FatalError, _("Cannot resolve a full path to '%{path}', as it does not currently exist.") % { path: path } end PDK::Util::Windows::File.get_long_pathname(path) else File.(path) end end |
.development_mode? ⇒ Boolean
75 76 77 |
# File 'lib/pdk/util.rb', line 75 def development_mode? (!PDK::Util::Version.git_ref.nil? || PDK::VERSION.end_with?('.pre')) end |
.find_all_json_in(text) ⇒ Array<Hash>
Iterate through possible JSON documents for all valid JSON
150 151 152 |
# File 'lib/pdk/util.rb', line 150 def find_all_json_in(text) find_valid_json_in(text, break_on_first: false) end |
.find_first_json_in(text) ⇒ Hash?
Iterate through possible JSON documents until we find one that is valid.
140 141 142 |
# File 'lib/pdk/util.rb', line 140 def find_first_json_in(text) find_valid_json_in(text) end |
.find_upwards(target, start_dir = nil) ⇒ String?
Searches upwards from current working directory for the given target file.
28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/pdk/util.rb', line 28 def find_upwards(target, start_dir = nil) previous = nil current = File.(start_dir || Dir.pwd) until !File.directory?(current) || current == previous filename = File.join(current, target) return filename if File.file?(filename) previous = current current = File.('..', current) end end |
.find_valid_json_in(text, opts = {}) ⇒ Hash, ...
Iterate through possible JSON documents until we find one that is valid.
165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
# File 'lib/pdk/util.rb', line 165 def find_valid_json_in(text, opts = {}) break_on_first = opts.key?(:break_on_first) ? opts[:break_on_first] : true json_result = break_on_first ? nil : [] text.scan(%r{\{(?:[^{}]|(?:\g<0>))*\}}x) do |str| begin if break_on_first json_result = JSON.parse(str) break else json_result.push(JSON.parse(str)) end rescue JSON::ParserError next end end json_result end |
.gem_install? ⇒ Boolean
80 81 82 |
# File 'lib/pdk/util.rb', line 80 def gem_install? !(package_install? || development_mode?) end |
.in_module_root? ⇒ boolean
Returns true or false depending on if any of the common directories in a module are found in the current directory
130 131 132 |
# File 'lib/pdk/util.rb', line 130 def in_module_root? PDK::Util::MODULE_FOLDERS.any? { |dir| File.directory?(dir) } end |
.make_tmpdir_name(base) ⇒ String
Generate a name for a temporary directory.
46 47 48 49 50 |
# File 'lib/pdk/util.rb', line 46 def make_tmpdir_name(base) t = Time.now.strftime('%Y%m%d') name = "#{base}#{t}-#{Process.pid}-#{rand(0x100000000).to_s(36)}" File.join(Dir.tmpdir, name) end |
.module_metadata ⇒ Object
TO-DO: Refactor replacement of lib/pdk/module/build.rb:metadata to use this function instead
202 203 204 |
# File 'lib/pdk/util.rb', line 202 def PDK::Module::Metadata.from_file(File.join(module_root, 'metadata.json')).data end |
.module_pdk_compatible? ⇒ Boolean
TO-DO: Refactor replacement of lib/pdk/module/build.rb:module_pdk_compatible? to use this function instead
208 209 210 |
# File 'lib/pdk/util.rb', line 208 def module_pdk_compatible? ['pdk-version', 'template-url'].any? { |key| .key?(key) } end |
.module_pdk_version ⇒ Object
213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/pdk/util.rb', line 213 def module_pdk_version = if .nil? || .fetch('pdk-version', nil).nil? nil else ['pdk-version'].split.first end rescue ArgumentError => e PDK.logger.error(e) nil end |
.module_root ⇒ String?
Returns path to the root of the module being worked on.
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/pdk/util.rb', line 113 def module_root = find_upwards('metadata.json') if File.dirname() elsif in_module_root? Dir.pwd else nil end end |
.package_cachedir ⇒ Object
92 93 94 |
# File 'lib/pdk/util.rb', line 92 def package_cachedir File.join(pdk_package_basedir, 'share', 'cache') end |
.package_install? ⇒ Boolean
70 71 72 |
# File 'lib/pdk/util.rb', line 70 def package_install? !PDK::Util::Version.version_file.nil? end |
.pdk_package_basedir ⇒ Object
85 86 87 88 89 |
# File 'lib/pdk/util.rb', line 85 def pdk_package_basedir raise PDK::CLI::FatalError, _('Package basedir requested for non-package install.') unless package_install? File.dirname(PDK::Util::Version.version_file) end |
.targets_relative_to_pwd(targets) ⇒ Array<String>
Returns the targets’ paths relative to the working directory
190 191 192 193 194 195 196 197 198 |
# File 'lib/pdk/util.rb', line 190 def targets_relative_to_pwd(targets) targets.map do |t| if Pathname.new(t).absolute? Pathname.new(t).relative_path_from(Pathname.pwd) else t end end end |