Class: Puppet::Settings::FileOrDirectorySetting

Inherits:
FileSetting show all
Defined in:
lib/puppet/settings/file_or_directory_setting.rb

Constant Summary

Constants inherited from BaseSetting

BaseSetting::HOOK_TYPES

Instance Attribute Summary

Attributes inherited from FileSetting

#mode

Attributes inherited from BaseSetting

#call_hook, #default, #deprecated, #desc, #name, #section, #short

Instance Method Summary collapse

Methods inherited from FileSetting

#exclusive_open, #group, #group=, #initialize, #open, #owner, #owner=, #set_meta, #to_resource

Methods inherited from StringSetting

#validate

Methods inherited from BaseSetting

#allowed_on_commandline?, available_call_hook_values, #call_hook_on_define?, #call_hook_on_initialize?, #completely_deprecated?, #deprecated?, #getopt_args, #has_hook?, #hook=, #initialize, #inspect, #iscreated, #iscreated?, #optparse_args, #print, #set_meta, #to_config, #value

Constructor Details

This class inherits a constructor from Puppet::Settings::FileSetting

Instance Method Details

#munge(value) ⇒ Object

Overrides munge to be able to read the un-munged value (the FileSetting.munch removes trailing slash)



14
15
16
17
18
19
# File 'lib/puppet/settings/file_or_directory_setting.rb', line 14

def munge(value)
  if value.is_a?(String) && value =~ /[\\\/]$/
    @path_ends_with_slash = true
  end
  super
end

#open_file(filename, option = 'r', &block) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Parameters:

  • option (String) (defaults to: 'r')

    Extra file operation mode information to use (defaults to read-only mode ‘r’) This is the standard mechanism Ruby uses in the IO class, and therefore encoding may be explicitly like fmode : encoding or fmode : “BOM|UTF-*” for example, a:ASCII or w+:UTF-8



28
29
30
31
32
33
34
35
36
# File 'lib/puppet/settings/file_or_directory_setting.rb', line 28

def open_file(filename, option = 'r', &block)
  if type == :file
    super
  else
    controlled_access do |mode|
      Puppet::FileSystem.open(filename, mode, option, &block)
    end
  end
end

#typeObject



4
5
6
7
8
9
10
# File 'lib/puppet/settings/file_or_directory_setting.rb', line 4

def type
  if Puppet::FileSystem.directory?(self.value) || @path_ends_with_slash
    :directory
  else
    :file
  end
end