我可以根据cookiecutter.json中的变量值使文件可选

时间:2016-01-26 00:34:08

标签: python cookiecutter

我想在我的python cookiecutter项目中有一个可选的文件。

一个例子是在cookiecutter.json中有变量

{"settings_file": true}

会在我的目录根目录创建一个文件settings.py(可能包含一些内容)。

cookiecutter是否提供了执行此操作的选项?或者我应该使用后处理挂钩来编写创建文件的脚本(我觉得这不是最优雅的解决方案)。

2 个答案:

答案 0 :(得分:5)

我将回答我自己的问题,万一有人碰到它:它还没有作为项目的一个功能实现,请参阅此处的增强凭证:https://github.com/audreyr/cookiecutter/issues/127

最不丑陋的"我想出的解决方案是每次创建文件,并在post hook期间清理它们(你也可以在post hook期间创建它们,但会丢失cookiecutter的模板优势)

答案 1 :(得分:0)

根据官方docs,可以使用后生成钩子脚本(hooks/post_gen_project.py

(复制这里的片段供浏览者浏览)

import os
import sys

REMOVE_PATHS = [
    '{% if cookiecutter.packaging != "pip" %} requirements.txt {% endif %}',
    '{% if cookiecutter.packaging != "poetry" %} poetry.lock {% endif %}',
]

for path in REMOVE_PATHS:
    path = path.strip()
    if path and os.path.exists(path):
        if os.path.isdir(path):
            os.rmdir(path)
        else:
            os.unlink(path)