Module: Utils::Inreplace Private
- Included in:
- Cask::Migrator, Formula
- Defined in:
- utils/inreplace.rb
Overview
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Helper functions for replacing text in files in-place.
Defined Under Namespace
Classes: Error
Class Method Summary collapse
-
.inreplace(paths, before = nil, after = nil, audit_result = true) ⇒ void
Sometimes we have to change a bit before we install.
-
.inreplace_pairs(path, replacement_pairs, read_only_run: false, silent: false) ⇒ Object
private
Class Method Details
.inreplace(paths, before = nil, after = nil, audit_result = true) ⇒ void
This method returns an undefined value.
Sometimes we have to change a bit before we install. Mostly we
prefer a patch, but if you need the prefix of
this formula in the patch you have to resort to inreplace
,
because in the patch you don’t have access to any variables
defined by the formula, as only HOMEBREW_PREFIX
is available
in the embedded patch.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'utils/inreplace.rb', line 48 def inreplace(paths, before = nil, after = nil, audit_result = true) # rubocop:disable Style/OptionalBooleanParameter after = after.to_s if after.is_a? Symbol errors = {} errors["`paths` (first) parameter"] = ["`paths` was empty"] if paths.blank? Array(paths).each do |path| str = File.binread(path) s = StringInreplaceExtension.new(str) if before.nil? && after.nil? yield s else s.gsub!(T.must(before), after, audit_result) end errors[path] = s.errors unless s.errors.empty? Pathname(path).atomic_write(s.inreplace_string) end raise Utils::Inreplace::Error, errors if errors.present? end |
.inreplace_pairs(path, replacement_pairs, read_only_run: false, silent: false) ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'utils/inreplace.rb', line 74 def inreplace_pairs(path, replacement_pairs, read_only_run: false, silent: false) str = File.binread(path) contents = StringInreplaceExtension.new(str) replacement_pairs.each do |old, new| ohai "replace #{old.inspect} with #{new.inspect}" unless silent unless old contents.errors << "No old value for new value #{new}! Did you pass the wrong arguments?" next end contents.gsub!(old, new) end raise Utils::Inreplace::Error, path => contents.errors if contents.errors.present? Pathname(path).atomic_write(contents.inreplace_string) unless read_only_run contents.inreplace_string end |