git: 140e508d96b1 - main - misc/crush: add port: Glamourous AI coding agent for your favourite terminal

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Fri, 26 Sep 2025 08:19:49 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=140e508d96b106dc63aff68e54ff055d89075f82

commit 140e508d96b106dc63aff68e54ff055d89075f82
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-09-26 08:18:19 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-09-26 08:18:19 +0000

    misc/crush: add port: Glamourous AI coding agent for your favourite terminal
    
    Your new coding bestie, now available in your favourite terminal. Your
    tools, your code, and your workflows, wired into your LLM of choice.
    
    Features:
    - Multi-Model: choose from a wide range of LLMs or add your own via
      OpenAI- or Anthropic-compatible APIs
    - Flexible: switch LLMs mid-session while preserving context
    - Session-Based: maintain multiple work sessions and contexts per
      project
    - LSP-Enhanced: Crush uses LSPs for additional context, just like you
      do
    - Extensible: add capabilities via MCPs (http, stdio, and sse)
    - Works Everywhere: first-class support in every terminal on macOS,
      Linux, Windows (PowerShell and WSL), FreeBSD, OpenBSD, and NetBSD
    
    WWW: https://github.com/charmbracelet/crush
---
 misc/Makefile        |  1 +
 misc/crush/Makefile  | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 misc/crush/distinfo  |  5 ++++
 misc/crush/pkg-descr | 14 ++++++++++++
 4 files changed, 84 insertions(+)

diff --git a/misc/Makefile b/misc/Makefile
index e378074a4271..75433ffc5b7a 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -78,6 +78,7 @@
     SUBDIR += cpp-mcp
     SUBDIR += cpuid
     SUBDIR += crosti
+    SUBDIR += crush
     SUBDIR += cryptoballot
     SUBDIR += cs
     SUBDIR += cstream
diff --git a/misc/crush/Makefile b/misc/crush/Makefile
new file mode 100644
index 000000000000..7f21afdd4823
--- /dev/null
+++ b/misc/crush/Makefile
@@ -0,0 +1,64 @@
+PORTNAME=	crush
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.10.0
+CATEGORIES=	misc devel
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Glamourous AI coding agent for your favourite terminal
+WWW=		https://github.com/charmbracelet/crush
+
+LICENSE=	FSL-1.1-MIT
+LICENSE_NAME=	Functional Source License, Version 1.1, MIT Future License
+LICENSE_FILE=	${WRKSRC}/LICENSE.md
+LICENSE_PERMS=	dist-mirror pkg-mirror auto-accept
+
+USES=		go:1.25,modules
+
+GO_MODULE=	github.com/charmbracelet/crush
+GO_BUILDFLAGS=	-ldflags '-s -w -X github.com/charmbracelet/crush/internal/version.Version=${DISTVERSION}'
+
+PLIST_FILES=	bin/${PORTNAME}
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=		COMPLETIONS DOCS MANPAGES
+OPTIONS_DEFAULT=	COMPLETIONS MANPAGES
+
+COMPLETIONS_DESC=	Build and/or install shell completions
+
+COMPLETIONS_PLIST_FILES=etc/bash_completion.d/${PORTNAME} \
+			share/fish/completions/${PORTNAME}.fish \
+			share/zsh/site-functions/_${PORTNAME}
+
+MANPAGES_PLIST_FILES=	share/man/man1/${PORTNAME}.1.gz
+
+post-build-COMPLETIONS-on:
+	@${MKDIR} ${GO_WRKSRC}/completions
+.for sh in bash fish zsh
+	${GO_WRKDIR_BIN}/${PORTNAME} completion ${sh} > \
+		${GO_WRKSRC}/completions/${PORTNAME}.${sh}
+.endfor
+
+post-build-MANPAGES-on:
+	@${MKDIR} ${GO_WRKSRC}/manpages
+	${GO_WRKDIR_BIN}/${PORTNAME} man > ${GO_WRKSRC}/manpages/${PORTNAME}.1
+
+post-install-COMPLETIONS-on:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d \
+		${STAGEDIR}${PREFIX}/share/fish/completions \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions
+	${INSTALL_DATA} ${GO_WRKSRC}/completions/${PORTNAME}.bash \
+		${STAGEDIR}${PREFIX}/etc/bash_completion.d/${PORTNAME}
+	${INSTALL_DATA} ${GO_WRKSRC}/completions/${PORTNAME}.fish \
+		${STAGEDIR}${PREFIX}/share/fish/completions/${PORTNAME}.fish
+	${INSTALL_DATA} ${GO_WRKSRC}/completions/${PORTNAME}.zsh \
+		${STAGEDIR}${PREFIX}/share/zsh/site-functions/_${PORTNAME}
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${GO_WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+post-install-MANPAGES-on:
+	${INSTALL_MAN} ${GO_WRKSRC}/manpages/${PORTNAME}.1 \
+		${STAGEDIR}/${PREFIX}/share/man/man1
+
+.include <bsd.port.mk>
diff --git a/misc/crush/distinfo b/misc/crush/distinfo
new file mode 100644
index 000000000000..47ef47e7c232
--- /dev/null
+++ b/misc/crush/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1758850313
+SHA256 (go/misc_crush/crush-v0.10.0/v0.10.0.mod) = cb98fa5300921546e5b1d9686f42a5332767b7173b1150a880425e6def1d279f
+SIZE (go/misc_crush/crush-v0.10.0/v0.10.0.mod) = 8048
+SHA256 (go/misc_crush/crush-v0.10.0/v0.10.0.zip) = dc69be92b03168d6274f7e9cb5a8cacc5698780890de893e9a45304ac178c276
+SIZE (go/misc_crush/crush-v0.10.0/v0.10.0.zip) = 757602
diff --git a/misc/crush/pkg-descr b/misc/crush/pkg-descr
new file mode 100644
index 000000000000..cc5a9b3b3361
--- /dev/null
+++ b/misc/crush/pkg-descr
@@ -0,0 +1,14 @@
+Your new coding bestie, now available in your favourite terminal. Your
+tools, your code, and your workflows, wired into your LLM of choice.
+
+Features:
+- Multi-Model: choose from a wide range of LLMs or add your own via
+  OpenAI- or Anthropic-compatible APIs
+- Flexible: switch LLMs mid-session while preserving context
+- Session-Based: maintain multiple work sessions and contexts per
+  project
+- LSP-Enhanced: Crush uses LSPs for additional context, just like you
+  do
+- Extensible: add capabilities via MCPs (http, stdio, and sse)
+- Works Everywhere: first-class support in every terminal on macOS,
+  Linux, Windows (PowerShell and WSL), FreeBSD, OpenBSD, and NetBSD