func RandTool()

in tools/random.go [78:174]


func RandTool(args ...string) error {

	flag := flag.NewFlagSet("random", flag.ExitOnError)

	flag.Usage = func() {
		fmt.Println(MarkdownHelp("random"))
	}

	var helpFlag bool
	var intFlag int
	var strFlag int
	var uuidFlag bool

	// Define command line flags
	flag.BoolVar(&helpFlag, "h", false, "Show help message")
	flag.BoolVar(&helpFlag, "help", false, "Show help message")
	flag.IntVar(&intFlag, "int", -1, "Generate a random integer")
	flag.IntVar(&strFlag, "str", -1, "Generate a random string")
	flag.BoolVar(&uuidFlag, "u", false, "Generate a random uuid")
	flag.BoolVar(&uuidFlag, "uuid", false, "Generate a random uuid")

	// Parse command line flags
	err := flag.Parse(args)
	if err != nil {
		return err
	}

	// Print help message if -h flag is provided
	if helpFlag {
		flag.Usage()
		return nil
	}

	if uuidFlag {
		return randomGen.GenerateUUID()
	}

	if isInputFlag(*flag, "int") {
		if flag.NArg() > 1 {
			flag.Usage()
			return errors.New("invalid number of arguments, expected 1 or 2 for --int")
		}

		max := intFlag
		min := 0

		if max <= 0 {
			return fmt.Errorf("invalid max value: %v. Must be greater than 0", max)
		}

		if flag.NArg() == 1 {
			minOpt, err := strconv.Atoi(flag.Arg(0))
			if err != nil {
				return err
			}

			min = minOpt
		}

		if min >= max {
			return fmt.Errorf("invalid min value: %v. Must be less than max value: %v", min, max)
		}

		randomGen.GenerateInteger(min, max)
		return nil
	}

	if isInputFlag(*flag, "str") {
		if flag.NArg() > 1 {
			flag.Usage()
			return errors.New("invalid number of arguments, expected 1 or 2 for --str")
		}

		length := strFlag
		chars := defaultCharRange

		if length <= 0 {
			return fmt.Errorf("invalid length value: %v. Must be greater than 0", length)
		}

		if flag.NArg() == 1 {
			chars = flag.Arg(0)
		}

		randomGen.GenerateString(length, chars)
		return nil
	}

	// Get remaining args
	if flag.NArg() > 0 {
		flag.Usage()
		return errors.New("invalid number of arguments")
	}

	randomGen.GenerateFloat01()
	return nil
}