获得了位于template文件夹之外的配置文件列表,我们将其输入到掌舵图中,如下所示:
├── configs
│ ├── AllEnvironments
│ │ ├── Infrastructure
│ │ └── Services
│ │ ├── ConfigFile1
│ │ ├── ConfigFile2
│ ├── Apps
│ │ ├── App1
│ │ ├── App2
│ │ └── App3
│ ├── ManagementEnvironments
│ │ ├── Database
│ │ │ ├── DbFile1
│ │ │ └── DbFile2
│ │ ├── Infrastructure
│ ├── TestEnvironments
│ │ ├── Pipeline
│ │ │ └── Pipeline1
│ │ ├── Database
│ │ │ ├── Pipeline2
│ ├── Console
│ │ ├── Console1
│ │ ├── Console2
到目前为止,它对我们有好处。现在,我们需要解析文件夹,并在不以环境结尾的配置下获取所有文件夹的列表。因此,在这种情况下,基本上范围将包括Apps和Console。
执行以下操作后,我得到3次重复的Apps,这是因为它下面有许多文件,同时也获得了2次控制台。
我想获得一个不只以环境结尾的文件夹列表。
我试图查看Go模板和一些掌舵图表工具包,但我没有Go经验,这似乎是实现此目标的必要条件,我可能会在接下来的几天进行。但是就目前而言,我一直处于困境,因此不胜感激。
{{- range $path, $bytes := $.Files.Glob "configs/**" }}
{{- if not (or (dir $path | regexFind "configs.*Environments.*") (dir $path | regexFind "configs$")) }}
{{ base (dir $path) }}
{{- end }}
{{- end }}
答案 0 :(得分:0)
如果可以帮助其他人,这是一种方法:
头盔图使用Go模板和Sprig库。因此,使用Sprig的dict可以保留列出的文件夹的先前值,并且仅当当前文件夹与先前文件夹不同时才打印出来。现在这可以按字母顺序列出文件,因此同一文件夹中的文件将是连续的。如果不按顺序阅读它们,这些方法将行不通。
{{- $localDict := dict "previous" "-"}}
{{- range $path, $bytes := $.Files.Glob "configs/**" }}
{{- if not (or (dir $path | regexFind "configs.*Environments.*") (dir $path | regexFind "configs$")) }}
{{- $folder := base (dir $path) }}
{{- if not (eq $folder $localDict.previous)}}
{{$folder -}}
{{- end }}
{{- $_ := set $localDict "previous" $folder -}}
{{- end }}
{{- end }}
答案 1 :(得分:0)