func()

in targets/target.go [248:290]


func (t *Target) Packager(projectName, distro, version string) (Packager, error) {
	var mappings map[string]archive.Archive
	switch projectName {
	case "moby-engine":
		mappings = engine.Archives
	case "moby-cli":
		mappings = cli.Archives
	case "moby-containerd":
		ls, err := containerd.Archives(version)
		if err != nil {
			return nil, err
		}
		mappings = ls
	case "moby-containerd-shim-systemd":
		mappings = shim.Archives
	case "moby-runc":
		mappings = runc.Archives
	case "moby-compose":
		mappings = compose.Archives
	case "moby-buildx":
		mappings = buildx.Archives
	case "moby-tini":
		mappings = tini.Archives
	default:
		return nil, fmt.Errorf("unsupported project: %s", projectName)
	}

	a, ok := mappings[distro]
	if !ok {
		return nil, fmt.Errorf("unsupported distro: %s", distro)
	}

	switch t.PkgKind() {
	case "deb":
		return archive.NewDebPackager(&a, MirrorPrefix()), nil
	case "rpm":
		return archive.NewRPMPackager(&a, MirrorPrefix()), nil
	case "win":
		return archive.NewWinPackager(&a, MirrorPrefix()), nil
	default:
		panic("unknown pkgKind: " + t.pkgKind)
	}
}