diff options
Diffstat (limited to 'weed/shell/command_fs_cd.go')
| -rw-r--r-- | weed/shell/command_fs_cd.go | 54 |
1 files changed, 7 insertions, 47 deletions
diff --git a/weed/shell/command_fs_cd.go b/weed/shell/command_fs_cd.go index 13208a3f8..f14350f02 100644 --- a/weed/shell/command_fs_cd.go +++ b/weed/shell/command_fs_cd.go @@ -2,11 +2,7 @@ package shell import ( "context" - "fmt" - "github.com/chrislusf/seaweedfs/weed/filer2" - "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "io" - "strings" ) func init() { @@ -35,59 +31,23 @@ func (c *commandFsCd) Help() string { func (c *commandFsCd) Do(args []string, commandEnv *commandEnv, writer io.Writer) (err error) { - input := "" - if len(args) > 0 { - input = args[len(args)-1] - } + input := findInputDirectory(args) filerServer, filerPort, path, err := commandEnv.parseUrl(input) if err != nil { return err } - dir, name := filer2.FullPath(path).DirAndName() - if strings.HasSuffix(path, "/") { - if path == "/" { - dir, name = "/", "" - } else { - dir, name = filer2.FullPath(path[0:len(path)-1]).DirAndName() - } + if path == "/" { + commandEnv.option.FilerHost = filerServer + commandEnv.option.FilerPort = filerPort + commandEnv.option.Directory = "/" + return nil } ctx := context.Background() - err = commandEnv.withFilerClient(ctx, filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error { - - resp, listErr := client.ListEntries(ctx, &filer_pb.ListEntriesRequest{ - Directory: dir, - Prefix: name, - StartFromFileName: name, - InclusiveStartFrom: true, - Limit: 1, - }) - if listErr != nil { - return listErr - } - - if path == "" || path == "/" { - return nil - } - - if len(resp.Entries) == 0 { - return fmt.Errorf("entry not found") - } - - if resp.Entries[0].Name != name { - println("path", path, "dir", dir, "name", name, "found", resp.Entries[0].Name) - return fmt.Errorf("not a valid directory, found %s", resp.Entries[0].Name) - } - - if !resp.Entries[0].IsDirectory { - return fmt.Errorf("not a directory") - } - - return nil - }) + err = commandEnv.checkDirectory(ctx, filerServer, filerPort, path) if err == nil { commandEnv.option.FilerHost = filerServer |
