Cookiecutter:如何使用命令行覆盖字典变量



如果我在cookiecutter.json中有这样的变量:

{
"app": {
"name": "myapp",
"description": "my app description",
"version": "v1",
"ecr_data_classification_tag": "non-pii"
},
"contact": {
"team": "monitors",
"name": "WS Monitors",
"url": "http://myurl.tld/"
},
"etc": "foo"
}

调用cookiecutter时,如何覆盖应用程序name

我试着提供";额外上下文";这边:

$ cookiecutter --no-input my-template app.name="my-new-name"

和:

$ cookiecutter --no-input my-template app='{"name":"my-new-name"}'

但前者什么也不做,后者只是用字符串{"name":"my-new-name"}替换整个app参数(它不解析JSON(。

我试着把整件事都转储到一个yaml文件中,这很有效:

default_context:
app:
name: my-new-name

但这并不理想。它还清除了所有其他app参数。

有没有一种方法可以从命令行调用cookiecutter并覆盖app.name

事实证明:

  1. 不;额外上下文";只是k/v对,根本不解析键和值
  2. 从2.1.1开始,当值被交换来覆盖配置时,整个值都被交换了,所以对于字典/对象,没有办法只替换值的一个属性,你必须替换整个值
  3. cksak更改了遍历字典,只交换指定的值,但这在main中,尚未发布

因此,目前,如果您想覆盖字典值,您别无选择,只能创建一个单独的yaml(或json(文件并通过--config-file加载该文件,并且在2.1.2发布之前,您必须确保覆盖每个字典的所有属性,除非您希望它们被删除。

相关内容

  • 没有找到相关文章

最新更新