如何使用 Homebrew 安装整个目录的文件?

How to install a whole directory of files with Homebrew?

我正在使用 Homebrew 安装脚本,这取决于与脚本位于同一目录中的资源目录。例如:

.
├── directory/
└── script.sh

如何创建一个目录,其中 script.sh 是用 Homebrew 安装的?我试过我的公式:

class Script < Formula
  ...
  def install
    bin.install "script.sh"
    bin.install "directory/"
  end
end

问题是 script.shdirectory/ 都安装到 /usr/local/Cellar/script/,但只有 script.sh 安装到 /usr/local/bin/

我也试过用bin.install Dir["directory/"]替换bin.install "directory/,但没有解决问题。

我如何做到 script.sh 可以从我的公式中看到 directory/,它在 /usr/local/Cellar/script/directory/ 中?我可以在我的公式中从 /usr/local/bin 建立符号链接吗?

这是 Homebrew 公式中的常见模式。解决方案不是在 bin/ 下安装目录,因为该目录应该只包含可执行文件,而是在某个地方同时安装脚本和目录,然后在 bin/ 中创建一个包装器从那个地方调用脚本。

  1. 安装 libexec 下的所有内容:

     libexec.install Dir["*"]
    
  2. bin中写一个包装器:

     bin.write_exec_script libexec/"script.sh"
    

完整公式:

class Myformula < Formula
  desc "..."
  homepage "..."
  url "..."
  sha256 "..."
  
  def install
    libexec.install Dir["*"]
    bin.write_exec_script libexec/"script.sh"
  end
end