file

package
v0.0.0-...-e7133ac Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2016 License: MIT Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CpCommand = cli.Command{
	Name:      "cp",
	Usage:     "copy files and directories",
	Category:  "file",
	ArgsUsage: "SRC... DEST",
	Flags: []cli.Flag{
		cli.BoolFlag{
			Name:  "recursive, r, R",
			Usage: "copy directories recursively",
		},
	},
	Action: func(c *cli.Context) {

		if c.NArg() < 2 {
			util.AbortWithError(errors.New("at least two arguments expected"))
		}
		var (
			srcs  = c.Args()[0 : c.NArg()-1]
			dest  = c.Args()[c.NArg()-1]
			isDir = false
		)

		d, err := os.Getwd()
		if err != nil {
			util.AbortWithError(err)
		}

		i, err := os.Stat(dest)
		if err == nil && i.IsDir() {
			isDir = true
		}

		if len(srcs) == 1 {

			filename := path.Base(srcs[0])

			if isDir {
				d = dest
			} else {
				filename = dest
			}

			if err = util.Copy(srcs[0], path.Join(d, filename)); err != nil {
				util.AbortWithError(err)
			}

		} else {

			if !isDir {
				util.AbortWithError(fmt.Errorf("%s is not a directory", dest))
			}

			for _, s := range srcs {
				if err = util.Copy(s, path.Join(dest, path.Base(s))); err != nil {
					util.AbortWithError(err)
				}
			}
		}
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL