Модуль: 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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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.
69 70 71 72 73 74 75 76 77 78 | # File 'extend/ENV/sensitive.rb', line 69 def (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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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