func ReadDistroVersionID()

in packaging/linux/deb/debroot.go [583:628]


func ReadDistroVersionID(ctx context.Context, client gwclient.Client, st llb.State) (string, error) {
	rootfs, err := bkfs.FromState(ctx, &st, client)
	if err != nil {
		return "", err
	}

	f, err := rootfs.Open("etc/os-release")
	if err != nil {
		return "", err
	}

	defer f.Close()

	scanner := bufio.NewScanner(f)
	var (
		id      string
		version string
	)

	for scanner.Scan() {
		k, v, ok := strings.Cut(scanner.Text(), "=")
		if !ok {
			continue
		}
		switch k {
		case "ID":
			id = unquote(v)
		case "VERSION_ID":
			version = unquote(v)
		}

		if id != "" && version != "" {
			break
		}
	}

	if scanner.Err() != nil {
		return "", err
	}

	if id == "" || version == "" {
		return "", errors.New("could not determine distro or version ID")
	}

	return id + version, nil
}