[使用Makefile命令从Docker运行Black格式化程序

问题描述 投票:0回答:1

不是在本地计算机上安装Black,而是尝试从Docker容器运行Black(从Requirements.txt安装)。我想添加一个Makefile命令来格式化修改后的文件。到目前为止,这是我想出的,它使用make format

运行
# formats any files which differ from the point at which the current branch (2) forked from master (1)
# ____1_____________ master
#     \__________ dev
#          \_________2 current_branch
diff_files := $(shell git diff $(git merge-base --fork-point master) --name-only -- "*.py")
format:
    docker-compose run --rm api black $(diff_files)

这将找到当前分支从母版分支的点

https://git-scm.com/docs/git-merge-base#_operation_modes

git merge-base --fork-point master

这将返回从diff返回的文件名,扩展名为.py(.py过滤器可能会导致过大杀伤力?)

https://git-scm.com/docs/git-diff#_description

--name-only -- "*.py"

希望听到一些反馈,或任何类似设置的示例。

python git docker makefile python-black
1个回答
0
投票

美元符号很重要:它们引入变量。如果要将美元符号传递给shell脚本(例如在$(shell ..)函数中),则需要通过将其写为$$来对其进行转义:

diff_files := $(shell git diff $$(git merge-base --fork-point master) --name-only -- "*.py")

否则,make认为$(git merge-base --fork-point master)是一个长且非常奇怪的make变量,所有未定义的make变量均被评估为空字符串。

© www.soinside.com 2019 - 2024. All rights reserved.