Poetry有一种很好的方法,可以使用poetry run <entrypoint>
运行Python入口点。使用Python或Bash从pyproject.toml
中以编程方式获取<entrypoints>
列表的最佳方法是什么
例如pyproject.toml
:
[tool.poetry]
name = "random-tool"
version = "1.0"
[tool.poetry.scripts]
tool = "tool.function:main"
other_tool = "other_tool.function:main"
all_the_tools = "other_tool.function:all"
输出为:
entrypoint = [ "tool", "other_tool", "all_the_tools" ]
使用python,这非常容易,因为您可以使用toml将
pyproject.toml
文件解析到字典中:OP在一篇评论中表示希望将端点收集到一个可以在以后迭代的结构中
对于这个答案,我将集中讨论一个
bash/array
想法第一个问题是解析来自
pyproject.toml
文件的所需数据;我的示例文件:解析出所需数据的一个
sed
想法:其中:
-En
-启用E
扩展的正则表达式支持并禁止打印模式空间(n
)1,/\[tool.poetry.scripts\]/d
-删除从第1行到包含字符串的行[tool.poetry.scripts\]
范围内的所有内容/^$/,$d
-删除从第一个空行(^$
)到文件结尾($
)范围内的所有内容s/^([^ ]+) .*$)/\1/p
-将第一个捕获组定义为第一个空格(([^ ]+)
)的起始行,但不包括该空格,然后打印第一个捕获组(\1/p
)使用
awk
的一个想法:或作为一个班轮:
从这里有几种方法可以将这些数据加载到
bash
数组结构中;使用mapfile
的一个想法是:此时,数据已加载到
endpoints[]
数组中,并可在稍后的时间进行迭代,例如:由此产生:
相关问题 更多 >
编程相关推荐