github.com/keybase/client/go@v0.0.0-20240520164431-4f512a4c85a3/client/cmd_simplefs_mkdir.go (about) 1 // Copyright 2015 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package client 5 6 import ( 7 "errors" 8 9 "golang.org/x/net/context" 10 11 "github.com/keybase/cli" 12 "github.com/keybase/client/go/libcmdline" 13 "github.com/keybase/client/go/libkb" 14 keybase1 "github.com/keybase/client/go/protocol/keybase1" 15 ) 16 17 // CmdSimpleFSMkdir is the 'fs mkdir' command. 18 type CmdSimpleFSMkdir struct { 19 libkb.Contextified 20 opid keybase1.OpID 21 path keybase1.Path 22 } 23 24 // NewCmdSimpleFSMkdir creates a new cli.Command. 25 func NewCmdSimpleFSMkdir(cl *libcmdline.CommandLine, g *libkb.GlobalContext) cli.Command { 26 return cli.Command{ 27 Name: "mkdir", 28 ArgumentHelp: "<path>", 29 Usage: "create directory", 30 Action: func(c *cli.Context) { 31 cl.ChooseCommand(&CmdSimpleFSMkdir{Contextified: libkb.NewContextified(g)}, "mkdir", c) 32 cl.SetNoStandalone() 33 }, 34 } 35 } 36 37 // Run runs the command in client/server mode. 38 func (c *CmdSimpleFSMkdir) Run() error { 39 cli, err := GetSimpleFSClient(c.G()) 40 if err != nil { 41 return err 42 } 43 44 ctx := context.TODO() 45 46 c.opid, err = cli.SimpleFSMakeOpid(ctx) 47 if err != nil { 48 return err 49 } 50 defer cli.SimpleFSClose(ctx, c.opid) 51 err = cli.SimpleFSOpen(ctx, keybase1.SimpleFSOpenArg{ 52 OpID: c.opid, 53 Dest: c.path, 54 Flags: keybase1.OpenFlags_DIRECTORY, 55 }) 56 if err != nil { 57 return err 58 } 59 60 return err 61 } 62 63 // ParseArgv gets the required path argument for this command. 64 func (c *CmdSimpleFSMkdir) ParseArgv(ctx *cli.Context) error { 65 nargs := len(ctx.Args()) 66 var err error 67 68 if nargs != 1 { 69 return errors.New("mkdir requires a KBFS path argument") 70 } 71 72 p, err := makeSimpleFSPath(ctx.Args()[0]) 73 if err != nil { 74 return err 75 } 76 77 c.path = p 78 return nil 79 } 80 81 // GetUsage says what this command needs to operate. 82 func (c *CmdSimpleFSMkdir) GetUsage() libkb.Usage { 83 return libkb.Usage{ 84 Config: true, 85 KbKeyring: true, 86 API: true, 87 } 88 }