makefile - 仅在某些文件更改时运行 Phony 目标
问题描述
仅当当前目录或子目录中的文件已更改时,我才想运行Terraform fmt
命令。.tf/.tpl
这是我的makefile,不确定是否可以使用makefile:
TF_VERSION=0.10.7
.PHONY: format
README.md: ./variables.tf
terraform-docs md . > README.md
format: $(wildcard *.tf) $(wildcard */*.tf) $(wildcard */*.tpl)
docker run -ti -v $(shell pwd):/tmp hashicorp/terraform:${TF_VERSION} fmt /tmp
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := format
问题是每次都make
运行(即使没有任何更改),如果我删除最后一行,我必须运行,否则它只会运行第一条规则。format
make format
解决方案
使用一个空文件,其修改时间记录了规则最后一次运行的时间:
format_timestamp: $(wildcard *.tf) ...
docker run -ti -v ...
touch $@
推荐阅读
- c++ - 为什么将双端队列移动到向量时会出现 C26486 编译器错误?
- node.js - 将表单选择框从 .pug 转换为 .ejs
- python - 如何使用 PSF 内核从清晰图像创建合成模糊图像(图像格式)
- algorithm - 如何推导二叉树的主深度为 O(sqrt(N))?
- go - 如何从数据存储中获取名称/密钥
- postgresql - postgres - 根据条件计算累积和
- r - 制作“可绘制”反应贴图
- c - Linked List 包含另一个链表,嵌套链表
- google-cloud-platform - 'projects/$project_id/regions/us-central1 所需的 'compute.regions.get' 权限
- sql-server - 如何在 Order by 子句中使用计算别名?