52 lines
2.1 KiB
Ruby
52 lines
2.1 KiB
Ruby
class BeefyPlayer < Formula
|
|
include Language::Python::Virtualenv
|
|
|
|
desc "Terminal player for internet radio with a live spectrum analyser"
|
|
homepage "https://tildeforge.dev/beefcarver/beefy-player"
|
|
url "https://tildeforge.dev/beefcarver/beefy-player/releases/download/v1.2.2/beefy-player-1.2.2.tar.gz"
|
|
sha256 "0000000000000000000000000000000000000000000000000000000000000000" # TODO: release asset
|
|
license "WTFPL"
|
|
head "https://tildeforge.dev/beefcarver/beefy-player.git", branch: "main"
|
|
|
|
depends_on "[email protected]"
|
|
|
|
# numpy and pillow are large native builds. Depending on Homebrew's own
|
|
# formulae (which have bottles) keeps them out of the app's virtualenv build;
|
|
# the venv sees them through system site-packages.
|
|
depends_on "numpy"
|
|
depends_on "pillow"
|
|
|
|
# Runtime tools the app shells out to: mpv for audio, ffmpeg for the stream
|
|
# decode fallback of the spectrum analyser. Both are optional at runtime --
|
|
# the UI degrades gracefully -- but a radio player without them is not much fun.
|
|
depends_on "ffmpeg"
|
|
depends_on "mpv"
|
|
|
|
# Tells `brew update-python-resources` what to resolve: numpy/pillow come from
|
|
# the formulae above, and dbus-next is marker-gated to Linux upstream so it
|
|
# has to be requested explicitly for the Linux side of the tap.
|
|
pypi_packages exclude_packages: "numpy,pillow", extra_packages: "dbus-next"
|
|
|
|
def install
|
|
# system_site_packages is the default, so the excluded numpy/pillow from the
|
|
# formulae are importable from the virtualenv.
|
|
virtualenv_install_with_resources
|
|
end
|
|
|
|
def caveats
|
|
<<~EOS
|
|
The spectrum analyser follows what you hear. On macOS 14.2+ grant your
|
|
terminal permission under System Settings > Privacy & Security > System
|
|
Audio Recording, otherwise it falls back to decoding the stream.
|
|
|
|
Inside tmux, install `tmux` for image passthrough.
|
|
EOS
|
|
end
|
|
|
|
test do
|
|
assert_match version.to_s, shell_output("#{bin}/beefy-player --version")
|
|
# --offline keeps the test hermetic: cached or bundled stations only.
|
|
assert_match(/^# /, shell_output("#{bin}/beefy-player --offline --list"))
|
|
end
|
|
end
|