From 155435cb35aa783574c4c9b420fdd0ead8e85022 Mon Sep 17 00:00:00 2001 From: Jesse Bouwman Date: Thu, 12 Aug 2021 09:23:39 -0700 Subject: [PATCH] Add flag to create parent directories in files cp command Closes #8289 --- core/commands/files.go | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/core/commands/files.go b/core/commands/files.go index 927ce51e2cf..6a1c887069e 100644 --- a/core/commands/files.go +++ b/core/commands/files.go @@ -356,8 +356,14 @@ GC'ed. cmds.StringArg("source", true, false, "Source IPFS or MFS path to copy."), cmds.StringArg("dest", true, false, "Destination within MFS."), }, + Options: []cmds.Option{ + cmds.BoolOption(filesParentsOptionName, "p", "Make parent directories as needed."), + }, Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error { + mkParents, _ := req.Options[filesParentsOptionName].(bool) nd, err := cmdenv.GetNode(env) + + prefix, err := getPrefixNew(req) if err != nil { return err } @@ -389,6 +395,13 @@ GC'ed. return fmt.Errorf("cp: cannot get node from path %s: %s", src, err) } + if mkParents { + err := ensureContainingDirectoryExists(nd.FilesRoot, dst, prefix) + if err != nil { + return err + } + } + err = mfs.PutNode(nd.FilesRoot, dst, node) if err != nil { return fmt.Errorf("cp: cannot put node in path %s: %s", dst, err)