# Copyright 2022-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

USE_RUBY="ruby31 ruby32"

RUBY_FAKEGEM_EXTRADOC="History.md README.md"
RUBY_FAKEGEM_GEMSPEC="${PN}.gemspec"

inherit ruby-fakegem

DESCRIPTION="binding that gives Ruby programmers access to arbitrary USB devices"
HOMEPAGE="https://github.com/larskanis/libusb"

LICENSE="BSD"
SLOT="0"
KEYWORDS="~amd64 ~x86"

DEPEND=">=dev-libs/libusb-1.0.27:1"
RDEPEND="${DEPEND}"

ruby_add_rdepend "dev-ruby/ffi:0"
ruby_add_bdepend "test? ( dev-ruby/eventmachine )"

all_ruby_prepare() {
	sed -e '/mini_portile2/d' \
		-e 's/git ls-files --/find/' \
		-e 's/git ls-files/find */' \
		-i ${RUBY_FAKEGEM_GEMSPEC} || die

	# Avoid tests that try to open devices or depend on specific hardware
	rm -f test/test_libusb_{bos,bulk_stream_transfer,descriptors}.rb || die
}

each_ruby_test() {
	${RUBY} -I.:lib -e "Dir['test/test_*.rb'].each{|f| require f}" || die
}

each_ruby_install() {
	each_fakegem_install

	# This gem includes an extension that does not actually do anything
	# when using the system libusb, but newer rubygems versions still
	# require the marker to be present.
	ruby_fakegem_extensions_installed
}