require_relative "../require/macfuse" class RcloneMac < Formula desc "Rsync for cloud storage (with macOS FUSE mount support)" homepage "https://rclone.org/" url "https://github.com/rclone/rclone/archive/refs/tags/v1.72.1.tar.gz" sha256 "322c73932b533571880832c0e07abdf9492c7f329b7d1dcdbd2a195fa2635a77" license "MIT" head "https://github.com/rclone/rclone.git", branch: "master" bottle do root_url "https://ghcr.io/v2/gromgit/fuse" sha256 cellar: :any_skip_relocation, arm64_tahoe: "4fbfed6cbd727a74761f9e5918aa4d2cc576fe5aefe76fa7a8a2f2e491693f07" sha256 cellar: :any_skip_relocation, arm64_sequoia: "c3217d9951aa76172bba74eddd191554eecc85e67bfb0926e4abc0ee79a7d400" sha256 cellar: :any_skip_relocation, arm64_sonoma: "93cd3973b52d0d34b0b3301e0876cfe601574523b321c5021c658f2ab362b644" end depends_on "go" => :build depends_on MacfuseRequirement depends_on :macos def install setup_fuse system "go", "build", "-ldflags", "-s -X github.com/rclone/rclone/fs.Version=v#{version}", "-tags", "cmount", *std_go_args (libexec/"rclone").install_symlink bin/name.to_s => "rclone" man1.install "rclone.1" => "#{name}.1" system bin/name.to_s, "genautocomplete", "bash", "rclone.bash" system bin/name.to_s, "genautocomplete", "bash", "#{name}.bash" system bin/name.to_s, "genautocomplete", "zsh", "_rclone" system bin/name.to_s, "genautocomplete", "zsh", "_#{name}" bash_completion.install "rclone.bash" => "rclone" bash_completion.install "#{name}.bash" => name.to_s zsh_completion.install "_rclone" zsh_completion.install "_#{name}" end def caveats <<~EOS The rclone binary has been installed as `#{name}`, to avoid conflict with the core `rclone` formula. If you need to use it as `rclone`, add the "rclone" directory to your PATH like: PATH="#{opt_libexec}/rclone:$PATH" `#{name}` supports the `mount` command on macOS, unlike the Homebrew core `rclone`. If you don't need `mount`, please `brew install rclone` instead. EOS end test do (testpath/"file1.txt").write "Test!" system bin/name.to_s, "copy", testpath/"file1.txt", testpath/"dist" assert_match File.read(testpath/"file1.txt"), File.read(testpath/"dist/file1.txt") system opt_libexec/"rclone/rclone", "copy", testpath/"file1.txt", testpath/"dast" assert_match File.read(testpath/"file1.txt"), File.read(testpath/"dast/file1.txt") end end