aboutsummaryrefslogtreecommitdiff
path: root/weed/shell/command_fs_cd.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/shell/command_fs_cd.go')
-rw-r--r--weed/shell/command_fs_cd.go54
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