0
用make我可以這樣做:Rake:自動刪除中間文件? (對make .INTERMEDIATE機制等效?)
%.json : %.jsonnet
jsonnet $< -o [email protected]
JSON_FILES = main.tf.json
.INTERMEDIATE : $(JSON_FILES)
plan : $(JSON_FILES)
terraform plan
有了這個地方,如果我跑
make plan
我的文件main.tf.jsonnet
將被編譯爲main.tf.json
(一種Terraform程序可以理解的格式),Terraform將運行,並且在完成之後,main.tf.json
文件將自動被刪除。
我想知道在Rake中是否有類似的功能?藉此大多是相似的Rakefile:
require 'rake/clean'
rule '.json' => '.jsonnet' do |t|
sh "jsonnet '#{t.source}' -o '#{t.name}'"
end
JSON_FILES = Dir["**/*.jsonnet"].map{ |f| f.sub(/jsonnet$/, 'json')}
CLEAN.include(JSON_FILES)
desc "See what changes will be made (terraform plan)"
task plan: JSON_FILES do
sh "terraform plan"
end
如果我運行rake plan
,它將執行幾乎一樣的牌子,卻會留下main.tf.json
上的文件系統。我一直在簡單地追加Rake::Task[:clean].execute
到所有相關任務的結尾,但這有點冒失。有沒有更好的方法來做到這一點?