feat: install via homebrew (#9)

Add a release job that regenerates Formula/soulseek-rs.rb in michel/homebrew-tap
from the archives the binaries matrix uploads, and lead with
`brew install michel/tap/soulseek-rs` in the READMEs and on the website.
This commit is contained in:
Michel de Graaf
2026-07-25 03:18:53 +02:00
committed by GitHub
parent d84360a803
commit 9c966672af
7 changed files with 116 additions and 19 deletions
+3 -3
View File
@@ -84,13 +84,13 @@ export const Docs = () => {
<Section>
<SectionHead eyebrow="1 · first run" title="Two commands to a running client.">
You need a Rust toolchain. After <Code>cargo install</Code>, the binary is on your
PATH.
Homebrew puts the binary on your PATH. With a Rust toolchain,{' '}
<Code>cargo install soulseek-rs</Code> does the same.
</SectionHead>
<Cols start>
<Terminal
lines={[
{ t: 'cmd', text: 'cargo install soulseek-rs' },
{ t: 'cmd', text: 'brew install michel/tap/soulseek-rs' },
{ t: 'cmd', text: 'soulseek-rs' },
{ t: 'cm', text: '# the TUI opens; log in or register on first run' },
]}
+3 -3
View File
@@ -143,7 +143,7 @@ export const Home = () => {
<Button href="/docs">Read the docs</Button>
<Button href={LINKS.gh}>GitHub</Button>
</div>
<CommandPill text="cargo install soulseek-rs" />
<CommandPill text="brew install michel/tap/soulseek-rs" />
</div>
</div>
@@ -312,7 +312,7 @@ export const Home = () => {
Install it, then press <span className="text-accent-text">s</span> to search.
</h2>
<p className="text-secondary">
Needs a Rust toolchain. From there it&rsquo;s one command, then the TUI opens.
One command on macOS or Linux, then the TUI opens. No Rust toolchain needed.
</p>
<div className="mt-1.5 flex flex-wrap gap-2 sm:gap-3">
<Button href="/docs" variant="accent">
@@ -324,7 +324,7 @@ export const Home = () => {
<Terminal
label="quick start"
lines={[
{ t: 'cmd', text: 'cargo install soulseek-rs' },
{ t: 'cmd', text: 'brew install michel/tap/soulseek-rs' },
{ t: 'cmd', text: 'soulseek-rs' },
]}
/>
+17 -12
View File
@@ -183,15 +183,24 @@ export const Install = () => {
return (
<>
<PageHead eyebrow="install" title="Three ways in.">
One command if you have Rust. Build from source if you&rsquo;d rather. Or depend on
the library and write your own client.
One command with Homebrew or cargo. Build from source if you&rsquo;d rather. Or
depend on the library and write your own client.
</PageHead>
<Section>
<div className="flex flex-col gap-9">
<Step n={1} title="Install the client">
<p className="text-secondary">
Needs a Rust toolchain, available from{' '}
Homebrew, on macOS or Linux. A prebuilt binary, so no Rust toolchain:
</p>
<Terminal
lines={[
{ t: 'cmd', text: 'brew install michel/tap/soulseek-rs' },
{ t: 'cmd', text: 'soulseek-rs' },
]}
/>
<p className="text-secondary">
With a Rust toolchain from{' '}
<a
href={LINKS.rustup}
target="_blank"
@@ -200,17 +209,13 @@ export const Install = () => {
>
rustup.rs
</a>
. Then:
, cargo works everywhere else:
</p>
<Terminal
lines={[
{ t: 'cmd', text: 'cargo install soulseek-rs' },
{ t: 'cmd', text: 'soulseek-rs' },
]}
/>
<Terminal lines={[{ t: 'cmd', text: 'cargo install soulseek-rs' }]} />
<p className="text-[13px] text-muted">
Cargo puts the binary on your PATH. Run <Code>soulseek-rs</Code> in a terminal
and the TUI opens, in a script or a pipe it wants a subcommand instead.
Either way the binary lands on your PATH. Run <Code>soulseek-rs</Code> in a
terminal and the TUI opens, in a script or a pipe it wants a subcommand
instead.
</p>
<div className="flex flex-wrap gap-2 sm:gap-3">
<Button href={LINKS.releases}>Prebuilt binaries</Button>