|
5 | 5 | "strings" |
6 | 6 |
|
7 | 7 | console "github.com/pluralsh/console/go/client" |
| 8 | + "github.com/pluralsh/polly/algorithms" |
8 | 9 | "sigs.k8s.io/yaml" |
9 | 10 | ) |
10 | 11 |
|
@@ -147,3 +148,78 @@ func BuildContracts(path string) (*PrContracts, error) { |
147 | 148 |
|
148 | 149 | return pr, err |
149 | 150 | } |
| 151 | + |
| 152 | +type PrTemplateSpecMirror struct { |
| 153 | + Updates *UpdateSpecMirror `json:"updates"` |
| 154 | + Creates *CreateSpec `json:"creates"` |
| 155 | + Deletes *DeleteSpec `json:"deletes"` |
| 156 | + Lua *LuaSpecMirror `json:"lua"` |
| 157 | +} |
| 158 | + |
| 159 | +func (p *PrTemplateSpecMirror) Convert() *PrTemplateSpec { |
| 160 | + return &PrTemplateSpec{ |
| 161 | + Updates: p.Updates.Convert(), |
| 162 | + Creates: p.Creates, |
| 163 | + Deletes: p.Deletes, |
| 164 | + Lua: p.Lua.Convert(), |
| 165 | + } |
| 166 | +} |
| 167 | + |
| 168 | +type LuaSpecMirror struct { |
| 169 | + ExternalDir string `json:"externalDir"` |
| 170 | + External bool `json:"external"` |
| 171 | + Script string `json:"script"` |
| 172 | + Folder string `json:"folder"` |
| 173 | +} |
| 174 | + |
| 175 | +func (p *LuaSpecMirror) Convert() *LuaSpec { |
| 176 | + if p == nil { |
| 177 | + return nil |
| 178 | + } |
| 179 | + return &LuaSpec{ |
| 180 | + ExternalDir: p.ExternalDir, |
| 181 | + External: p.External, |
| 182 | + Script: p.Script, |
| 183 | + Folder: p.Folder, |
| 184 | + } |
| 185 | +} |
| 186 | + |
| 187 | +func (p *UpdateSpecMirror) Convert() *UpdateSpec { |
| 188 | + if p == nil { |
| 189 | + return nil |
| 190 | + } |
| 191 | + |
| 192 | + return &UpdateSpec{ |
| 193 | + Regexes: p.Regexes, |
| 194 | + Files: p.Files, |
| 195 | + ReplaceTemplate: p.ReplaceTemplate, |
| 196 | + Yq: p.Yq, |
| 197 | + MatchStrategy: p.MatchStrategy, |
| 198 | + RegexReplacements: p.RegexReplacements, |
| 199 | + YamlOverlays: algorithms.Map(p.YamlOverlays, func(y YamlOverlayMirror) YamlOverlay { |
| 200 | + return YamlOverlay{ |
| 201 | + File: y.File, |
| 202 | + Yaml: y.Yaml, |
| 203 | + ListMerge: y.ListMerge, |
| 204 | + Templated: y.Templated, |
| 205 | + } |
| 206 | + }), |
| 207 | + } |
| 208 | +} |
| 209 | + |
| 210 | +type UpdateSpecMirror struct { |
| 211 | + Regexes []string `json:"regexes"` |
| 212 | + Files []string `json:"files"` |
| 213 | + ReplaceTemplate string `json:"replaceTemplate"` |
| 214 | + Yq string `json:"yq"` |
| 215 | + MatchStrategy string `json:"matchStrategy"` |
| 216 | + RegexReplacements []RegexReplacement `json:"regexReplacements"` |
| 217 | + YamlOverlays []YamlOverlayMirror `json:"yamlOverlays"` |
| 218 | +} |
| 219 | + |
| 220 | +type YamlOverlayMirror struct { |
| 221 | + File string `json:"file"` |
| 222 | + Yaml string `json:"yaml"` |
| 223 | + ListMerge ListMerge `json:"listMerge"` |
| 224 | + Templated bool `json:"templated"` |
| 225 | +} |
0 commit comments