Merge pull request #20351 from Homebrew/fix_pathname_types

extend/pathname: fix type signature for write_env_script.
This commit is contained in:
Mike McQuaid 2025-08-01 14:43:19 +00:00 committed by GitHub
commit d746234dcd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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} "$@"