MCPcopy
hub / github.com/containers/toolbox / resolveContainerAndImageNames

Function resolveContainerAndImageNames

src/cmd/utils.go:447–505  ·  view source on GitHub ↗
(container, containerArg, distroCLI, imageCLI, releaseCLI string)

Source from the content-addressed store, hash-verified

445}
446
447func resolveContainerAndImageNames(container, containerArg, distroCLI, imageCLI, releaseCLI string) (
448 string, string, string, error,
449) {
450 container, image, release, err := utils.ResolveContainerAndImageNames(container,
451 distroCLI,
452 imageCLI,
453 releaseCLI)
454
455 if err != nil {
456 var errContainer *utils.ContainerError
457 var errDistro *utils.DistroError
458 var errImage *utils.ImageError
459 var errParseRelease *utils.ParseReleaseError
460
461 if errors.As(err, &errContainer) {
462 if errors.Is(err, utils.ErrContainerNameInvalid) {
463 if containerArg == "" {
464 panicMsg := fmt.Sprintf("unexpected %T without containerArg: %s", err, err)
465 panic(panicMsg)
466 }
467
468 err := createErrorInvalidContainer(containerArg)
469 return "", "", "", err
470 } else if errors.Is(err, utils.ErrContainerNameFromImageInvalid) {
471 err := createErrorInvalidImageForContainerName(errContainer.Container)
472 return "", "", "", err
473 } else {
474 panicMsg := fmt.Sprintf("unexpected %T: %s", err, err)
475 panic(panicMsg)
476 }
477 } else if errors.As(err, &errDistro) {
478 if errors.Is(err, utils.ErrDistroUnsupported) {
479 err := createErrorInvalidDistro(errDistro.Distro)
480 return "", "", "", err
481 } else if errors.Is(err, utils.ErrDistroWithoutRelease) {
482 err := createErrorDistroWithoutRelease(errDistro.Distro)
483 return "", "", "", err
484 } else {
485 panicMsg := fmt.Sprintf("unexpected %T: %s", err, err)
486 panic(panicMsg)
487 }
488 } else if errors.As(err, &errImage) {
489 if errors.Is(err, utils.ErrImageWithoutBasename) {
490 err := createErrorInvalidImageWithoutBasename()
491 return "", "", "", err
492 } else {
493 panicMsg := fmt.Sprintf("unexpected %T: %s", err, err)
494 panic(panicMsg)
495 }
496 } else if errors.As(err, &errParseRelease) {
497 err := createErrorInvalidRelease(errParseRelease.Hint)
498 return "", "", "", err
499 } else {
500 return "", "", "", err
501 }
502 }
503
504 return container, image, release, nil

Callers 4

enterFunction · 0.85
runFunction · 0.85
createFunction · 0.85
rootRunImplFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…