git: 69c6b53b7712 - main - sysutils/elephant: add port: Powerful data provider service and backend for application launchers

From: Hiroki Tagato <tagattie_at_FreeBSD.org>
Date: Wed, 17 Sep 2025 02:15:06 UTC
The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=69c6b53b77126e6cac417511f43971452663c41e

commit 69c6b53b77126e6cac417511f43971452663c41e
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2025-09-17 02:10:15 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2025-09-17 02:14:53 +0000

    sysutils/elephant: add port: Powerful data provider service and backend for application launchers
    
    Elephant - cuz it's phat - is a powerful data provider service and
    backend for building custom application launchers and desktop
    utilities. It provides various data sources and actions through a
    plugin-based architecture, communicating via Unix sockets and Protocol
    Buffers.
    
    Elephant acts as a unified backend service that aggregates data from
    various sources (desktop applications, files, clipboard history, etc.)
    and provides a consistent interface for frontend applications like
    custom launchers, productivity tools, or desktop widgets.
    
    WWW: https://github.com/abenz1267/elephant
---
 sysutils/Makefile           |  1 +
 sysutils/elephant/Makefile  | 90 +++++++++++++++++++++++++++++++++++++++++++++
 sysutils/elephant/distinfo  |  5 +++
 sysutils/elephant/pkg-descr | 10 +++++
 4 files changed, 106 insertions(+)

diff --git a/sysutils/Makefile b/sysutils/Makefile
index 3594a72a0159..a1b45d449a73 100644
--- a/sysutils/Makefile
+++ b/sysutils/Makefile
@@ -352,6 +352,7 @@
     SUBDIR += egress-monitor
     SUBDIR += eject
     SUBDIR += eksctl
+    SUBDIR += elephant
     SUBDIR += elfx86exts
     SUBDIR += endian
     SUBDIR += enteruser
