# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit desktop xdg

DESCRIPTION="A Community-led Hyper-Hackable Text Editor"
HOMEPAGE="https://pulsar-edit.dev/"

ur=https://github.com/pulsar-edit/pulsar/releases/download
SRC_URI="
	amd64? ( ${ur}/v${PV}/Linux.pulsar-${PV}.tar.gz -> ${P}-amd64.tar.gz )
	arm64? ( ${ur}/v${PV}/ARM.Linux.pulsar-${PV}-arm64.tar.gz -> ${P}-arm64.tar.gz )
"
S="${WORKDIR}/pulsar-${PV}"

LICENSE="MIT"
SLOT="0"
KEYWORDS="-* ~amd64 ~arm64"

# binary package; no tests available
RESTRICT="test"

RDEPEND="
	app-accessibility/at-spi2-core
	dev-libs/nspr
	app-crypt/libsecret
	dev-libs/expat
	dev-libs/glib
	dev-libs/nss
	dev-libs/openssl-compat
	dev-vcs/git
	media-libs/alsa-lib
	media-libs/mesa
	net-misc/curl
	net-print/cups
	sys-apps/dbus
	virtual/zlib
	x11-libs/cairo
	x11-libs/gdk-pixbuf
	x11-libs/gtk+:3[X]
	x11-libs/libdrm
	x11-libs/libX11
	x11-libs/libxcb
	x11-libs/libXcomposite
	x11-libs/libXdamage
	x11-libs/libXext
	x11-libs/libXfixes
	x11-libs/libxkbcommon
	x11-libs/libxkbfile
	x11-libs/libxshmfence
	x11-libs/libXrandr
	x11-libs/pango
"

QA_PREBUILT="opt/Pulsar/*"
QA_PRESTRIPPED="opt/Pulsar/resources/*"  # Files are already stripped

src_unpack(){
	default

	if use arm64; then
		mv "pulsar-${PV}-arm64" "pulsar-${PV}" || die
	fi
}

src_prepare(){
	default

	# We do not install licenses
	rm resources/LICENSE.md || die "Failed to remove LICENSE"
}

src_install(){
	dodir /opt/Pulsar
	mv "${S}"/* "${ED}"/opt/Pulsar

	dosym -r /opt/Pulsar/resources/pulsar.sh /usr/bin/pulsar

	# Bug #906939
	if use amd64; then
		rm "${ED}"/opt/Pulsar/resources/app.asar.unpacked/node_modules/tree-sitter-bash/build/node_gyp_bins/python3 || die
		rmdir "${ED}"/opt/Pulsar/resources/app.asar.unpacked/node_modules/tree-sitter-bash/build/node_gyp_bins || die
	fi

	doicon "${ED}"/opt/Pulsar/resources/pulsar.png
	make_desktop_entry "/usr/bin/pulsar %F" "Pulsar" "pulsar" \
		"GNOME;GTK;Utility;TextEditor;Development;" \
		"GenericName=Text Editor\nStartupNotify=true\nStartupWMClass=pulsar\n" \
		"MimeType=application/javascript;application/json;application/x-httpd-eruby;" \
			"application/x-httpd-php;application/x-httpd-php3;application/x-httpd-php4;" \
			"application/x-httpd-php5;application/x-ruby;application/x-bash;application/x-csh;" \
			"application/x-sh;application/x-zsh;application/x-shellscript;application/x-sql;" \
			"application/x-tcl;application/xhtml+xml;application/xml;application/xml-dtd;" \
			"application/xslt+xml;text/coffeescript;text/css;text/html;text/plain;text/xml;" \
			"text/xml-dtd;text/x-bash;text/x-c++;text/x-c++hdr;text/x-c++src;text/x-c;text/x-chdr;" \
			"text/x-csh;text/x-csrc;text/x-dsrc;text/x-diff;text/x-go;text/x-java;text/x-java-source;" \
			"text/x-makefile;text/x-markdown;text/x-objc;text/x-perl;text/x-php;text/x-python;" \
			"text/x-ruby;text/x-sh;text/x-zsh;text/yaml;inode/directory"

	einstalldocs

	find "${ED}" -name '*.la' -delete || die
}

pkg_postinst(){
	xdg_desktop_database_update

	elog "To migrate configurations & saved state from Atom Editor, execute:"
	elog "    cp -a \$HOME/.atom \$HOME/.pulsar"
	elog "    cp -a \$HOME/.config/Atom \$HOME/.config/Pulsar"
}
