Class: Mktemp

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Includes:
FileUtils
Defined in:
mktemp.rb

Overview

Performs Formula#mktemp’s functionality, and tracks the results. Each instance is only intended to be used once.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(prefix = name, opts = {}) ⇒ Mktemp

Returns a new instance of Mktemp.



14
15
16
17
18
# File 'mktemp.rb', line 14

def initialize(prefix = name, opts = {})
  @prefix = prefix
  @retain = opts[:retain]
  @quiet = false
end

Instance Attribute Details

#tmpdirObject (readonly)

Path to the tmpdir used in this run, as a Pathname.



12
13
14
# File 'mktemp.rb', line 12

def tmpdir
  @tmpdir
end

Instance Method Details

#quiet!void

This method returns an undefined value.

Instructs this Mktemp to not emit messages when retention is triggered.



33
34
35
# File 'mktemp.rb', line 33

def quiet!
  @quiet = true
end

#retain!void

This method returns an undefined value.

Instructs this Mktemp to retain the staged files.



22
23
24
# File 'mktemp.rb', line 22

def retain!
  @retain = true
end

#retain?Boolean

True if the staged temporary files should be retained.

Returns:

  • (Boolean)


27
28
29
# File 'mktemp.rb', line 27

def retain?
  @retain
end

#runObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'mktemp.rb', line 42

def run
  @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix.tr "@", "AT"}-", HOMEBREW_TEMP))

  # Make sure files inside the temporary directory have the same group as the
  # brew instance.
  #
  # Reference from `man 2 open`
  # > When a new file is created, it is given the group of the directory which
  # contains it.
  group_id = if HOMEBREW_BREW_FILE.grpowned?
    HOMEBREW_BREW_FILE.stat.gid
  else
    Process.gid
  end
  begin
    chown(nil, group_id, tmpdir)
  rescue Errno::EPERM
    opoo "Failed setting group \"#{Etc.getgrgid(group_id).name}\" on #{tmpdir}"
  end

  begin
    Dir.chdir(tmpdir) { yield self }
  ensure
    ignore_interrupts { chmod_rm_rf(tmpdir) } unless retain?
  end
ensure
  ohai "Temporary files retained at:", @tmpdir.to_s if retain? && !@tmpdir.nil? && !@quiet
end

#to_sString

Returns:



38
39
40
# File 'mktemp.rb', line 38

def to_s
  "[Mktemp: #{tmpdir} retain=#{@retain} quiet=#{@quiet}]"
end