Spec-Zone.ru › Homebrew

Модуль: EnvSensitive Приватный

Расширяет:
T::Helpers
Включён в:
ENV, EnvActivation
Определён в:
extend/ENV.rbi,
extend/ENV/sensitive.rb

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

Краткое описание констант свернуть

DEFERRED_PLACEHOLDER_PREFIX =

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

bin/brew повторно запускается только с переменными HOMEBREW_* (а также фиксированным списком разрешённых несекретных переменных) в окружении, поэтому каждый секрет, достигающий этапа вычисления формул и бочек, становится HOMEBREW_*. Эти маркеры заключают имя отложенного секрета, подставляемое в DSL вместо реального значения; реальное значение подставляется обратно во время загрузки с помощью expand_deferred_environment.

"{{HOMEBREW_DEFERRED_ENV:"
DEFERRED_PLACEHOLDER_SUFFIX =
"}}"

Краткое описание методов экземпляра свернуть

  • #clear_sensitive_environment!(except: [], defer: false, &block) ⇒ T.untyped приватный
  • #clear_sensitive_environment_for_eval!(&block) ⇒ T.untyped приватный
  • #expand_deferred_environment(value) ⇒ String приватный

    Этот метод вызывается только в процессе загрузки (в header:/specs URL-адреса), поэтому замаскированный секрет разрешается в реальное значение только при загрузке и нигде больше в DSL.

  • #sensitive?(key) ⇒ Boolean приватный
  • #sensitive_environment ⇒ Hash{String => String} приватный

Подробное описание методов экземпляра

#clear_sensitive_environment!(except: [], defer: false, &block) ⇒ T.untyped

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

Параметры:

  • except (Array<String>) (по умолчанию: [])
  • defer (Boolean) (по умолчанию: false)
  • block (T.proc.returns(T.untyped), nil)

Возвращает:

  • (T.untyped)


36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'extend/ENV/sensitive.rb', line 36

def clear_sensitive_environment!(except: [], defer: false, &block)
  unless block
    each_key do |key|
      next unless sensitive?(key)
      next if except.include?(key)

      if defer
        self[key] = "#{DEFERRED_PLACEHOLDER_PREFIX}#{key}#{DEFERRED_PLACEHOLDER_SUFFIX}"
      else
        delete key
      end
    end
    return
  end

  old_env = to_hash.dup
  begin
    clear_sensitive_environment!(except:, defer:)
    yield
  ensure
    replace(old_env)
  end
end

#clear_sensitive_environment_for_eval!(&block) ⇒ T.untyped

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

Параметры:

  • block (T.proc.returns(T.untyped))

Возвращает:

  • (T.untyped)


61
62
63
# File 'extend/ENV/sensitive.rb', line 61

def clear_sensitive_environment_for_eval!(&block)
  clear_sensitive_environment!(except: ["HOMEBREW_GITHUB_API_TOKEN"], defer: true, &block)
end

#expand_deferred_environment(value) ⇒ String

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

Этот метод вызывается только в процессе загрузки (в header:/specs URL-адреса), поэтому замаскированный секрет разрешается в реальное значение только при загрузке и нигде больше в DSL.

Параметры:

  • value (String)

Возвращает:

  • (String)


69
70
71
72
73
74
75
76
77
78
# File 'extend/ENV/sensitive.rb', line 69

def expand_deferred_environment(value)
  return value unless value.include?(DEFERRED_PLACEHOLDER_PREFIX)

  prefix = Regexp.escape(DEFERRED_PLACEHOLDER_PREFIX)
  suffix = Regexp.escape(DEFERRED_PLACEHOLDER_SUFFIX)
  value.gsub(/#{prefix}(HOMEBREW_\w+)#{suffix}/) do
    name = Regexp.last_match(1)
    name ? fetch(name, "") : ""
  end
end

#sensitive?(key) ⇒ Boolean

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

Параметры:

  • key (String, Symbol)

Возвращает:

  • (Boolean)


20
21
22
# File 'extend/ENV/sensitive.rb', line 20

def sensitive?(key)
  key.match?(/(cookie|key|token|password|passphrase|auth)/i)
end

#sensitive_environment ⇒ Hash{String => String}

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

Возвращает:

  • (Hash{String => String})


25
26
27
# File 'extend/ENV/sensitive.rb', line 25

def sensitive_environment
  select { |key, _| sensitive?(key) }
end

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

Spec-Zone.ru

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