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  }