Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var Cmd = &cli.Command{ Name: "cp", Usage: "Copy files and directories", Flags: []cli.Flag{ &cli.BoolFlag{Name: "recursive", Aliases: []string{"r"}, Usage: "Copy directories recursively"}, &cli.BoolFlag{Name: "interactive", Aliases: []string{"i"}, Usage: "Prompt before overwrite"}, &cli.BoolFlag{Name: "verbose", Aliases: []string{"v"}, Usage: "Print source/destination paths"}, }, Action: func(ctx context.Context, cmd *cli.Command) error { recursive := cmd.Bool("recursive") interactive := cmd.Bool("interactive") verbose := cmd.Bool("verbose") files := cmd.Args().Slice() if len(files) < 2 { return fmt.Errorf("missing file operand") } source := files[:len(files)-1] dest := files[len(files)-1] destInfo, err := os.Stat(dest) if err != nil { if os.IsNotExist(err) { if len(source) > 1 { return fmt.Errorf("target '%s' is not a directory", dest) } } else { return err } } else if destInfo.IsDir() { } for _, s := range source { var d string if destInfo != nil && destInfo.IsDir() { d = filepath.Join(dest, filepath.Base(s)) } else { d = dest } if err := copyFile(s, d, recursive, interactive, verbose); err != nil { return err } } return nil }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.