lib/pdk/control_repo.rb in pdk-2.3.0 vs lib/pdk/control_repo.rb in pdk-2.4.0
- old
+ new
@@ -1,90 +1,90 @@
-require 'pdk'
-
-module PDK
- module ControlRepo
- CONTROL_REPO_FILES = %w[environment.conf Puppetfile].freeze
-
- DEFAULT_IGNORED = [
- '/pkg/',
- '~*',
- '/coverage',
- # Strictly speaking this isn't default but if people have tricked older PDK into thinking that a
- # Control Repo is a module, they may have recursive symlinks in spec/fixtures/modules
- '/spec/fixtures/modules/',
- '/vendor/',
- ].freeze
-
- # Returns path to the root of the Control Repo being worked on.
- #
- # An environment.conf is required for a PDK compatible Control Repo,
- # whereas Puppetfile is optional.
- #
- # Note - A Bolt Project can also be a Control Repo.
- #
- # Note - Non-Directory environments can exist however directory based
- # environments are the supported/preferred way.
- #
- # @see https://puppet.com/docs/pe/latest/control_repo.html
- #
- # @param strict_check [Boolean] When strict_check is true, only return the path
- # if the Control Repo is strictly _only_ a control repository. For example,
- # not also a Puppet Bolt project directory Default is false.
- #
- # @return [String, nil] Fully qualified base path to Control Repo, or nil if
- # the current working dir does not appear to be within a Control Repo.
- def find_control_repo_root(strict_check = false)
- environment_conf_path = PDK::Util.find_upwards('environment.conf')
- path = if environment_conf_path
- File.dirname(environment_conf_path)
- elsif control_repo_root?(Dir.pwd)
- Dir.pwd
- else
- nil
- end
- return path if path.nil? || !strict_check
- PDK::Bolt.bolt_project_root?(path) ? nil : path
- end
- module_function :find_control_repo_root
-
- # Returns true or false depending on if any of the common files in a Control Repo
- # are found in the specified directory. If a directory is not specified, the current
- # working directory is used.
- #
- # @return [boolean] True if any folders from CONTROL_REPO_FILES are found in the current dir,
- # false otherwise.
- def control_repo_root?(path = Dir.pwd)
- CONTROL_REPO_FILES.any? { |file| PDK::Util::Filesystem.file?(File.join(path, file)) }
- end
- module_function :control_repo_root?
-
- # Returns a PDK::Config::Namespace for the specified environment.conf file.
- # Note there is no validation of the path.
- #
- # @param path [String] The path to the environment.conf file
- #
- # @return [PDK::Config::IniFile] The configuration file
- def environment_conf_as_config(path)
- PDK::Config::IniFile.new('environment', file: path) do
- setting :modulepath do
- # As per https://puppet.com/docs/puppet/latest/config_file_environment.html#allowed-settings
- default_to { 'modules:$basemodulepath' }
- end
-
- setting :manifest do
- # As per https://puppet.com/docs/puppet/latest/config_file_environment.html#allowed-settings
- default_to { 'manifests/' }
- end
- end
- end
- module_function :environment_conf_as_config
-
- def default_ignored_pathspec(ignore_dotfiles = true)
- require 'pathspec'
-
- PathSpec.new(DEFAULT_IGNORED).tap do |ps|
- ps.add('.*') if ignore_dotfiles
- end
- end
- module_function :default_ignored_pathspec
- end
-end
+require 'pdk'
+
+module PDK
+ module ControlRepo
+ CONTROL_REPO_FILES = %w[environment.conf Puppetfile].freeze
+
+ DEFAULT_IGNORED = [
+ '/pkg/',
+ '~*',
+ '/coverage',
+ # Strictly speaking this isn't default but if people have tricked older PDK into thinking that a
+ # Control Repo is a module, they may have recursive symlinks in spec/fixtures/modules
+ '/spec/fixtures/modules/',
+ '/vendor/',
+ ].freeze
+
+ # Returns path to the root of the Control Repo being worked on.
+ #
+ # An environment.conf is required for a PDK compatible Control Repo,
+ # whereas Puppetfile is optional.
+ #
+ # Note - A Bolt Project can also be a Control Repo.
+ #
+ # Note - Non-Directory environments can exist however directory based
+ # environments are the supported/preferred way.
+ #
+ # @see https://puppet.com/docs/pe/latest/control_repo.html
+ #
+ # @param strict_check [Boolean] When strict_check is true, only return the path
+ # if the Control Repo is strictly _only_ a control repository. For example,
+ # not also a Puppet Bolt project directory Default is false.
+ #
+ # @return [String, nil] Fully qualified base path to Control Repo, or nil if
+ # the current working dir does not appear to be within a Control Repo.
+ def find_control_repo_root(strict_check = false)
+ environment_conf_path = PDK::Util.find_upwards('environment.conf')
+ path = if environment_conf_path
+ File.dirname(environment_conf_path)
+ elsif control_repo_root?(Dir.pwd)
+ Dir.pwd
+ else
+ nil
+ end
+ return path if path.nil? || !strict_check
+ PDK::Bolt.bolt_project_root?(path) ? nil : path
+ end
+ module_function :find_control_repo_root
+
+ # Returns true or false depending on if any of the common files in a Control Repo
+ # are found in the specified directory. If a directory is not specified, the current
+ # working directory is used.
+ #
+ # @return [boolean] True if any folders from CONTROL_REPO_FILES are found in the current dir,
+ # false otherwise.
+ def control_repo_root?(path = Dir.pwd)
+ CONTROL_REPO_FILES.any? { |file| PDK::Util::Filesystem.file?(File.join(path, file)) }
+ end
+ module_function :control_repo_root?
+
+ # Returns a PDK::Config::Namespace for the specified environment.conf file.
+ # Note there is no validation of the path.
+ #
+ # @param path [String] The path to the environment.conf file
+ #
+ # @return [PDK::Config::IniFile] The configuration file
+ def environment_conf_as_config(path)
+ PDK::Config::IniFile.new('environment', file: path) do
+ setting :modulepath do
+ # As per https://puppet.com/docs/puppet/latest/config_file_environment.html#allowed-settings
+ default_to { 'modules:$basemodulepath' }
+ end
+
+ setting :manifest do
+ # As per https://puppet.com/docs/puppet/latest/config_file_environment.html#allowed-settings
+ default_to { 'manifests/' }
+ end
+ end
+ end
+ module_function :environment_conf_as_config
+
+ def default_ignored_pathspec(ignore_dotfiles = true)
+ require 'pathspec'
+
+ PathSpec.new(DEFAULT_IGNORED).tap do |ps|
+ ps.add('.*') if ignore_dotfiles
+ end
+ end
+ module_function :default_ignored_pathspec
+ end
+end