# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Distributed under the terms of the GNU General Public License v2

EAPI=7

# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
# the canonical empty project.
CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
CROS_WORKON_LOCALNAME="../platform/empty-project"

inherit udev cros-workon

DESCRIPTION="Installs firmware update files used by fwupd."
HOMEPAGE="https://fwupd.org/downloads"

KEYWORDS="*"

FILENAMES=(
	"06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab"
	"d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab"
	"a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab"
	"fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab"
	"d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab"
)
SRC_URI="${FILENAMES[*]/#/${HOMEPAGE}/}"
LICENSE="MIT"

DEPEND=""
RDEPEND="sys-apps/fwupd"

S="${WORKDIR}"

FIRMWARE_INSTALL_ROOT="/usr/share/fwupd/remotes.d/vendor/firmware"

dounpack_license() {
	local file
	for file in "$@"; do
		(
		cabextract -F LICENSE.txt "${DISTDIR}"/"${file}" ||
			mv LICENSE.txt license."${file}".txt
		)
	done
}


doins_firmware() {
	local file
	for file in "$@"; do
		(
		insinto "${FIRMWARE_INSTALL_ROOT}"
		doins "${DISTDIR}"/"${file}"
		)
	done
}

src_unpack() {
	dounpack_license "${FILENAMES[@]}"
}

src_install() {
	doins_firmware "${FILENAMES[@]}"

	# Install udev rules to trigger updates on hotplug.
	udev_dorules "${FILESDIR}"/91-fwupd.rules
}
