(image string)
| 549 | } |
| 550 | |
| 551 | func loadAuthInfo(image string) (bool, string) { |
| 552 | if !strings.Contains(image, "/") { |
| 553 | return false, "" |
| 554 | } |
| 555 | homeDir := homedir.Get() |
| 556 | confPath := path.Join(homeDir, ".docker/config.json") |
| 557 | configFileBytes, err := os.ReadFile(confPath) |
| 558 | if err != nil { |
| 559 | return false, "" |
| 560 | } |
| 561 | var config dockerConfig |
| 562 | if err = json.Unmarshal(configFileBytes, &config); err != nil { |
| 563 | return false, "" |
| 564 | } |
| 565 | var ( |
| 566 | user string |
| 567 | passwd string |
| 568 | ) |
| 569 | imagePrefix := strings.Split(image, "/")[0] |
| 570 | if val, ok := config.Auths[imagePrefix]; ok { |
| 571 | itemByte, _ := base64.StdEncoding.DecodeString(val.Auth) |
| 572 | itemStr := string(itemByte) |
| 573 | if strings.Contains(itemStr, ":") { |
| 574 | user = strings.Split(itemStr, ":")[0] |
| 575 | passwd = strings.Split(itemStr, ":")[1] |
| 576 | } |
| 577 | } |
| 578 | authConfig := registry.AuthConfig{ |
| 579 | Username: user, |
| 580 | Password: passwd, |
| 581 | } |
| 582 | encodedJSON, err := json.Marshal(authConfig) |
| 583 | if err != nil { |
| 584 | return false, "" |
| 585 | } |
| 586 | authStr := base64.URLEncoding.EncodeToString(encodedJSON) |
| 587 | return true, authStr |
| 588 | } |
| 589 | |
| 590 | type dockerConfig struct { |
| 591 | Auths map[string]authConfig `json:"auths"` |
no test coverage detected