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

EAPI=8

inherit autotools git-r3 shell-completion

DESCRIPTION="Partition cloning tool"
HOMEPAGE="https://partclone.org"
EGIT_REPO_URI="https://github.com/Thomas-Tsai/${PN}.git"
LICENSE="GPL-2"
SLOT="0"

IUSE="apfs btrfs +e2fs exfat f2fs fat fuse hfs minix ncurses nilfs2 ntfs"
IUSE+=" reiserfs static test ufs vmfs xfs"

REQUIRED_USE="static? ( !fuse )"

RESTRICT="!test? ( test )"

RDEPEND="
	app-arch/zstd:=
	dev-libs/isa-l
	dev-libs/openssl:0=
	sys-apps/util-linux
	virtual/zlib:=
	e2fs? ( sys-fs/e2fsprogs )
	btrfs? ( sys-apps/util-linux )
	fuse? ( sys-fs/fuse:3 )
	ncurses? ( sys-libs/ncurses:0= )
	nilfs2? ( sys-fs/nilfs-utils )
	ntfs? ( sys-fs/ntfs3g )
	reiserfs? ( sys-fs/progsreiserfs )
	xfs? ( dev-libs/userspace-rcu )
	static? (
		app-arch/zstd:=[static-libs]
		dev-libs/openssl:0[static-libs]
		virtual/zlib:=[static-libs]
		e2fs? ( sys-fs/e2fsprogs[static-libs] )
		btrfs? ( sys-apps/util-linux[static-libs] )
		ncurses? ( sys-libs/ncurses:0[static-libs] )
		nilfs2? ( sys-fs/nilfs-utils[static-libs] )
		ntfs? ( sys-fs/ntfs3g[static-libs] )
		reiserfs? ( sys-fs/progsreiserfs[static-libs] )
		xfs? ( dev-libs/userspace-rcu[static-libs] )
	)
	!static? (
		dev-libs/xxhash
	)
"
DEPEND="
	${RDEPEND}
"
BDEPEND="
	virtual/pkgconfig
"

PATCHES=(
	"${FILESDIR}"/${PN}-fix-ncurses-linking.patch
	"${FILESDIR}"/${PN}-completions.patch
)

DOCS=(
	AUTHORS
	ChangeLog
	HACKING
	NEWS
	README.md
)

CMDS=(
	apfs
	btrfs
	chkimg
	dd
	exfat
	ext2
	ext3
	ext4
	ext4dev
	extfs
	f2fs
	fat
	fat12
	fat16
	fat32
	hfs+
	hfsp
	hfsplus
	imager
	minix
	nilfs2
	ntfs
	reiser4
	restore
	vfat
	xfs
)

src_prepare() {
	default
	eautoreconf
}

src_configure() {
	local myconf=(
		--disable-jfs
		--disable-reiser4
		$(usev static --disable-xxhash)
		$(use_enable e2fs extfs)
		$(use_enable apfs)
		$(use_enable btrfs)
		$(use_enable exfat)
		$(use_enable f2fs)
		$(use_enable fat)
		$(use_enable fuse)
		$(use_enable hfs hfsp)
		$(use_enable minix)
		$(use_enable ncurses ncursesw)
		$(use_enable nilfs2)
		$(use_enable ntfs)
		$(use_enable reiserfs)
		$(use_enable test fs-test)
		$(use_enable static static-linking)
		$(use_enable vmfs)
		$(use_enable ufs)
		$(use_enable xfs)
	)

	econf "${myconf[@]}"
}

src_install() {
	default

	newbashcomp "src/${PN}-completion" "${PN}"
	local cmd
	for cmd in "${CMDS[@]}"; do
		bashcomp_alias "${PN}" "${PN}.${cmd}" || die
	done
}

src_test() {
	local -x TERM=dummy
	default
}