Browse Source
shell: add fs.meta.cat to see file meta data content
shell: add fs.meta.cat to see file meta data content
related to https://github.com/chrislusf/seaweedfs/issues/1163pull/1167/head
1 changed files with 75 additions and 0 deletions
@ -0,0 +1,75 @@ |
|||
package shell |
|||
|
|||
import ( |
|||
"context" |
|||
"fmt" |
|||
"io" |
|||
|
|||
"github.com/golang/protobuf/jsonpb" |
|||
|
|||
"github.com/chrislusf/seaweedfs/weed/filer2" |
|||
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb" |
|||
) |
|||
|
|||
func init() { |
|||
Commands = append(Commands, &commandFsMetaCat{}) |
|||
} |
|||
|
|||
type commandFsMetaCat struct { |
|||
} |
|||
|
|||
func (c *commandFsMetaCat) Name() string { |
|||
return "fs.meta.cat" |
|||
} |
|||
|
|||
func (c *commandFsMetaCat) Help() string { |
|||
return `print out the meta data content for a file or directory |
|||
|
|||
fs.meta.cat /dir/ |
|||
fs.meta.cat /dir/file_name |
|||
fs.meta.cat http://<filer_server>:<port>/dir/
|
|||
fs.meta.cat http://<filer_server>:<port>/dir/file_name
|
|||
` |
|||
} |
|||
|
|||
func (c *commandFsMetaCat) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) { |
|||
|
|||
input := findInputDirectory(args) |
|||
|
|||
filerServer, filerPort, path, err := commandEnv.parseUrl(input) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
|
|||
ctx := context.Background() |
|||
|
|||
dir, name := filer2.FullPath(path).DirAndName() |
|||
|
|||
return commandEnv.withFilerClient(ctx, filerServer, filerPort, func(client filer_pb.SeaweedFilerClient) error { |
|||
|
|||
request := &filer_pb.LookupDirectoryEntryRequest{ |
|||
Name: name, |
|||
Directory: dir, |
|||
} |
|||
respLookupEntry, err := client.LookupDirectoryEntry(ctx, request) |
|||
if err != nil { |
|||
return err |
|||
} |
|||
|
|||
m := jsonpb.Marshaler{ |
|||
EmitDefaults: true, |
|||
Indent: " ", |
|||
} |
|||
|
|||
text, marshalErr := m.MarshalToString(respLookupEntry.Entry) |
|||
if marshalErr != nil { |
|||
return fmt.Errorf("marshal meta: %v", marshalErr) |
|||
} |
|||
|
|||
fmt.Fprintf(writer, "%s\n", text) |
|||
|
|||
return nil |
|||
|
|||
}) |
|||
|
|||
} |
Reference in new issue
xxxxxxxxxx