如何在cookiecutter中使用机器生成的变量

时间:2016-05-02 15:22:19

标签: cookiecutter

在用户为cookiecutter.json中的变量提供了一些值之后,有没有办法机器生成某些值?

我问的原因是:

  • 我需要提示的其中一个值是用户难以解决的问题
  • 但是我很容易编写一些Python代码来生成正确的值

所以我真的希望能够删除用户提示,并改为计算值。

我尝试的事情:

  • 在线搜索示例pre_gen_project.py文件,以说明如何操作
  • 阅读cookiecutter Advanced Usage页面

我在命令行上使用cookiecutter:

cookiecutter path_to_template

我错过任何技巧吗?

1 个答案:

答案 0 :(得分:3)

几天前我需要这种精确的功能。我想出的解决方案是为cookiecutter编写一个包装器脚本,类似于下面提到的:

http://cookiecutter.readthedocs.io/en/latest/advanced_usage.html#calling-cookiecutter-functions-from-python

我的脚本生成一个随机字符串,用于Django项目。我打电话给我的剧本剪切:

#! /usr/bin/env python

from cookiecutter.main import cookiecutter

import os

rstring = ''.join([c for c in os.urandom(1024)
                   if c.isalnum()])[:64]

cookiecutter(
    'django-template',     # path/url to cookiecutter template
    extra_context={'secret': rstring},
)

所以现在我只需运行cut-cut并正常执行该过程。唯一的区别是我的cookiecutter.json文件中名为 secret 的条目预填充了脚本中 rstring 中生成的值,通过 extra_context提供通过了。

您可以通过命令行修改脚本以接受模板,但在我的使用中我总是使用相同的模板,因此我只是传递一个硬编码值“django-template”,如上面的代码所示。