您可以使用 Tox 中的文件列表循环执行命令吗
Can you loop through commands with a list of files in Tox
在我正在处理的 python 项目的 tox.ini 文件中,我有一个格式化步骤,如下所示:
[testenv:formatting]
deps =
isort
black
flake8
flake8-quotes
pep8-naming
commands =
# Check source code
isort {toxinidir}/project --check-only --recursive
black {toxinidir}/project --check --diff --py36
flake8 {toxinidir}/project
# Check tests
isort {toxinidir}/tests --check-only --recursive
black {toxinidir}/tests --check --diff --py36
flake8 {toxinidir}/tests
# Check setup.py
isort {toxinidir}/setup.py --check-only --recursive
black {toxinidir}/setup.py --check --diff --py36
flake8 {toxinidir}/setup.py
# Check docs/conf.py
isort {toxinidir}/docs/conf.py --check-only --recursive
black {toxinidir}/docs/conf.py --check --diff --py36
flake8 {toxinidir}/docs/conf.py
有没有什么方法可以在文件列表中删除这个和 运行 那 3 个命令(isort
、black
和 flake8
)的冗长?
类似于:
commands =
isort {toxinidir}/{list_of_files} --check-only --recursive
black {toxinidir}/{list_of_files} --check --diff --py36
flake8 {toxinidir}/{list_of_files}
其中 {list_of_files}
类似于 ["project", "tests", "setup.py", "docs/conf.py"]
?
我试过 shell for 循环,但这在命令中似乎不起作用。
我是否遗漏了什么,或者这是不可能的?
我从未使用过 isort
和 black
,但我希望所有这三个命令都能同时接受多个参数,因此您应该能够编写:
isort {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check-only --recursive
black {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check --diff --py36
flake8 {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py
PS:默认情况下,tox
以 {toxinidir}
作为当前目录运行命令,因此为了简洁起见,您可以将该部分关闭:
isort project tests setup.py docs/conf.py --check-only --recursive
# etc.
在我正在处理的 python 项目的 tox.ini 文件中,我有一个格式化步骤,如下所示:
[testenv:formatting]
deps =
isort
black
flake8
flake8-quotes
pep8-naming
commands =
# Check source code
isort {toxinidir}/project --check-only --recursive
black {toxinidir}/project --check --diff --py36
flake8 {toxinidir}/project
# Check tests
isort {toxinidir}/tests --check-only --recursive
black {toxinidir}/tests --check --diff --py36
flake8 {toxinidir}/tests
# Check setup.py
isort {toxinidir}/setup.py --check-only --recursive
black {toxinidir}/setup.py --check --diff --py36
flake8 {toxinidir}/setup.py
# Check docs/conf.py
isort {toxinidir}/docs/conf.py --check-only --recursive
black {toxinidir}/docs/conf.py --check --diff --py36
flake8 {toxinidir}/docs/conf.py
有没有什么方法可以在文件列表中删除这个和 运行 那 3 个命令(isort
、black
和 flake8
)的冗长?
类似于:
commands =
isort {toxinidir}/{list_of_files} --check-only --recursive
black {toxinidir}/{list_of_files} --check --diff --py36
flake8 {toxinidir}/{list_of_files}
其中 {list_of_files}
类似于 ["project", "tests", "setup.py", "docs/conf.py"]
?
我试过 shell for 循环,但这在命令中似乎不起作用。
我是否遗漏了什么,或者这是不可能的?
我从未使用过 isort
和 black
,但我希望所有这三个命令都能同时接受多个参数,因此您应该能够编写:
isort {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check-only --recursive
black {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check --diff --py36
flake8 {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py
PS:默认情况下,tox
以 {toxinidir}
作为当前目录运行命令,因此为了简洁起见,您可以将该部分关闭:
isort project tests setup.py docs/conf.py --check-only --recursive
# etc.