# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

inherit bash-completion-r1 cmake flag-o-matic

DESCRIPTION="Command Line Interactive and Scriptable Application to access MEGA"
HOMEPAGE="https://github.com/meganz/MEGAcmd"

MEGA_SDK_REV="fae76a36d60484657fbdf442b7b917ccc4fbad77" # commit of sdk submodule
MEGA_TAG_SUFFIX="Linux"
SRC_URI="
	https://github.com/meganz/MEGAcmd/archive/refs/tags/${PV}_${MEGA_TAG_SUFFIX}.tar.gz -> ${P}.tar.gz
	https://github.com/meganz/sdk/archive/${MEGA_SDK_REV}.tar.gz -> ${PN}-sdk-${PV}.tar.gz
"
S="${WORKDIR}"/MEGAcmd-${PV}_${MEGA_TAG_SUFFIX}

LICENSE="BSD-2 GPL-3+"
SLOT="0"
KEYWORDS="~amd64"
IUSE="pcre"

RDEPEND="
	dev-db/sqlite:3
	dev-libs/crypto++:=
	dev-libs/icu:=
	dev-libs/libsodium:=
	dev-libs/libuv:=
	dev-libs/openssl:=
	net-misc/curl
	sys-fs/fuse:3=
	sys-libs/readline:=
	virtual/zlib:=
	pcre? ( dev-libs/libpcre )
"
DEPEND="
	${RDEPEND}
"
BDEPEND="
	virtual/pkgconfig
"

PATCHES=(
	"${FILESDIR}/${P}-cmake4.patch"
	"${FILESDIR}/${P}-disable-vcpkg.patch"
	"${FILESDIR}/${P}-fix-link.patch"
	"${FILESDIR}/${P}-fix-prefix.patch"
	"${FILESDIR}/${P}-rename-libcryptopp.patch"
)

src_prepare() {
	rmdir sdk || die
	mv "${WORKDIR}/sdk-${MEGA_SDK_REV}" sdk || die

	cmake_src_prepare
}

src_configure() {
	# https://github.com/meganz/sdk/issues/2679
	append-cppflags -DNDEBUG

	local mycmakeargs=(
		-DBUILD_SHARED_LIBS=OFF
		-DFULL_REQS=OFF
		-DUSE_FREEIMAGE=OFF
		-DUSE_PCRE=$(usex pcre)
	)
	cmake_src_configure
}

src_install() {
	cmake_src_install

	# https://github.com/meganz/MEGAcmd/blob/4b291975aafa7332ddfbf1a689455ebd972adff4/CMakeLists.txt#L468
	insinto /usr/lib/sysctl.d
	newins - 30-megacmd-inotify-limit.conf <<<"fs.inotify.max_user_watches = 524288"

	newbashcomp src/client/megacmd_completion.sh mega-cmd
	bashcomp_alias mega-cmd mega-{attr,backup,cancel,cat,cd,cmd-server,configure,confirm,confirmcancel,cp,login} \
		mega-{ftp,proxy,fuse-enable,ipc,sync,killsession,passwd,version,invite,log,mount,mv,https,session,share} \
		mega-{tree,sync-ignore,quit,fuse-add,mkdir,pwd,find,exec,transfers,signup,debug,lpwd,help,deleteversions} \
		mega-{sync-issues,exclude,preview,get,fuse-config,whoami,graphics,fuse-remove,webdav,sync-config,rm,reload} \
		mega-{thumbnail,du,put,df,users,permissions,userattr,errorcode,ls,mediainfo,lcd,fuse-disable,export,import} \
		mega-{showpcr,speedlimit,fuse-show,logout}
}