From ea53fdc096d6f7890b96d0a234b087a126ae08bc Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Fri, 1 Aug 2025 14:15:55 +0100 Subject: [PATCH] extend/pathname: fix type signature for write_env_script. It needs to be more permissive. --- Library/Homebrew/extend/pathname.rb | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Library/Homebrew/extend/pathname.rb b/Library/Homebrew/extend/pathname.rb index e5b0a05b27..93d0ebf560 100644 --- a/Library/Homebrew/extend/pathname.rb +++ b/Library/Homebrew/extend/pathname.rb @@ -289,15 +289,27 @@ class Pathname end # Writes an exec script that sets environment variables. - sig { params(target: Pathname, args: T.any(T::Array[String], T::Hash[String, String]), env: T.nilable(T::Hash[String, String])).void } - def write_env_script(target, args, env = nil) - unless env - env = args - args = nil + sig { + params(target: Pathname, + args_or_env: T.any(String, T::Array[String], T::Hash[String, String], T::Hash[Symbol, String]), + env: T.any(T::Hash[String, String], T::Hash[Symbol, String])).void + } + def write_env_script(target, args_or_env, env = T.unsafe(nil)) + args = if env.nil? + env = args_or_env if args_or_env.is_a?(Hash) + + nil + elsif args_or_env.is_a?(Array) + args_or_env.join(" ") + else + T.cast(args_or_env, T.nilable(String)) end + env_export = +"" env.each { |key, value| env_export << "#{key}=\"#{value}\" " } + dirname.mkpath + write <<~SH #!/bin/bash #{env_export}exec "#{target}" #{args} "$@"