Method: Puppet::Util::Settings#writesub

Defined in:
lib/vendor/puppet/util/settings.rb

#writesub(default, file, *args, &bloc) ⇒ Object

Open a non-default file under a default dir with the appropriate user, group, and mode



705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
# File 'lib/vendor/puppet/util/settings.rb', line 705

def writesub(default, file, *args, &bloc)
  obj = get_config_file_default(default)
  chown = nil
  if Puppet.features.root?
    chown = [obj.owner, obj.group]
  else
    chown = [nil, nil]
  end

  Puppet::Util::SUIDManager.asuser(*chown) do
    mode = obj.mode ? obj.mode.to_i : 0640
    args << "w" if args.empty?

    args << mode

    # Update the umask to make non-executable files
    Puppet::Util.withumask(File.umask ^ 0111) do
      File.open(file, *args) do |file|
        yield file
      end
    end
  end
end