Skip to content

Commit f9f06e8

Browse files
committed
add monotic flag to command line
1 parent 68136f4 commit f9f06e8

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

cmd/sulid/main.go

+13-7
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,20 @@ const (
1818
)
1919

2020
var (
21-
formatFlag string
22-
localFlag bool
23-
quickFlag bool
24-
zeroFlag bool
25-
numberFlag uint
21+
formatFlag string
22+
localFlag bool
23+
quickFlag bool
24+
zeroFlag bool
25+
monoticFlag bool
26+
numberFlag uint
2627
)
2728

2829
func init() {
2930
flag.StringVar(&formatFlag, "f", "default", "when parsing, show times in this format: default, rfc3339, unix, ms")
3031
flag.BoolVar(&localFlag, "l", false, "when parsing, show local time instead of UTC")
3132
flag.BoolVar(&quickFlag, "q", false, "when generating, use non-crypto-grade entropy")
3233
flag.BoolVar(&zeroFlag, "z", false, "when generating, fix entropy to all-zeroes")
34+
flag.BoolVar(&monoticFlag, "m", true, "when generating, use monotonically increasing")
3335
flag.UintVar(&numberFlag, "n", 1, "when generating, specify the quantity to be generated")
3436
}
3537

@@ -54,13 +56,13 @@ func main() {
5456

5557
switch len(args) {
5658
case 0:
57-
generate(quickFlag, zeroFlag, numberFlag)
59+
generate(quickFlag, zeroFlag, monoticFlag, numberFlag)
5860
default:
5961
parse(args[0], localFlag, formatFunc)
6062
}
6163
}
6264

63-
func generate(quick, zero bool, num uint) {
65+
func generate(quick, zero, mono bool, num uint) {
6466
entropy := cryptorand.Reader
6567
if quick {
6668
seed := time.Now().UnixNano()
@@ -71,6 +73,10 @@ func generate(quick, zero bool, num uint) {
7173
entropy = zeroReader{}
7274
}
7375

76+
if mono {
77+
entropy = &sulid.LockedMonotonicReader{MonotonicReader: sulid.Monotonic(entropy, 0)}
78+
}
79+
7480
for range num {
7581
id, err := sulid.New(sulid.Timestamp(time.Now()), entropy)
7682
if err != nil {

0 commit comments

Comments
 (0)