Browse Source

Shell: Added a helper function `isHelpRequest()` (#7380)

* Added a helper function `isHelpRequest()`

* also handles combined short flags like -lh or -hl

* Created handleHelpRequest() helper function

encapsulates both:
Checking for help flags
Printing the help message

* Limit to reasonable length (2-4 chars total) to avoid matching long options like -verbose
pull/4975/merge
Chris Lu 6 days ago
committed by GitHub
parent
commit
37af41fbfe
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 4
      weed/shell/command_fs_cat.go
  2. 4
      weed/shell/command_fs_cd.go
  3. 4
      weed/shell/command_fs_du.go
  4. 4
      weed/shell/command_fs_ls.go
  5. 9
      weed/shell/command_fs_meta_cat.go
  6. 4
      weed/shell/command_fs_meta_notify.go
  7. 9
      weed/shell/command_fs_mkdir.go
  8. 4
      weed/shell/command_fs_mv.go
  9. 4
      weed/shell/command_fs_pwd.go
  10. 5
      weed/shell/command_fs_rm.go
  11. 4
      weed/shell/command_fs_tree.go
  12. 39
      weed/shell/commands.go

4
weed/shell/command_fs_cat.go

@ -34,6 +34,10 @@ func (c *commandFsCat) HasTag(CommandTag) bool {
func (c *commandFsCat) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

4
weed/shell/command_fs_cd.go

@ -34,6 +34,10 @@ func (c *commandFsCd) HasTag(CommandTag) bool {
func (c *commandFsCd) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

4
weed/shell/command_fs_du.go

@ -36,6 +36,10 @@ func (c *commandFsDu) HasTag(CommandTag) bool {
func (c *commandFsDu) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

4
weed/shell/command_fs_ls.go

@ -40,6 +40,10 @@ func (c *commandFsLs) HasTag(CommandTag) bool {
func (c *commandFsLs) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
var isLongFormat, showHidden bool
for _, arg := range args {
if !strings.HasPrefix(arg, "-") {

9
weed/shell/command_fs_meta_cat.go

@ -3,11 +3,12 @@ package shell
import (
"context"
"fmt"
"github.com/seaweedfs/seaweedfs/weed/filer"
"google.golang.org/protobuf/proto"
"io"
"sort"
"github.com/seaweedfs/seaweedfs/weed/filer"
"google.golang.org/protobuf/proto"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
"github.com/seaweedfs/seaweedfs/weed/util"
)
@ -37,6 +38,10 @@ func (c *commandFsMetaCat) HasTag(CommandTag) bool {
func (c *commandFsMetaCat) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

4
weed/shell/command_fs_meta_notify.go

@ -36,6 +36,10 @@ func (c *commandFsMetaNotify) HasTag(CommandTag) bool {
func (c *commandFsMetaNotify) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

9
weed/shell/command_fs_mkdir.go

@ -2,11 +2,12 @@ package shell
import (
"context"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
"github.com/seaweedfs/seaweedfs/weed/util"
"io"
"os"
"time"
"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
"github.com/seaweedfs/seaweedfs/weed/util"
)
func init() {
@ -33,6 +34,10 @@ func (c *commandFsMkdir) HasTag(CommandTag) bool {
func (c *commandFsMkdir) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

4
weed/shell/command_fs_mv.go

@ -40,6 +40,10 @@ func (c *commandFsMv) HasTag(CommandTag) bool {
func (c *commandFsMv) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
if len(args) != 2 {
return fmt.Errorf("need to have 2 arguments")
}

4
weed/shell/command_fs_pwd.go

@ -26,6 +26,10 @@ func (c *commandFsPwd) HasTag(CommandTag) bool {
func (c *commandFsPwd) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
fmt.Fprintf(writer, "%s\n", commandEnv.option.Directory)
return nil

5
weed/shell/command_fs_rm.go

@ -39,6 +39,11 @@ func (c *commandFsRm) HasTag(CommandTag) bool {
}
func (c *commandFsRm) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
isRecursive := false
ignoreRecursiveError := false
var entries []string

4
weed/shell/command_fs_tree.go

@ -35,6 +35,10 @@ func (c *commandFsTree) HasTag(CommandTag) bool {
func (c *commandFsTree) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
if handleHelpRequest(c, args, writer) {
return nil
}
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err

39
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 {

Loading…
Cancel
Save