(filename, service string)
| 224 | } |
| 225 | |
| 226 | func (ct *cycleTracker) Add(filename, service string) (*cycleTracker, error) { |
| 227 | toAdd := serviceRef{filename: filename, service: service} |
| 228 | for _, loaded := range ct.loaded { |
| 229 | if toAdd == loaded { |
| 230 | // Create an error message of the form: |
| 231 | // Circular reference: |
| 232 | // service-a in docker-compose.yml |
| 233 | // extends service-b in docker-compose.yml |
| 234 | // extends service-a in docker-compose.yml |
| 235 | errLines := []string{ |
| 236 | "Circular reference:", |
| 237 | fmt.Sprintf(" %s in %s", ct.loaded[0].service, ct.loaded[0].filename), |
| 238 | } |
| 239 | for _, service := range append(ct.loaded[1:], toAdd) { |
| 240 | errLines = append(errLines, fmt.Sprintf(" extends %s in %s", service.service, service.filename)) |
| 241 | } |
| 242 | |
| 243 | return nil, errors.New(strings.Join(errLines, "\n")) |
| 244 | } |
| 245 | } |
| 246 | |
| 247 | var branch []serviceRef |
| 248 | branch = append(branch, ct.loaded...) |
| 249 | branch = append(branch, toAdd) |
| 250 | return &cycleTracker{ |
| 251 | loaded: branch, |
| 252 | }, nil |
| 253 | } |
| 254 | |
| 255 | // WithDiscardEnvFiles sets the Options to discard the `env_file` section after resolving to |
| 256 | // the `environment` section |
no outgoing calls
no test coverage detected