summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Van Landuyt <bob@vanlanduyt.co>2019-03-13 11:34:56 +0100
committerBob Van Landuyt <bob@vanlanduyt.co>2019-03-13 11:52:04 +0100
commit2a51ab3902226b2d571987d07edb31425054215e (patch)
tree7520fd3e01ad1c314a7a183a0a0eb7119b6f1cd4
parent6109b64ed81f80e90bf094ad1f1ded8f5e5f8324 (diff)
downloadgitlab-shell-2a51ab3902226b2d571987d07edb31425054215e.tar.gz
Vendor otiai10/copy
-rw-r--r--go/vendor/github.com/otiai10/copy/LICENSE21
-rw-r--r--go/vendor/github.com/otiai10/copy/README.md14
-rw-r--r--go/vendor/github.com/otiai10/copy/copy.go106
-rw-r--r--go/vendor/github.com/otiai10/copy/go.mod6
-rw-r--r--go/vendor/github.com/otiai10/copy/go.sum4
-rw-r--r--go/vendor/vendor.json10
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"