package main import ( "encoding/base32" "flag" "fmt" "github.com/google/uuid" ) var flagHelp bool var flagPrefix string var flagLowerCase bool const UpperCaseEncoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567" const LowerCaseEncoding = "abcdefghijklmnopqrstuvwxyz234567" func main() { flag.BoolVar(&flagHelp, "h", false, "show help") flag.StringVar(&flagPrefix, "p", "", "add prefix for generated uuid") flag.BoolVar(&flagLowerCase, "l", false, "lowercase encoding") flag.Parse() if flagHelp { flag.PrintDefaults() return } id := uuid.New() b, err := id.MarshalBinary() if err != nil { fmt.Println("failed marshal uuid to []byte: ", err) return } var encStr string if flagLowerCase { encStr = LowerCaseEncoding } else { encStr = UpperCaseEncoding } b32Encoding := base32.NewEncoding(encStr) b32Encoding = b32Encoding.WithPadding('9') b32Str := b32Encoding.EncodeToString(b) out := fmt.Sprintf("%s%s", flagPrefix, b32Str) fmt.Println(out) }