extend/pathname: fix type signature for write_env_script.

It needs to be more permissive.
This commit is contained in:
Mike McQuaid 2025-08-01 14:15:55 +01:00
parent 53b900663a
commit ea53fdc096
No known key found for this signature in database

View File

@ -289,15 +289,27 @@ class Pathname
end end
# Writes an exec script that sets environment variables. # 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 } sig {
def write_env_script(target, args, env = nil) params(target: Pathname,
unless env args_or_env: T.any(String, T::Array[String], T::Hash[String, String], T::Hash[Symbol, String]),
env = args env: T.any(T::Hash[String, String], T::Hash[Symbol, String])).void
args = nil }
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 end
env_export = +"" env_export = +""
env.each { |key, value| env_export << "#{key}=\"#{value}\" " } env.each { |key, value| env_export << "#{key}=\"#{value}\" " }
dirname.mkpath dirname.mkpath
write <<~SH write <<~SH
#!/bin/bash #!/bin/bash
#{env_export}exec "#{target}" #{args} "$@" #{env_export}exec "#{target}" #{args} "$@"