diff --git a/sysutils/elephant/Makefile b/sysutils/elephant/Makefile
new file mode 100644
index 000000000000..a5090ec297f0
--- /dev/null
+++ b/sysutils/elephant/Makefile
@@ -0,0 +1,90 @@
+PORTNAME=	elephant
+DISTVERSIONPREFIX=	v
+DISTVERSION=	1.0.4
+CATEGORIES=	sysutils
+
+MAINTAINER=	tagattie@FreeBSD.org
+COMMENT=	Powerful data provider service and backend for application launchers
+WWW=		https://github.com/abenz1267/elephant
+
+LICENSE=	GPLv3
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+NOT_FOR_ARCHS=		i386
+NOT_FOR_ARCHS_REASON=	-buildmode=plugin not supported on freebsd/386
+
+USES=		go:1.25,modules
+
+GO_MODULE=	github.com/abenz1267/elephant
+GO_TARGET=	./cmd/elephant
+
+PLIST_FILES=	bin/${PORTNAME}
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=		DOCS
+OPTIONS_DEFAULT=	${OPTIONS_GROUP_PROVIDERS}
+OPTIONS_GROUP=		PROVIDERS
+OPTIONS_GROUP_PROVIDERS=CALC CLIPBOARD DESKTOPAPPLICATIONS FILES MENUS \
+			PROVIDERLIST RUNNER SYMBOLS TODO UNICODE WEBSEARCH
+
+PROVIDERS_DESC=		Enabled providers
+CALC_DESC=		Perform calculation and unit-conversions
+CLIPBOARD_DESC=		Store clipboard history
+DESKTOPAPPLICATIONS_DESC=Run installed desktop applications
+FILES_DESC=		Find files/folders
+MENUS_DESC=		Create custom menus
+PROVIDERLIST_DESC=	Lists all providers and configured menus
+RUNNER_DESC=		Execute everything installed in your PATH
+SYMBOLS_DESC=		Search for emojis and symbols
+TODO_DESC=		Basic Todolist
+UNICODE_DESC=		Search for unicode symbols
+WEBSEARCH_DESC=		Search web with custom defined search engines
+
+CALC_RUN_DEPENDS=	qalc:math/libqalculate \
+			wl-copy:x11/wl-clipboard
+CALC_PLIST_FILES=	etc/xdg/elephant/providers/calc.so
+CLIPBOARD_RUN_DEPENDS=	wl-copy:x11/wl-clipboard
+CLIPBOARD_PLIST_FILES=	etc/xdg/elephant/providers/clipboard.so
+DESKTOPAPPLICATIONS_PLIST_FILES=etc/xdg/elephant/providers/desktopapplications.so
+FILES_RUN_DEPENDS=	fd:sysutils/fd
+FILES_PLIST_FILES=	etc/xdg/elephant/providers/files.so
+MENUS_PLIST_FILES=	etc/xdg/elephant/providers/menus.so
+PROVIDERLIST_PLIST_FILES=etc/xdg/elephant/providers/providerlist.so
+RUNNER_PLIST_FILES=	etc/xdg/elephant/providers/runner.so
+SYMBOLS_RUN_DEPENDS=	wl-copy:x11/wl-clipboard
+SYMBOLS_PLIST_FILES=	etc/xdg/elephant/providers/symbols.so
+TODO_RUN_DEPENDS=	notify-send:devel/libnotify
+TODO_PLIST_FILES=	etc/xdg/elephant/providers/todo.so
+UNICODE_RUN_DEPENDS=	wl-copy:x11/wl-clipboard
+UNICODE_PLIST_FILES=	etc/xdg/elephant/providers/unicode.so
+WEBSEARCH_PLIST_FILES=	etc/xdg/elephant/providers/websearch.so
+
+.include <bsd.port.options.mk>
+
+ENABLED_PROVIDERS=	${SELECTED_OPTIONS:NDOCS:tl}
+
+post-patch:
+	@${REINPLACE_CMD} -e 's|/etc|${PREFIX}&|' \
+		${GO_WRKSRC}/internal/providers/load.go
+
+post-build:
+.for provider in ${ENABLED_PROVIDERS}
+	@${ECHO_MSG} "===>  Building ${provider} from ./internal/providers/${provider}"
+	@cd ${GO_WRKSRC} && \
+	${SETENV} ${MAKE_ENV} ${GO_ENV} \
+		GOMAXPROCS=${MAKE_JOBS_NUMBER} GOPROXY=off \
+		${GO_CMD} build ${GO_BUILDFLAGS:C/-buildmode=.*//} -buildmode=plugin \
+			-o ${GO_WRKDIR_BIN}/${provider}.so \
+			./internal/providers/${provider}
+.endfor
+
+post-install:
+	@${MKDIR} ${STAGEDIR}${PREFIX}/etc/xdg/elephant/providers
+	${INSTALL_LIB} ${GO_WRKDIR_BIN}/*.so \
+		${STAGEDIR}${PREFIX}/etc/xdg/elephant/providers
+
+post-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_MAN} ${PORTDOCS:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>
diff --git a/sysutils/elephant/distinfo b/sysutils/elephant/distinfo
new file mode 100644
index 000000000000..0359848b7674
--- /dev/null
+++ b/sysutils/elephant/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1758052477
+SHA256 (go/sysutils_elephant/elephant-v1.0.4/v1.0.4.mod) = 272874130a90b2beac5b65820bf759b9a1f2b29dbd9d4347aaf0410dfddf5a76
+SIZE (go/sysutils_elephant/elephant-v1.0.4/v1.0.4.mod) = 965
+SHA256 (go/sysutils_elephant/elephant-v1.0.4/v1.0.4.zip) = da41467c6ad118f79cca9bd37793bb7e01bb5e99354c2b9676cef46f57585aae
+SIZE (go/sysutils_elephant/elephant-v1.0.4/v1.0.4.zip) = 7127553
diff --git a/sysutils/elephant/pkg-descr b/sysutils/elephant/pkg-descr
new file mode 100644
index 000000000000..d37a763ebae8
--- /dev/null
+++ b/sysutils/elephant/pkg-descr
@@ -0,0 +1,10 @@
+Elephant - cuz it's phat - is a powerful data provider service and
+backend for building custom application launchers and desktop
+utilities. It provides various data sources and actions through a
+plugin-based architecture, communicating via Unix sockets and Protocol
+Buffers.
+
+Elephant acts as a unified backend service that aggregates data from
+various sources (desktop applications, files, clipboard history, etc.)
+and provides a consistent interface for frontend applications like
+custom launchers, productivity tools, or desktop widgets.