utils/shebang: add rewrite_shebang

This commit is contained in:
Bo Anderson 2020-03-27 13:04:10 +00:00
parent 0fd66ee398
commit 119b3fe69a
2 changed files with 29 additions and 0 deletions

View File

@ -6,6 +6,7 @@ require "lock_file"
require "formula_pin" require "formula_pin"
require "hardware" require "hardware"
require "utils/bottles" require "utils/bottles"
require "utils/shebang"
require "utils/shell" require "utils/shell"
require "build_environment" require "build_environment"
require "build_options" require "build_options"
@ -50,6 +51,7 @@ require "find"
class Formula class Formula
include FileUtils include FileUtils
include Utils::Inreplace include Utils::Inreplace
include Utils::Shebang
include Utils::Shell include Utils::Shell
extend Enumerable extend Enumerable
extend Forwardable extend Forwardable

View File

@ -0,0 +1,27 @@
# frozen_string_literal: true
module Utils
module Shebang
module_function
class RewriteInfo
attr_reader :regex, :max_length, :replacement
def initialize(regex, max_length, replacement)
@regex = regex
@max_length = max_length
@replacement = replacement
end
end
def rewrite_shebang(rewrite_info, *paths)
paths.each do |f|
f = Pathname(f)
next unless f.file?
next unless rewrite_info.regex.match?(f.read(rewrite_info.max_length))
Utils::Inreplace.inreplace f.to_s, rewrite_info.regex, "#!#{rewrite_info.replacement}"
end
end
end
end