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
}