diff options
author | Bob Van Landuyt <bob@vanlanduyt.co> | 2019-03-13 11:34:56 +0100 |
---|---|---|
committer | Bob Van Landuyt <bob@vanlanduyt.co> | 2019-03-13 11:52:04 +0100 |
commit | 2a51ab3902226b2d571987d07edb31425054215e (patch) | |
tree | 7520fd3e01ad1c314a7a183a0a0eb7119b6f1cd4 | |
parent | 6109b64ed81f80e90bf094ad1f1ded8f5e5f8324 (diff) | |
download | gitlab-shell-2a51ab3902226b2d571987d07edb31425054215e.tar.gz |
Vendor otiai10/copy
-rw-r--r-- | go/vendor/github.com/otiai10/copy/LICENSE | 21 | ||||
-rw-r--r-- | go/vendor/github.com/otiai10/copy/README.md | 14 | ||||
-rw-r--r-- | go/vendor/github.com/otiai10/copy/copy.go | 106 | ||||
-rw-r--r-- | go/vendor/github.com/otiai10/copy/go.mod | 6 | ||||
-rw-r--r-- | go/vendor/github.com/otiai10/copy/go.sum | 4 | ||||
-rw-r--r-- | go/vendor/vendor.json | 10 |
6 files changed, 161 insertions, 0 deletions
diff --git a/go/vendor/github.com/otiai10/copy/LICENSE b/go/vendor/github.com/otiai10/copy/LICENSE new file mode 100644 index 0000000..1f0cc5d --- /dev/null +++ b/go/vendor/github.com/otiai10/copy/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2018 otiai10 + +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. diff --git a/go/vendor/github.com/otiai10/copy/README.md b/go/vendor/github.com/otiai10/copy/README.md new file mode 100644 index 0000000..f5729fa --- /dev/null +++ b/go/vendor/github.com/otiai10/copy/README.md @@ -0,0 +1,14 @@ +# copy + +[![Build Status](https://travis-ci.org/otiai10/copy.svg?branch=master)](https://travis-ci.org/otiai10/copy) +[![codecov](https://codecov.io/gh/otiai10/copy/branch/master/graph/badge.svg)](https://codecov.io/gh/otiai10/copy) +[![GoDoc](https://godoc.org/github.com/otiai10/copy?status.svg)](https://godoc.org/github.com/otiai10/copy) +[![Go Report Card](https://goreportcard.com/badge/github.com/otiai10/copy)](https://goreportcard.com/report/github.com/otiai10/copy) + +`copy` copies directories recursively. + +Example: + +```go +err := Copy("your/directory", "your/directory.copy") +``` diff --git a/go/vendor/github.com/otiai10/copy/copy.go b/go/vendor/github.com/otiai10/copy/copy.go new file mode 100644 index 0000000..52afac4 --- /dev/null +++ b/go/vendor/github.com/otiai10/copy/copy.go @@ -0,0 +1,106 @@ +package copy + +import ( + "io" + "io/ioutil" + "os" + "path/filepath" +) + +const ( + // tmpPermissionForDirectory makes the destination directory writable, + // so that stuff can be copied recursively even if any original directory is NOT writable. + // See https://github.com/otiai10/copy/pull/9 for more information. + tmpPermissionForDirectory = os.FileMode(0755) +) + +// Copy copies src to dest, doesn't matter if src is a directory or a file +func Copy(src, dest string) error { + info, err := os.Lstat(src) + if err != nil { + return err + } + return copy(src, dest, info) +} + +// copy dispatches copy-funcs according to the mode. +// Because this "copy" could be called recursively, +// "info" MUST be given here, NOT nil. +func copy(src, dest string, info os.FileInfo) error { + if info.Mode()&os.ModeSymlink != 0 { + return lcopy(src, dest, info) + } + if info.IsDir() { + return dcopy(src, dest, info) + } + return fcopy(src, dest, info) +} + +// fcopy is for just a file, +// with considering existence of parent directory +// and file permission. +func fcopy(src, dest string, info os.FileInfo) error { + + if err := os.MkdirAll(filepath.Dir(dest), os.ModePerm); err != nil { + return err + } + + f, err := os.Create(dest) + if err != nil { + return err + } + defer f.Close() + + if err = os.Chmod(f.Name(), info.Mode()); err != nil { + return err + } + + s, err := os.Open(src) + if err != nil { + return err + } + defer s.Close() + + _, err = io.Copy(f, s) + return err +} + +// dcopy is for a directory, +// with scanning contents inside the directory +// and pass everything to "copy" recursively. +func dcopy(srcdir, destdir string, info os.FileInfo) error { + + originalMode := info.Mode() + + // Make dest dir with 0755 so that everything writable. + if err := os.MkdirAll(destdir, tmpPermissionForDirectory); err != nil { + return err + } + // Recover dir mode with original one. + defer os.Chmod(destdir, originalMode) + + contents, err := ioutil.ReadDir(srcdir) + if err != nil { + return err + } + + for _, content := range contents { + cs, cd := filepath.Join(srcdir, content.Name()), filepath.Join(destdir, content.Name()) + if err := copy(cs, cd, content); err != nil { + // If any error, exit immediately + return err + } + } + + return nil +} + +// lcopy is for a symlink, +// with just creating a new symlink by replicating src symlink. +func lcopy(src, dest string, info os.FileInfo) error { + src, err := os.Readlink(src) + if err != nil { + return err + } + return os.Symlink(src, dest) +} diff --git a/go/vendor/github.com/otiai10/copy/go.mod b/go/vendor/github.com/otiai10/copy/go.mod new file mode 100644 index 0000000..a436c21 --- /dev/null +++ b/go/vendor/github.com/otiai10/copy/go.mod @@ -0,0 +1,6 @@ +module github.com/otiai10/copy + +require ( + bou.ke/monkey v1.0.1 // indirect + github.com/otiai10/mint v1.2.3 +) diff --git a/go/vendor/github.com/otiai10/copy/go.sum b/go/vendor/github.com/otiai10/copy/go.sum new file mode 100644 index 0000000..37b5672 --- /dev/null +++ b/go/vendor/github.com/otiai10/copy/go.sum @@ -0,0 +1,4 @@ +bou.ke/monkey v1.0.1 h1:zEMLInw9xvNakzUUPjfS4Ds6jYPqCFx3m7bRmG5NH2U= +bou.ke/monkey v1.0.1/go.mod h1:FgHuK96Rv2Nlf+0u1OOVDpCMdsWyOFmeeketDHE7LIg= +github.com/otiai10/mint v1.2.3 h1:PsrRBmrxR68kyNu6YlqYHbNlItc5vOkuS6LBEsNttVA= +github.com/otiai10/mint v1.2.3/go.mod h1:YnfyPNhBvnY8bW4SGQHCs/aAFhkgySlMZbrF5U0bOVw= diff --git a/go/vendor/vendor.json b/go/vendor/vendor.json index cf837f7..6e9a1a4 100644 --- a/go/vendor/vendor.json +++ b/go/vendor/vendor.json @@ -102,6 +102,12 @@ "revisionTime": "2019-02-18T02:30:34Z" }, { + "checksumSHA1": "ejq9Z6KUxfUyeL+IszhcxcGiw1s=", + "path": "github.com/otiai10/copy", + "revision": "a15b9cb96cf2f7930107fe0a9a6faf1b91e69df4", + "revisionTime": "2019-02-27T01:32:50Z" + }, + { "checksumSHA1": "8U5pEHFpXd1/Klgp+C/a6TqWoh8=", "path": "github.com/philhofer/fwd", "revision": "bb6d471dc95d4fe11e432687f8b70ff496cf3136", @@ -632,6 +638,10 @@ "path": "gopkg.in/yaml.v2", "revision": "cd8b52f8269e0feb286dfeef29f8fe4d5b397e0b", "revisionTime": "2017-04-07T17:21:22Z" + }, + { + "path": "https://github.com/otiai10/copy", + "revision": "" } ], "rootPath": "gitlab.com/gitlab-org/gitlab-shell/go" |