// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package uuid

import (
	"fmt"

	"github.com/hashicorp/nomad/helper/crypto"
)

// Generate is used to generate a random UUID.
func Generate() string {
	buf, err := crypto.Bytes(16)
	if err != nil {
		panic(fmt.Errorf("failed to read random bytes: %v", err))
	}

	return fmt.Sprintf("%08x-%04x-%04x-%04x-%12x",
		buf[0:4],
		buf[4:6],
		buf[6:8],
		buf[8:10],
		buf[10:16])
}

// Short is used to generate the first 8 characters of a UUID.
func Short() string {
	return Generate()[0:8]
}
