|
@@ -0,0 +1,43 @@
|
|
|
+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)
|
|
|
+}
|