Class: ExternalPatch Private
- Extended by:
- Forwardable
- Includes:
- Utils::Output::Mixin
- Defined in:
- patch.rb,
sorbet/rbi/dsl/external_patch.rbi
Overview
This class is part of a private API. This class may only be used in the Homebrew/brew repository. Third parties should avoid using this class if possible, as it may be removed or changed without warning.
A file containing a patch.
Instance Attribute Summary collapse
- #resource ⇒ Resource::Patch readonly private
- #strip ⇒ String, Symbol readonly private
Instance Method Summary collapse
- #apply ⇒ void private
- #cached_download(*args, &block) ⇒ T.untyped private
- #clear_cache(*args, &block) ⇒ T.untyped private
- #downloaded?(*args, &block) ⇒ Boolean private
- #external? ⇒ Boolean private
- #fetch(*args, &block) ⇒ T.untyped private
- #initialize(strip, &block) ⇒ void constructor private
- #owner=(owner) ⇒ void private
- #patch_files(*args, &block) ⇒ T.untyped private
- #url(*args, &block) ⇒ T.untyped private
- #verify_download_integrity(*args, &block) ⇒ T.untyped private
Methods included from Utils::Output::Mixin
#odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #pretty_duration, #pretty_installed, #pretty_outdated, #pretty_uninstalled
Constructor Details
#initialize(strip, &block) ⇒ void
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.
143 144 145 146 |
# File 'patch.rb', line 143 def initialize(strip, &block) @strip = T.let(strip, T.any(String, Symbol)) @resource = T.let(Resource::Patch.new(&block), Resource::Patch) end |
Instance Attribute Details
#resource ⇒ Resource::Patch (readonly)
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.
133 134 135 |
# File 'patch.rb', line 133 def resource @resource end |
#strip ⇒ String, Symbol (readonly)
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.
136 137 138 |
# File 'patch.rb', line 136 def strip @strip end |
Instance Method Details
#apply ⇒ void
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.
This method returns an undefined value.
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 |
# File 'patch.rb', line 160 def apply base_dir = Pathname.pwd resource.unpack do patch_dir = Pathname.pwd if patch_files.empty? children = patch_dir.children if children.length != 1 || !children.fetch(0).file? raise MissingApplyError, <<~EOS There should be exactly one patch file in the staging directory unless the "apply" method was used one or more times in the patch-do block. EOS end patch_files << children.fetch(0).basename end dir = base_dir dir /= resource.directory if resource.directory.present? dir.cd do patch_files.each do |patch_file| ohai "Applying #{patch_file}" patch_file = patch_dir/patch_file Utils.safe_popen_write("patch", "-g", "0", "-f", "-#{strip}") do |p| File.foreach(patch_file) do |line| data = line.gsub("@@HOMEBREW_PREFIX@@", HOMEBREW_PREFIX) p.write(data) end end end end end rescue ErrorDuringExecution => e onoe e f = resource.owner.owner cmd, *args = e.cmd raise BuildError.new(f, cmd, args, ENV.to_hash) end |
#cached_download(*args, &block) ⇒ T.untyped
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.
10 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 10 def cached_download(*args, &block); end |
#clear_cache(*args, &block) ⇒ T.untyped
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.
13 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 13 def clear_cache(*args, &block); end |
#downloaded?(*args, &block) ⇒ Boolean
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.
16 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 16 def downloaded?(*args, &block); end |
#external? ⇒ Boolean
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.
149 150 151 |
# File 'patch.rb', line 149 def external? true end |
#fetch(*args, &block) ⇒ T.untyped
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.
19 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 19 def fetch(*args, &block); end |
#owner=(owner) ⇒ void
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.
This method returns an undefined value.
154 155 156 157 |
# File 'patch.rb', line 154 def owner=(owner) resource.owner = owner resource.version(resource.checksum&.hexdigest || ERB::Util.url_encode(resource.url)) end |
#patch_files(*args, &block) ⇒ T.untyped
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.
22 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 22 def patch_files(*args, &block); end |
#url(*args, &block) ⇒ T.untyped
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.
25 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 25 def url(*args, &block); end |
#verify_download_integrity(*args, &block) ⇒ T.untyped
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.
28 |
# File 'sorbet/rbi/dsl/external_patch.rbi', line 28 def verify_download_integrity(*args, &block); end |