feat: add get range feat to export tool (#2131)

This commit is contained in:
Peter Chen
2025-05-20 10:08:17 -04:00
committed by GitHub
parent b3da9adb03
commit 28bd58f1d1
6 changed files with 134 additions and 23 deletions

View File

@@ -16,6 +16,11 @@ type Args struct {
WsServer string
ServerMode bool
ShowRange bool
GetRange bool
// for authenticating DB
Host string
Username string
Password string
}
func Parse() (*Args, error) {
@@ -31,33 +36,56 @@ func Parse() (*Args, error) {
wsServer := fs.StringP("ws_server", "w", "0.0.0.0:6006", "rippled's gRPC server address")
serverMode := fs.BoolP("server", "s", false, "Start server mode")
showRange := fs.BoolP("range", "r", false, "Show the range of the snapshot")
getRange := fs.Bool("getRange", false, "Get the available DB range of the host")
host := fs.String("host", "", "Database host (e.g., 127.0.0.1)")
username := fs.String("username", "", "Database username")
password := fs.String("password", "", "Database password")
fs.Parse(os.Args[1:])
if *serverMode && *exportMode != "" {
return nil, fmt.Errorf("Invalid usage: --server and --export cannot be used at the same time.")
return nil, fmt.Errorf("invalid usage: --server and --export cannot be used at the same time")
}
if *serverMode {
if *grpcServer == "" || *wsServer == "" || *path == "" {
return nil, fmt.Errorf("Invalid usage: --grpc_server and --ws_server and --path are required for server mode.")
return nil, fmt.Errorf("invalid usage: --grpc_server and --ws_server and --path are required for server mode")
}
} else if *exportMode != "" {
if *exportMode == "full" || *exportMode == "delta" {
if *seq == 0 || *endSeq == 0 || *path == "" || *grpcServer == "" {
return nil, fmt.Errorf("Invalid usage: --start_seq, --end_seq, --grpc_server and --path are required for export.")
return nil, fmt.Errorf("invalid usage: --start_seq, --end_seq, --grpc_server and --path are required for export")
}
} else {
return nil, fmt.Errorf("Invalid usage: Invalid export mode. Use 'full' or 'delta'.")
return nil, fmt.Errorf("invalid usage: Invalid export mode. Use 'full' or 'delta'")
}
} else if *showRange {
if *path == "" {
return nil, fmt.Errorf("Invalid usage: --path is required for show range.")
return nil, fmt.Errorf("invalid usage: --path is required for show range")
}
} else if *getRange {
if *host == "" || *username == "" || *password == "" {
return nil, fmt.Errorf("invalid usage: --host, --username, and --password are required for getRange")
}
} else {
return nil, fmt.Errorf("Invalid usage: --export or --server or --range flag is required.")
return nil, fmt.Errorf("invalid usage: --export or --server or --range flag is required")
}
return &Args{*exportMode, *seq, *endSeq, *path, *grpcServer, *wsServer, *serverMode, *showRange}, nil
return &Args{
ExportMode: *exportMode,
StartSeq: *seq,
EndSeq: *endSeq,
Path: *path,
GrpcServer: *grpcServer,
WsServer: *wsServer,
ServerMode: *serverMode,
ShowRange: *showRange,
GetRange: *getRange,
Host: *host,
Username: *username,
Password: *password,
}, nil
}
func PrintUsage() {