首页 > 解决方案 > 如何列出所有诗歌附加内容的名称?

问题描述

我正在做一个项目,我需要安装所有 Poetry extras 以运行自动构建。将该列表作为空格分隔的列表以用于 in 的最简单方法是什么poetry install --extras="$extras"

一些可能性:

标签: pythonpython-poetry

解决方案


当前的 hacky 解决方案:TOML 文件使用 pretty-format-toml 进行格式化,因此结构完全统一 - 额外的基本上如下所示:

content_iterator = [
    "jsonschema",
    "pynamodb",
]

基于此,我已经能够使用此命令将所有附加内容作为空格分隔的列表获取:

echo "PYTHON_EXTRAS=$(sed --quiet '/\[tool\.poetry\.extras\]/,/^\[/{s/^\(.*\) = \[/\1/p}' pyproject.toml \
    | sed --null-data 's/\n/ /g;s/ $//')" \
    | tee -a $GITHUB_ENV

基本上,在 tool.poetry.extras 部分中查找任何行= [并打印之前的内容。然后用空格替换换行符。最后删除尾随空格(诗歌很挑剔,并且会拒绝安装名称之间有尾随空格或换行符的附加列表)并将结果放入相关配置文件中。

这是非常丑陋和脆弱的,所以我只是为其他现在需要解决方案的人发布这个。


推荐阅读