如何列出所有诗歌群众演员的名字?
How to list the name of all Poetry extras?
我正在开展一个项目,我需要将所有 Poetry 附加功能安装到 运行 自动构建中。将该列表作为 space 分隔列表以用于 poetry install --extras="$extras"
的最简单方法是什么?
一些可能性:
- 我可以使用 Python toml 包,但这需要设置一个 单独的 virtualenv 来安装它。
- 快速
sed
命令获取 pyproject.toml 的 tool.poetry.extras
部分并提取名称将是一个 hack,并且只有在 TOML 格式良好且一致的情况下才有效。
- 仅仅为此下载和安装第三方 CLI 工具似乎有点过分了;我更喜欢
sed
破解。
- 也许有一个常用的安装工具(例如,已经安装在官方 Ubuntu 20.04 Docker 图像中)可以执行此操作或类似的操作,例如将 TOML 转换为 JSON使用更知名的工具处理,如
jq
,但我不知道它。
目前的 hacky 解决方案:TOML 文件使用 pretty-format-toml 进行格式化,因此结构完全统一 - extra 基本上如下所示:
content_iterator = [
"jsonschema",
"pynamodb",
]
基于此,我已经能够使用此命令将所有额外内容作为 space 分隔列表获取:
echo "PYTHON_EXTRAS=$(sed --quiet '/\[tool\.poetry\.extras\]/,/^\[/{s/^\(.*\) = \[//p}' pyproject.toml \
| sed --null-data 's/\n/ /g;s/ $//')" \
| tee -a $GITHUB_ENV
基本上,在 tool.poetry.extras 部分中查找带有 = [
的任何行并打印之前的内容。然后用 spaces 替换换行符。最后去掉尾部的space(诗词挑剔,会拒绝安装尾部有space或者名称之间换行的extras列表)并将结果放入相关配置文件中。
这非常丑陋和脆弱,所以我只是将它发布给现在需要解决方案的其他人。
我正在开展一个项目,我需要将所有 Poetry 附加功能安装到 运行 自动构建中。将该列表作为 space 分隔列表以用于 poetry install --extras="$extras"
的最简单方法是什么?
一些可能性:
- 我可以使用 Python toml 包,但这需要设置一个 单独的 virtualenv 来安装它。
- 快速
sed
命令获取 pyproject.toml 的tool.poetry.extras
部分并提取名称将是一个 hack,并且只有在 TOML 格式良好且一致的情况下才有效。 - 仅仅为此下载和安装第三方 CLI 工具似乎有点过分了;我更喜欢
sed
破解。 - 也许有一个常用的安装工具(例如,已经安装在官方 Ubuntu 20.04 Docker 图像中)可以执行此操作或类似的操作,例如将 TOML 转换为 JSON使用更知名的工具处理,如
jq
,但我不知道它。
目前的 hacky 解决方案:TOML 文件使用 pretty-format-toml 进行格式化,因此结构完全统一 - extra 基本上如下所示:
content_iterator = [
"jsonschema",
"pynamodb",
]
基于此,我已经能够使用此命令将所有额外内容作为 space 分隔列表获取:
echo "PYTHON_EXTRAS=$(sed --quiet '/\[tool\.poetry\.extras\]/,/^\[/{s/^\(.*\) = \[//p}' pyproject.toml \
| sed --null-data 's/\n/ /g;s/ $//')" \
| tee -a $GITHUB_ENV
基本上,在 tool.poetry.extras 部分中查找带有 = [
的任何行并打印之前的内容。然后用 spaces 替换换行符。最后去掉尾部的space(诗词挑剔,会拒绝安装尾部有space或者名称之间换行的extras列表)并将结果放入相关配置文件中。
这非常丑陋和脆弱,所以我只是将它发布给现在需要解决方案的其他人。