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

EAPI=8

inherit autotools shell-completion

DESCRIPTION="Partition cloning tool"
HOMEPAGE="https://partclone.org"
SRC_URI="https://github.com/Thomas-Tsai/${PN}/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="GPL-2"
SLOT="0"
KEYWORDS="~amd64 ~x86"

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

RESTRICT="!test? ( test )"

REQUIRED_USE="static? ( !fuse )"

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:= )
	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] )
		xfs? ( dev-libs/userspace-rcu:=[static-libs] )
	)
	!static? (
		dev-libs/xxhash
	)
"
DEPEND="
	${RDEPEND}
"
BDEPEND="
	test? (
		e2fs? ( sys-fs/e2fsprogs )
		btrfs? ( sys-fs/btrfs-progs )
		exfat? ( sys-fs/exfatprogs )
		f2fs? ( sys-fs/f2fs-tools )
		fat? ( sys-fs/dosfstools )
		xfs? ( sys-fs/xfsprogs )
		sys-apps/mlocate
	)
	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=(
		$(use_enable e2fs extfs)
		$(use_enable apfs)
		$(use_enable btrfs)
		$(use_enable exfat)
		$(use_enable f2fs)
		$(use_enable fat)
		$(use_enable fuse)
		$(use_enable minix)
		$(use_enable ncurses ncursesw)
		$(use_enable nilfs2)
		$(use_enable ntfs)
		$(use_enable test fs-test)
		$(use_enable static static-linking)
		$(use_enable xfs)
		--disable-jfs
		--disable-reiser4
		# libdal  is no provided by the  gentoo  ebuild
		# so we must disable reiserfs.
		# libufs & vmfs are not available.
		--disable-reiserfs
		--disable-ufs
		--disable-vmfs

		$(usev static --disable-xxhash)
	)
	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
	# Skip  apfs tests due to sys-fs/apfsprogs  not
	# supporting ~x86.
	if use apfs; then
		rm tests/apfs.test || die \
			"Failed to delete apfs test"
	fi

	# mkfs.hfsplus is required by the test.
	# mkfs.hfsplus  is not  available so it  should
	# be skipped as well.
	if use hfs; then
		rm tests/hfsplus.test || die \
			"Failed to delete hfsplus test"
	fi
	default
}
