summaryrefslogtreecommitdiffstats
path: root/lib/puppet/util/execution.rb
blob: 69f4f2c1584e8fac2f9a9b929233a6344723b63a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Puppet::Util::Execution
  module_function

  # Run some code with a specific environment.  Resets the environment back to
  # what it was at the end of the code.
  def withenv(hash)
    saved = ENV.to_hash
    hash.each do |name, val|
      ENV[name.to_s] = val
    end

    yield
  ensure
    ENV.clear
    saved.each do |name, val|
      ENV[name] = val
    end
  end
end