MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / CopyItem

Function CopyItem

core/utils/files/files.go:52–84  ·  view source on GitHub ↗
(isDir, withName bool, src, dst string)

Source from the content-addressed store, hash-verified

50}
51
52func CopyItem(isDir, withName bool, src, dst string) error {
53 if path.Base(src) != path.Base(dst) && !withName {
54 dst = path.Join(dst, path.Base(src))
55 }
56 srcInfo, err := os.Stat(path.Dir(src))
57 if err != nil {
58 return err
59 }
60 if _, err := os.Stat(dst); err != nil {
61 if os.IsNotExist(err) {
62 _ = os.MkdirAll(dst, srcInfo.Mode())
63 }
64 }
65 matches, err := filepath.Glob(src)
66 if err != nil {
67 return err
68 }
69 if len(matches) == 0 {
70 return fmt.Errorf("no files matched %s", src)
71 }
72 cmdArgs := append([]string{"-rf"}, matches...)
73 cmdText := fmt.Sprintf("cp -rf %s %s", strings.Join(matches, " "), dst+"/")
74 if !isDir {
75 cmdArgs = append([]string{"-f"}, matches...)
76 cmdText = fmt.Sprintf("cp -f %s %s", strings.Join(matches, " "), dst+"/")
77 }
78 cmdArgs = append(cmdArgs, dst+"/")
79 stdout, err := cmd.NewCommandMgr(cmd.WithTimeout(60*time.Second)).RunWithStdout("cp", cmdArgs...)
80 if err != nil {
81 return fmt.Errorf("handle %s failed, stdout: %s, err: %v", cmdText, stdout, err)
82 }
83 return nil
84}
85
86func CopyFileWithRename(src, dst string) error {
87 srcInfo, err := os.Stat(path.Dir(src))

Callers

nothing calls this directly

Calls 4

MkdirAllMethod · 0.80
ModeMethod · 0.80
StatMethod · 0.45
RunWithStdoutMethod · 0.45

Tested by

no test coverage detected