首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在保留原始模板变量的同时更新go模板

如何在保留原始模板变量的同时更新go模板
EN

Stack Overflow用户
提问于 2019-08-06 23:33:55
回答 1查看 125关注 0票数 0

这是一个高层次的问题,因为我不知道如何处理这个问题:

我正在构建一个CLI,它自动为用户设置代码项目。

我想要创建一个update特性,允许用户更新到最新的CLI模板版本,但仍然保留用于创建项目的原始变量(即项目名称、env变量等)。

我知道如何创建新的模板,但我不知道如何更新并保留用户传递的变量。

它将类似于git合并,因此将用户的本地项目与更新的CLI模板合并。

在下面的代码中,您可以看到一个示例,说明如何将var deploymentYamlData作为字符串变量来模板化这些文件。

我有一个函数,将所有这些文件模板组织成项目的适当目录结构。

如何将目录模板与用户的本地目录合并,同时能够持久化原始模板变量?

如果我需要进一步澄清的话,请提前道歉。

代码语言:javascript
运行
复制
package main

import (
    "text/template"
        "os"
)

var deploymentYamlData = `---

  # do not edit commented lines
  # CLI-Version: {{ .GitTagVersion}}

  app: {{ .BotName }}
  type: web
  team: {{ .TeamName }}
  docker_image: {{ .DockerImageName }}
  docker_tag: {{ .TagVersion }}
  internal: false
  replicas: {{ .Replicas }}
  revisionHistoryLimit: 5
  container_port: {{ .DockerImagePort }}
   healthcheck:
    path: /{{ .DockerImageHealthCheck }}
  dynamodb:
    enable_deleteitem: true
    tables:
      - name: {{ .BotName }}_conversation_data
`

type DigitalAssistant struct {
    BotName string
    TeamName string
    DockerImageName string
    TagVersion string
    Replicas int
    DockerImagePort int
    DockerImageHealthCheck string
        GitTageVersion string

}

func main() {
    bot := DigitalAssistant{"bobisyouruncle", "teamAwesome", "awesomebotimagename", "0.1.0", 1, 8000, "health"}
    bmap, err := template.New("captain.tmpl").Parse(deploymentYamlData)
    if err != nil { panic(err) }
    err = bmap.Execute(os.Stdout, bot)
    if err != nil { panic(err) }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-07 00:17:43

有几种方法可以解决这个问题,但是如果您使用像https://github.com/go-yaml/yaml这样的模块来生成和读取YAML,而不是使用模板,那么这个往返就会更容易。

此外,该工具还将使按示例生成结构类型变得容易:https://mengzhuo.github.io/yaml-to-go/

https://github.com/spf13/viper中执行了不同的解析方法,如果允许不知道的字段,这可能会更有用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57385219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档