Класс: Mktemp Приватный
- Наследует:
- Object
- Object
- Mktemp
- Подключает:
- Utils::Output::Mixin
- Определён в:
- mktemp.rb
Обзор
Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Реализует функциональность Formula#mktemp и отслеживает результаты. Каждый экземпляр предназначен только для однократного использования. Также может использоваться для создания временного каталога с группой экземпляра brew.
Краткое описание атрибутов экземпляра свернуть
- #tmpdir ⇒ Pathname? только для чтения приватный
Путь к tmpdir, используемому в этом запуске.
Краткое описание методов экземпляра свернуть
- #initialize(prefix, retain: false, retain_in_cache: false) ⇒ void конструктор приватный
- #quiet! ⇒ void приватный
Указывает этому Mktemp не выводить сообщения при срабатывании сохранения.
- #retain! ⇒ void приватный
Указывает этому Mktemp сохранять подготовленные файлы.
- #retain? ⇒ Boolean приватный
True, если подготовленные временные файлы следует сохранить.
- #retain_in_cache? ⇒ Boolean приватный
True, если исходные файлы следует сохранить.
- #run(chdir: true, &_block) ⇒ T.type_parameter(:U) приватный
Методы, включённые из Utils::Output::Mixin
#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_upgradable, #pretty_warning
Подробное описание конструкторов
#initialize(prefix, retain: false, retain_in_cache: false) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
17 18 19 20 21 22 23 | # File 'mktemp.rb', line 17 def initialize(prefix, retain: false, retain_in_cache: false) @prefix = prefix @retain_in_cache = retain_in_cache @retain = T.let(retain || @retain_in_cache, T::Boolean) @quiet = T.let(false, T::Boolean) @tmpdir = T.let(nil, T.nilable(Pathname)) end |
Подробное описание атрибутов экземпляра
#tmpdir ⇒ Pathname? (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Путь к каталогу tmpdir, используемому при этом запуске
14 15 16 | # File 'mktemp.rb', line 14 def tmpdir @tmpdir end |
Подробное описание методов экземпляра
#quiet! ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Указывает этому Mktemp не выводить сообщения при срабатывании режима сохранения.
45 46 47 | # File 'mktemp.rb', line 45 def quiet! @quiet = true end |
#retain! ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Указывает этому Mktemp сохранять подготовленные файлы.
27 28 29 | # File 'mktemp.rb', line 27 def retain! @retain = true end |
#retain? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Истинно, если подготовленные временные файлы следует сохранить.
33 34 35 | # File 'mktemp.rb', line 33 def retain? @retain end |
#retain_in_cache? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Истинно, если исходные файлы следует сохранить.
39 40 41 | # File 'mktemp.rb', line 39 def retain_in_cache? @retain_in_cache end |
#run(chdir: true, &_block) ⇒ T.type_parameter(:U)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | # File 'mktemp.rb', line 60 def run(chdir: true, &_block) prefix_name = @prefix.tr "@", "AT" @tmpdir = if retain_in_cache? tmp_dir = HOMEBREW_CACHE/"Sources/#{prefix_name}" chmod_rm_rf(tmp_dir) # clear out previous staging directory tmp_dir.mkpath tmp_dir else Pathname.new(Dir.mktmpdir("#{prefix_name}-", HOMEBREW_TEMP)) end # 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_ORIGINAL_BREW_FILE.grpowned? HOMEBREW_ORIGINAL_BREW_FILE.stat.gid else Process.gid end begin @tmpdir.chown(nil, group_id) rescue Errno::EPERM require "etc" group_name = begin Etc.getgrgid(group_id)&.name rescue ArgumentError # Cover for misconfigured NSS setups nil end opoo "Failed setting group \"#{group_name || group_id}\" on #{@tmpdir}" end begin if chdir Dir.chdir(@tmpdir) { yield self } else yield self end ensure ignore_interrupts { chmod_rm_rf(@tmpdir) } unless retain? end ensure if retain? && @tmpdir.present? && !@quiet = retain_in_cache? ? "Source files for debugging available at:" : "Temporary files retained at:" ohai , @tmpdir.to_s end end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Mktemp.html