class MenuBarVpnBinary < Formula
  desc "MenuBarVPN — prebuilt encrypted binary (no source compile)"
  version "1.0.0"

  if Hardware::CPU.arm?
    url "https://shyamalschandra.github.io/menu-bar-vpn/releases/menu-bar-vpn-1.0.0-arm64.enc"
    sha256 "d47be5c7820e4bc8a48a9aad20a4a9d44ee2df21a9898654e66c80429ac21644"
  else
    odie "menu-bar-vpn-binary: Intel binary release is not published yet."
  end

  depends_on macos: :ventura
  depends_on "openssl@3"
  depends_on "wireguard-tools"
  depends_on "tor"

  def release_key
    p1 = "bWJ2cG4tcHJvZA=="
    p2 = "LThlNGIxYzlmMmE3ZDVlM2IwYzZhOGYxZDRlN2IyYzlh"
    Base64.decode64(p1) + Base64.decode64(p2)
  end

  def install
    enc = cached_download
    tarball = buildpath/"payload.tar.gz"

    system Formula["openssl@3"].opt_bin/"openssl", "enc", "-d",
           "-aes-256-cbc", "-pbkdf2", "-iter", "250000",
           "-pass", "pass:#{release_key}",
           "-in", enc, "-out", tarball

    odie "decryption failed" unless tarball.exist?

    cd buildpath do
      system "tar", "-xzf", tarball
    end

    bin.install "payload/bin/menu-bar-vpn"
    prefix.install "payload/app/MenuBarVPN.app"
  end

  test do
    assert_predicate bin/"menu-bar-vpn", :executable?
  end
end
