fileutils: copy LICENSE files from repo root - fixes #23
diff --git a/README.md b/README.md
index 9db9ac4..5b5071d 100644
--- a/README.md
+++ b/README.md
@@ -49,7 +49,7 @@
`gvt fetch` downloads the dependency into the `vendor` folder.
-Files and folders starting with `.` or `_` are ignored. Only [files relevant to the Go compiler](https://golang.org/cmd/go/#hdr-File_types) are fetched.
+Files and folders starting with `.` or `_` are ignored. Only [files relevant to the Go compiler](https://golang.org/cmd/go/#hdr-File_types) are fetched. LICENSE files are always included, too.
Test files and `testdata` folders can be included with `-t`.
diff --git a/fetch.go b/fetch.go
index cf8bb2c..13d90fb 100644
--- a/fetch.go
+++ b/fetch.go
@@ -130,6 +130,10 @@
return err
}
+ if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+ return err
+ }
+
if err := vendor.WriteManifest(manifestFile(), m); err != nil {
return err
}
diff --git a/fileutils/fileutils.go b/fileutils/fileutils.go
index af05ae9..26f5ad9 100644
--- a/fileutils/fileutils.go
+++ b/fileutils/fileutils.go
@@ -4,6 +4,7 @@
import (
"fmt"
"io"
+ "io/ioutil"
"os"
"path/filepath"
"runtime"
@@ -21,6 +22,10 @@
".syso",
}
+var licenseFiles = []string{
+ "LICENSE", "LICENCE", "UNLICENSE", "COPYING", "COPYRIGHT",
+}
+
// Copypath copies the contents of src to dst, excluding any file that is not
// relevant to the Go compiler.
func Copypath(dst string, src string, tests bool) error {
@@ -153,6 +158,27 @@
return os.RemoveAll(path)
}
+// CopyLicense copies the license file from folder src to folder dst.
+func CopyLicense(dst, src string) error {
+ files, err := ioutil.ReadDir(src)
+ if err != nil {
+ return err
+ }
+ for _, f := range files {
+ if f.IsDir() {
+ continue
+ }
+ name := filepath.Base(f.Name())
+ for _, candidate := range licenseFiles {
+ if strings.ToLower(candidate) == strings.TrimSuffix(
+ strings.TrimSuffix(strings.ToLower(name), ".md"), ".txt") {
+ return Copyfile(filepath.Join(dst, name), f.Name())
+ }
+ }
+ }
+ return nil
+}
+
func mkdir(path string) error {
return os.MkdirAll(path, 0755)
}
diff --git a/restore.go b/restore.go
index d2a3309..27eb024 100644
--- a/restore.go
+++ b/restore.go
@@ -124,6 +124,10 @@
return err
}
+ if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+ return err
+ }
+
if err := wc.Destroy(); err != nil {
return err
}
diff --git a/update.go b/update.go
index 1fe48a5..17f0358 100644
--- a/update.go
+++ b/update.go
@@ -111,6 +111,10 @@
return err
}
+ if err := fileutils.CopyLicense(dst, wc.Dir()); err != nil {
+ return err
+ }
+
if err := m.AddDependency(dep); err != nil {
return err
}