seaweedfs/weed/shell/command_fs_mkdir.go
chrislu 9f9ef1340c use streaming mode for long poll grpc calls
streaming mode would create separate grpc connections for each call.
this is to ensure the long poll connections are properly closed.
2021-12-26 00:15:03 -08:00

58 lines
1.1 KiB
Go

package shell
import (
"context"
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/chrislusf/seaweedfs/weed/util"
"io"
"os"
"time"
)
func init() {
Commands = append(Commands, &commandFsMkdir{})
}
type commandFsMkdir struct {
}
func (c *commandFsMkdir) Name() string {
return "fs.mkdir"
}
func (c *commandFsMkdir) Help() string {
return `create a directory
fs.mkdir path/to/dir
`
}
func (c *commandFsMkdir) Do(args []string, commandEnv *CommandEnv, writer io.Writer) (err error) {
path, err := commandEnv.parseUrl(findInputDirectory(args))
if err != nil {
return err
}
dir, name := util.FullPath(path).DirAndName()
err = commandEnv.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {
_, createErr := client.CreateEntry(context.Background(), &filer_pb.CreateEntryRequest{
Directory: dir,
Entry: &filer_pb.Entry{
Name: name,
IsDirectory: true,
Attributes: &filer_pb.FuseAttributes{
Mtime: time.Now().Unix(),
Crtime: time.Now().Unix(),
FileMode: uint32(0777 | os.ModeDir),
},
},
})
return createErr
})
return
}