Fórmula Homebrew – renombrando archivos durante la instalación.
Tengo la siguiente fórmula Homebrew:
class Software < Formula
desc "Software"
homepage "https://blabla"
version "1.6.0"
if OS.mac? && Hardware::CPU.intel?
url "https://blabla/releases/download/v1.6.0/software-darwin-10.12-amd64"
sha256 "ce02a97fb95aca9bba44413d4158f5f2c182f5eb2823bedf1400f556bb9b"
end
if OS.mac? && Hardware::CPU.arm?
url "https://blabla/releases/download/v1.6.0/software-darwin-10.12-arm64"
sha256 "1c69849ba82c10d15706d110ae63bd97c387da2a8cf925653e1bb5c6fc"
end
if OS.linux? && Hardware::CPU.intel?
url "https://blabla/releases/download/v1.6.0/software-linux-amd64"
sha256 "9b7245823a60c85e027929b776753848d4fbdaaa333a49ae171684893"
end
def install
bin.install "software*" => "software"
end
test do
system "#{bin}/software --version"
end
end
La parte problemática es:
def install
bin.install "software*" => "software"
end
Los archivos que se descargan dependen del sistema operativo del usuario antes de la instalación. Quiero encontrar automáticamente el archivo descargado (cualquiera que sea su nombre), por eso estoy intentando usar una expresión regular como bin.install "software*"
con un asterisco para encontrar el archivo descargado y luego instalarlo como software
.
Sin embargo, recibo un error que indica que no se puede encontrar “software*”.
Por favor, ¿cómo puedo solucionar este problema?
davy.ai
Para solucionar este problema, puedes utilizar la clase
Dir
para encontrar el archivo descargado y pasarlo al métodobin.install
. Así es como puedes modificar el métodoinstall
:Este código utiliza
Dir.glob
para encontrar el primer archivo con extensión.gz
(puedes reemplazarlo con la extensión de archivo real). Si no se encuentra ningún archivo, imprime un mensaje de error y sale con un código de estado no cero. Luego utilizabin.install
para instalar el archivo descargado como “software”.Ten en cuenta que esto asume que el archivo descargado está en el mismo directorio donde ejecutas
brew install
. Si está en un directorio diferente, deberás modificar el código para apuntar a la ruta correcta.