odrling-overlay/dev-python/typer/typer-0.12.1.ebuild

93 lines
2.1 KiB
Bash

# Copyright 1999-2024 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
PYTHON_COMPAT=( python3_{10..12} )
DISTUTILS_USE_PEP517=pdm-backend
inherit distutils-r1 shell-completion
DESCRIPTION="Build great CLIs. Easy to code. Based on Python type hints."
HOMEPAGE="
https://typer.tiangolo.com/
https://github.com/tiangolo/typer
https://pypi.org/project/typer/
"
SRC_URI="https://github.com/tiangolo/${PN}/archive/${PV}/${P}.gh.tar.gz"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="+rich shell-detection test"
BDEPEND="
test? (
$(python_gen_cond_dep '
dev-python/coverage[${PYTHON_USEDEP}]
dev-python/shellingham[${PYTHON_USEDEP}]
')
)
"
RDEPEND="
$(python_gen_cond_dep '
dev-python/click[${PYTHON_USEDEP}]
dev-python/typing-extensions[${PYTHON_USEDEP}]
rich? ( dev-python/rich[${PYTHON_USEDEP}] )
shell-detection? ( dev-python/shellingham[${PYTHON_USEDEP}] )
')
"
distutils_enable_tests pytest
src_test() {
export TERMINAL_WIDTH=3000
export _TYPER_FORCE_DISABLE_TERMINAL=1
distutils-r1_src_test "${@}"
}
src_compile() {
distutils-r1_src_compile "${@}"
local shell
for shell in bash zsh fish; do
typer_gencomp ${shell}
done
}
typer_get_comp() {
local COMPLETIONSDIR="${WORKDIR}/comp"
local shell="$1"
case "${shell}" in
bash) echo "${COMPLETIONSDIR}/${PN}" ;;
zsh) echo "${COMPLETIONSDIR}/_${PN}" ;;
fish) echo "${COMPLETIONSDIR}/${PN}.fish" ;;
*) die "unknown shell: ${shell}" ;;
esac
}
typer_gencomp() {
local COMPLETIONSDIR="${WORKDIR}/comp"
mkdir "${COMPLETIONSDIR}" 2> /dev/null
local shell="$1"
compfile="$(typer_get_comp "${@}")"
_TYPER_COMPLETE_TEST_DISABLE_SHELL_DETECTION=1 python -m typer --show-completion "${shell}" |
sed 's/python -m //g ; s/_PYTHON _M //g ; s/python_m//g ; s/TYPER_COMPLETE/_TYPER_COMPLETE/' > "${compfile}" ||
die "failed to generate ${shell} completion"
einfo "generated completion script for ${shell}: ${compfile}"
}
src_install() {
distutils-r1_src_install "${@}"
dobashcomp "$(typer_get_comp bash)"
dozshcomp "$(typer_get_comp zsh)"
dofishcomp "$(typer_get_comp fish)"
}