package all

import (
	"fmt"

	"github.com/xtls/xray-core/common/uuid"
	"github.com/xtls/xray-core/main/commands/base"
)

var cmdUUID = &base.Command{
	UsageLine: `{{.Exec}} uuid [-i "example"]`,
	Short:     `Generate UUIDv4 or UUIDv5`,
	Long: `
Generate UUIDv4 or UUIDv5.

UUIDv4 (random): {{.Exec}} uuid

UUIDv5 (from input): {{.Exec}} uuid -i "example"
`,
}

func init() {
	cmdUUID.Run = executeUUID // break init loop
}

var input = cmdUUID.Flag.String("i", "", "")

func executeUUID(cmd *base.Command, args []string) {
	var output string
	if l := len(*input); l == 0 {
		u := uuid.New()
		output = u.String()
	} else if l <= 30 {
		u, _ := uuid.ParseString(*input)
		output = u.String()
	} else {
		output = "Input must be within 30 bytes."
	}
	fmt.Println(output)
}