С макияж я могу сделать что-то вроде:Rake: автоматически удалять промежуточные файлы? (Эквивалент механизма .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
в конце всех соответствующих задач, но это немного хаки. Есть ли лучший способ сделать это?