Spec-Zone.ru › Homebrew

Класс: 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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • prefix (String)
  • retain (Boolean) (по умолчанию: false)
  • retain_in_cache (Boolean) (по умолчанию: false)


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, используемому при этом запуске

Возвращает:

  • (Pathname, nil)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Истинно, если подготовленные временные файлы следует сохранить.

Возвращает:

  • (Boolean)


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

def retain?
  @retain
end

#retain_in_cache? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Истинно, если исходные файлы следует сохранить.

Возвращает:

  • (Boolean)


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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • chdir (Boolean) (по умолчанию: true)
  • _block (T.proc.params(arg0: Mktemp).returns(T.type_parameter(:U)))

Возвращает:

  • (T.type_parameter(:U))


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
    message = retain_in_cache? ? "Source files for debugging available at:" : "Temporary files retained at:"
    ohai message, @tmpdir.to_s
  end
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/Mktemp.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API