CopyFile copies a single file from src to dst
(src, dst string)
| 270 | |
| 271 | // CopyFile copies a single file from src to dst |
| 272 | func CopyFile(src, dst string) error { |
| 273 | var err error |
| 274 | var srcFd *os.File |
| 275 | var dstFd *os.File |
| 276 | var srcInfo os.FileInfo |
| 277 | |
| 278 | if srcFd, err = os.Open(src); err != nil { |
| 279 | return err |
| 280 | } |
| 281 | defer func() { |
| 282 | _ = srcFd.Close() |
| 283 | }() |
| 284 | |
| 285 | if dstFd, err = os.Create(dst); err != nil { |
| 286 | return err |
| 287 | } |
| 288 | defer func() { |
| 289 | _ = dstFd.Close() |
| 290 | }() |
| 291 | |
| 292 | if _, err = io.Copy(dstFd, srcFd); err != nil { |
| 293 | return err |
| 294 | } |
| 295 | if srcInfo, err = os.Stat(src); err != nil { |
| 296 | return err |
| 297 | } |
| 298 | return os.Chmod(dst, srcInfo.Mode()) |
| 299 | } |
| 300 | |
| 301 | // CopyDir copies a whole directory recursively |
| 302 | func CopyDir(src string, dst string) error { |
no test coverage detected