File: tempfile.rb

package info (click to toggle)
vagrant 2.3.7%2Bgit20230731.5fc64cde%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 17,616 kB
  • sloc: ruby: 111,820; sh: 462; makefile: 123; ansic: 34; lisp: 1
file content (39 lines) | stat: -rw-r--r-- 781 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
require 'fileutils'
require 'tmpdir'

module Vagrant
  module Util
    class Tempfile < ::Tempfile

      def initialize(basename)
        super(basename, private_tmpdir)
      end

      def private_tmpdir
        self.class.private_tmpdir
      end

      def self.private_tmpdir
        @private_tmpdir ||=
          begin
            user = Etc.getpwuid.name
            pid = Process.pid
            tmpdir = File.join(Dir.tmpdir, "vagrant-#{user}-#{pid}")
            FileUtils.mkdir_p(tmpdir)
            FileUtils.chmod(0700, tmpdir)
            tmpdir
          end
      end

      def self.mktmpdir(prefix_suffix)
        Dir.mktmpdir(prefix_suffix, private_tmpdir)
      end


    end
  end
end

at_exit do
  FileUtils.rm_rf(Vagrant::Util::Tempfile.private_tmpdir)
end