@@ -21,8 +21,10 @@ import (
2121 "fmt"
2222 "os"
2323 "path/filepath"
24+ "regexp"
2425 "runtime"
2526 "strconv"
27+ "strings"
2628 "sync/atomic"
2729 "time"
2830
@@ -532,3 +534,33 @@ func hashish(x string) bool {
532534 _ , err := strconv .Atoi (x )
533535 return err != nil
534536}
537+
538+ func parseRange (s string ) (start uint64 , end uint64 , ok bool ) {
539+ log .Info ("Parsing block range" , "input" , s )
540+ if m , _ := regexp .MatchString ("^[0-9]+-[0-9]+$" , s ); m {
541+ s1 , s2 , _ := strings .Cut (s , "-" )
542+ start , err := strconv .ParseUint (s1 , 10 , 64 )
543+ if err != nil {
544+ return 0 , 0 , false
545+ }
546+ end , err = strconv .ParseUint (s2 , 10 , 64 )
547+ if err != nil {
548+ return 0 , 0 , false
549+ }
550+ if start > end {
551+ return 0 , 0 , false
552+ }
553+ log .Info ("Parsing block range" , "start" , start , "end" , end )
554+ return start , end , true
555+ }
556+ if m , _ := regexp .MatchString ("^[0-9]+$" , s ); m {
557+ start , err := strconv .ParseUint (s , 10 , 64 )
558+ if err != nil {
559+ return 0 , 0 , false
560+ }
561+ end = start
562+ log .Info ("Parsing single block range" , "block" , start )
563+ return start , end , true
564+ }
565+ return 0 , 0 , false
566+ }
0 commit comments