Class: Mktemp
Overview
Performs Formula#mktemp's functionality, and tracks the results. Each instance is only intended to be used once.
Instance Attribute Summary collapse
-
#tmpdir ⇒ Object
readonly
Path to the tmpdir used in this run, as a Pathname.
Instance Method Summary collapse
-
#initialize(prefix = name, opts = {}) ⇒ Mktemp
constructor
A new instance of Mktemp.
-
#quiet! ⇒ Object
Instructs this Mktemp to not emit messages when retention is triggered.
-
#retain! ⇒ Object
Instructs this Mktemp to retain the staged files.
-
#retain? ⇒ Boolean
True if the staged temporary files should be retained.
- #run ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(prefix = name, opts = {}) ⇒ Mktemp
Returns a new instance of Mktemp.
12 13 14 15 16 |
# File 'Library/Homebrew/mktemp.rb', line 12 def initialize(prefix = name, opts = {}) @prefix = prefix @retain = opts[:retain] @quiet = false end |
Instance Attribute Details
#tmpdir ⇒ Object (readonly)
Path to the tmpdir used in this run, as a Pathname.
10 11 12 |
# File 'Library/Homebrew/mktemp.rb', line 10 def tmpdir @tmpdir end |
Instance Method Details
#quiet! ⇒ Object
Instructs this Mktemp to not emit messages when retention is triggered.
29 30 31 |
# File 'Library/Homebrew/mktemp.rb', line 29 def quiet! @quiet = true end |
#retain! ⇒ Object
Instructs this Mktemp to retain the staged files.
19 20 21 |
# File 'Library/Homebrew/mktemp.rb', line 19 def retain! @retain = true end |
#retain? ⇒ Boolean
True if the staged temporary files should be retained.
24 25 26 |
# File 'Library/Homebrew/mktemp.rb', line 24 def retain? @retain end |
#run ⇒ Object
37 38 39 40 41 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 |
# File 'Library/Homebrew/mktemp.rb', line 37 def run @tmpdir = Pathname.new(Dir.mktmpdir("#{@prefix}-", 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 { rm_rf(tmpdir) } unless retain? end ensure if retain? && !@tmpdir.nil? && !@quiet ohai "Kept temporary files" puts "Temporary files retained at #{@tmpdir}" end end |
#to_s ⇒ Object
33 34 35 |
# File 'Library/Homebrew/mktemp.rb', line 33 def to_s "[Mktemp: #{tmpdir} retain=#{@retain} quiet=#{@quiet}]" end |