main.go 973 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package main
  2. import (
  3. "encoding/base32"
  4. "flag"
  5. "fmt"
  6. "github.com/google/uuid"
  7. )
  8. var flagHelp bool
  9. var flagPrefix string
  10. var flagLowerCase bool
  11. const UpperCaseEncoding = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"
  12. const LowerCaseEncoding = "abcdefghijklmnopqrstuvwxyz234567"
  13. func main() {
  14. flag.BoolVar(&flagHelp, "h", false, "show help")
  15. flag.StringVar(&flagPrefix, "p", "", "add prefix for generated uuid")
  16. flag.BoolVar(&flagLowerCase, "l", false, "lowercase encoding")
  17. flag.Parse()
  18. if flagHelp {
  19. flag.PrintDefaults()
  20. return
  21. }
  22. id := uuid.New()
  23. b, err := id.MarshalBinary()
  24. if err != nil {
  25. fmt.Println("failed marshal uuid to []byte: ", err)
  26. return
  27. }
  28. var encStr string
  29. if flagLowerCase {
  30. encStr = LowerCaseEncoding
  31. } else {
  32. encStr = UpperCaseEncoding
  33. }
  34. b32Encoding := base32.NewEncoding(encStr)
  35. b32Encoding = b32Encoding.WithPadding('9')
  36. b32Str := b32Encoding.EncodeToString(b)
  37. out := fmt.Sprintf("%s%s", flagPrefix, b32Str)
  38. fmt.Println(out)
  39. }