mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
35 lines
909 B
Ruby
35 lines
909 B
Ruby
![]() |
# typed: true
|
||
|
# frozen_string_literal: true
|
||
|
|
||
|
# Used to substitute common paths with generic placeholders when generating JSON for the API.
|
||
|
module APIHashable
|
||
|
def generating_hash!
|
||
|
return if generating_hash?
|
||
|
|
||
|
# Apply monkeypatches for API generation
|
||
|
@old_homebrew_prefix = HOMEBREW_PREFIX
|
||
|
@old_home = Dir.home
|
||
|
Object.send(:remove_const, :HOMEBREW_PREFIX)
|
||
|
Object.const_set(:HOMEBREW_PREFIX, Pathname.new(HOMEBREW_PREFIX_PLACEHOLDER))
|
||
|
ENV["HOME"] = HOMEBREW_HOME_PLACEHOLDER
|
||
|
|
||
|
@generating_hash = true
|
||
|
end
|
||
|
|
||
|
def generated_hash!
|
||
|
return unless generating_hash?
|
||
|
|
||
|
# Revert monkeypatches for API generation
|
||
|
Object.send(:remove_const, :HOMEBREW_PREFIX)
|
||
|
Object.const_set(:HOMEBREW_PREFIX, @old_homebrew_prefix)
|
||
|
ENV["HOME"] = @old_home
|
||
|
|
||
|
@generating_hash = false
|
||
|
end
|
||
|
|
||
|
def generating_hash?
|
||
|
@generating_hash ||= false
|
||
|
@generating_hash == true
|
||
|
end
|
||
|
end
|