Makefile - 我应该如何提取嵌入在“pyproject.toml”中的版本号?

Makefile - How should I extract the version number embedded in `pyproject.toml`?

我有一个带有 pyproject.toml 文件的 python 项目。通常我将项目的版本号存储在 pyproject.toml 中,如下所示:

% grep version pyproject.toml 
version = "0.0.2"
%

我想将该版本号放入一个 Makefile 变量中,而不管版本条款周围有多少空格。

我应该如何将 pyproject.toml 版本字符串提取到名为 VERSIONMakefile 环境变量中?

这似乎是最好的...我把它放在我的 Makefile

# grep the version from pyproject.toml, squeeze multiple spaces, delete double
#   and single quotes, get 3rd val. This command tolerates 
#   multiple whitespace sequences around the version number
VERSION := $(shell grep version pyproject.toml | tr -s ' ' | tr -d '"' | tr -d "'" | cut -d' ' -f3)

如果这就是该文件真正包含的全部内容,那么它与 makefile 语法非常接近,您可以将其作为 makefile 包含在内:

include pyproject.toml
all: ; echo 'version = $(version)'

$ make
echo 'version = "0.0.2"'
version = "0.0.2"

如果您不想或不能这样做,我会使用 sed

VERSION := $(shell sed -n 's/^ *version.*=.*"\([^"]*\)".*//p' pyproject.toml)
all: ; echo 'version = $(VERSION)'

$ make
echo 'version = 0.0.2'
version = 0.0.2