github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/kbfs/kbfstool/git_rename.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 7 "github.com/keybase/client/go/kbfs/env" 8 "github.com/keybase/client/go/kbfs/fsrpc" 9 "github.com/keybase/client/go/kbfs/libgit" 10 "github.com/keybase/client/go/kbfs/libkbfs" 11 "github.com/keybase/client/go/protocol/keybase1" 12 "golang.org/x/net/context" 13 ) 14 15 const gitRenameUsageStr = `Usage: 16 kbfstool git rename /keybase/tlf/path oldName newName 17 ` 18 19 func doGitRename(ctx context.Context, 20 rpcHandler *libgit.RPCHandler, tlfStr, oldName, newName string) error { 21 p, err := fsrpc.NewPath(tlfStr) 22 if err != nil { 23 return err 24 } 25 if p.PathType != fsrpc.TLFPathType { 26 return fmt.Errorf("%q is not a TLF path", tlfStr) 27 } 28 if len(p.TLFComponents) > 0 { 29 return fmt.Errorf("%q is not the root path of a TLF", tlfStr) 30 } 31 folder := keybase1.FolderHandle{ 32 Name: p.TLFName, 33 FolderType: p.TLFType.FolderType(), 34 } 35 36 return rpcHandler.RenameRepo(ctx, folder, oldName, newName) 37 } 38 39 func gitRename(ctx context.Context, config libkbfs.Config, args []string) (exitStatus int) { 40 flags := flag.NewFlagSet("kbfs git rename", flag.ContinueOnError) 41 err := flags.Parse(args) 42 if err != nil { 43 printError("git rename", err) 44 return 1 45 } 46 47 inputs := flags.Args() 48 if len(inputs) != 3 { 49 fmt.Print(gitRenameUsageStr) 50 return 1 51 } 52 53 kbfsCtx := env.NewContext() 54 rpcHandler, shutdown := libgit.NewRPCHandlerWithCtx(kbfsCtx, config, nil) 55 defer shutdown() 56 57 err = doGitRename(ctx, rpcHandler, inputs[0], inputs[1], inputs[2]) 58 if err != nil { 59 printError("git rename", err) 60 return 1 61 } 62 63 return 0 64 }