diff --git a/dev-python/typer/metadata.xml b/dev-python/typer/metadata.xml index 79d13253eb..3e3c35e14d 100644 --- a/dev-python/typer/metadata.xml +++ b/dev-python/typer/metadata.xml @@ -9,6 +9,10 @@ Proxy Maintainers proxy-maint@gentoo.org + + Rich text output via dev-python/rich + detect current shell with dev-python/shellingham for completions + tiangolo/typer typer diff --git a/dev-python/typer/typer-0.15.3.ebuild b/dev-python/typer/typer-0.15.3.ebuild index 0453ec9846..70c0e3d29b 100644 --- a/dev-python/typer/typer-0.15.3.ebuild +++ b/dev-python/typer/typer-0.15.3.ebuild @@ -1,27 +1,92 @@ -# Copyright 2025 +# Copyright 1999-2024 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -PYTHON_COMPAT=( python3_1{1..3} ) +PYTHON_COMPAT=( python3_{11..13} ) +DISTUTILS_USE_PEP517=pdm-backend -DISTUTILS_USE_PEP517="hatchling" +inherit distutils-r1 shell-completion pypi -inherit distutils-r1 pypi - -DESCRIPTION="Typer, build great CLIs. Easy to code. Based on Python type hints." - -HOMEPAGE="https://typer.tiangolo.com/" +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="$(pypi_sdist_url "${PN}" "${PV}")" LICENSE="MIT" SLOT="0" -KEYWORDS="~amd64" +KEYWORDS="~amd64 ~arm64" -DEPEND=" - dev-python/shellingham[${PYTHON_USEDEP}] - >=dev-python/click-8.0.0[${PYTHON_USEDEP}] - >=dev-python/typing-extensions-3.7.4.3[${PYTHON_USEDEP}] - dev-python/rich[${PYTHON_USEDEP}] +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}] ) + ') " -RDEPEND="${DEPEND}" +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)" +}