diff options
Diffstat (limited to 'weed/shell/commands.go')
| -rw-r--r-- | weed/shell/commands.go | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/weed/shell/commands.go b/weed/shell/commands.go index 40be210a2..62dcfd7f8 100644 --- a/weed/shell/commands.go +++ b/weed/shell/commands.go @@ -3,13 +3,15 @@ package shell import ( "context" "fmt" - "github.com/seaweedfs/seaweedfs/weed/operation" - "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" - "github.com/seaweedfs/seaweedfs/weed/storage/needle_map" + "io" "net/url" "strconv" "strings" + "github.com/seaweedfs/seaweedfs/weed/operation" + "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" + "github.com/seaweedfs/seaweedfs/weed/storage/needle_map" + "google.golang.org/grpc" "github.com/seaweedfs/seaweedfs/weed/pb" @@ -147,6 +149,37 @@ func findInputDirectory(args []string) (input string) { return input } +// isHelpRequest checks if the args contain a help flag (-h, --help, or -help) +// It also handles combined short flags like -lh or -hl +func isHelpRequest(args []string) bool { + for _, arg := range args { + // Check for exact matches + if arg == "-h" || arg == "--help" || arg == "-help" { + return true + } + // Check for combined short flags (e.g., -lh, -hl, -rfh) + // Limit to reasonable length (2-4 chars total) to avoid matching long options like -verbose + if strings.HasPrefix(arg, "-") && !strings.HasPrefix(arg, "--") && len(arg) > 1 && len(arg) <= 4 { + for _, char := range arg[1:] { + if char == 'h' { + return true + } + } + } + } + return false +} + +// handleHelpRequest checks for help flags and prints the help message if requested. +// It returns true if the help message was printed, indicating the command should exit. +func handleHelpRequest(c command, args []string, writer io.Writer) bool { + if isHelpRequest(args) { + fmt.Fprintln(writer, c.Help()) + return true + } + return false +} + func readNeedleMeta(grpcDialOption grpc.DialOption, volumeServer pb.ServerAddress, volumeId uint32, needleValue needle_map.NeedleValue) (resp *volume_server_pb.ReadNeedleMetaResponse, err error) { err = operation.WithVolumeServerClient(false, volumeServer, grpcDialOption, func(client volume_server_pb.VolumeServerClient) error { |
