Godeps: add github.com/cspeare/cp
This commit is contained in:
parent
46e8940b19
commit
6cb08d8328
|
@ -9,6 +9,10 @@
|
||||||
"ImportPath": "github.com/Gustav-Simonsson/go-opencl/cl",
|
"ImportPath": "github.com/Gustav-Simonsson/go-opencl/cl",
|
||||||
"Rev": "593e01cfc4f3353585015321e01951d4a907d3ef"
|
"Rev": "593e01cfc4f3353585015321e01951d4a907d3ef"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"ImportPath": "github.com/cespare/cp",
|
||||||
|
"Rev": "165db2f241fd235aec29ba6d9b1ccd5f1c14637c"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"ImportPath": "github.com/codegangsta/cli",
|
"ImportPath": "github.com/codegangsta/cli",
|
||||||
"Comment": "1.2.0-215-g0ab42fd",
|
"Comment": "1.2.0-215-g0ab42fd",
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
Copyright (c) 2015 Caleb Spare
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
|
@ -0,0 +1,9 @@
|
||||||
|
# cp
|
||||||
|
|
||||||
|
[![GoDoc](https://godoc.org/github.com/cespare/cp?status.svg)](https://godoc.org/github.com/cespare/cp)
|
||||||
|
|
||||||
|
cp is a small Go package for copying files and directories.
|
||||||
|
|
||||||
|
The API may change because I want to add some options in the future (for merging with existing dirs).
|
||||||
|
|
||||||
|
It does not currently handle Windows specifically (I think it may require some special treatment).
|
|
@ -0,0 +1,58 @@
|
||||||
|
// Package cp offers simple file and directory copying for Go.
|
||||||
|
package cp
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
var errCopyFileWithDir = errors.New("dir argument to CopyFile")
|
||||||
|
|
||||||
|
// CopyFile copies the file with path src to dst. The new file must not exist.
|
||||||
|
// It is created with the same permissions as src.
|
||||||
|
func CopyFile(dst, src string) error {
|
||||||
|
rf, err := os.Open(src)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer rf.Close()
|
||||||
|
rstat, err := rf.Stat()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if rstat.IsDir() {
|
||||||
|
return errCopyFileWithDir
|
||||||
|
}
|
||||||
|
|
||||||
|
wf, err := os.OpenFile(dst, os.O_WRONLY|os.O_CREATE|os.O_EXCL, rstat.Mode())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, err := io.Copy(wf, rf); err != nil {
|
||||||
|
wf.Close()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return wf.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// CopyAll copies the file or (recursively) the directory at src to dst.
|
||||||
|
// Permissions are preserved. dst must not already exist.
|
||||||
|
func CopyAll(dst, src string) error {
|
||||||
|
return filepath.Walk(src, makeWalkFn(dst, src))
|
||||||
|
}
|
||||||
|
|
||||||
|
func makeWalkFn(dst, src string) filepath.WalkFunc {
|
||||||
|
return func(path string, info os.FileInfo, err error) error {
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
dstPath := filepath.Join(dst, strings.TrimPrefix(path, src))
|
||||||
|
if info.IsDir() {
|
||||||
|
return os.Mkdir(dstPath, info.Mode())
|
||||||
|
}
|
||||||
|
return CopyFile(dstPath, path)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue