为了账号安全,请及时绑定邮箱和手机立即绑定

如何更新 Go 模板,同时仍然保留原始模板变量

如何更新 Go 模板,同时仍然保留原始模板变量

Go
不负相思意 2023-07-10 16:25:03
这是一个高级问题,因为我不确定如何解决这个问题:我正在构建一个 CLI,自动为用户设置代码项目。我想创建一个update功能,允许用户更新到最新的 CLI 模板版本,但仍然保留他们用于创建项目的原始变量(即项目名称、环境变量等...)我知道如何创建新模板,但我不知道如何更新并仍然保留用户传递的变量。它类似于 git merge,因此将用户的本地项目与更新的 CLI 模板合并。var deploymentYamlData在下面的代码中,您可以看到如何使用字符串变量对文件进行模板化的示例我有一个函数可以将所有这些文件模板组织到项目的正确目录结构中。我将如何将目录模板与用户的本地目录合并,同时能够保留原始模板变量?如果我需要澄清更多,请提前道歉。package mainimport (    "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) }}
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信