aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-05-21 00:09:15 +0700
committerShulhan <ms@kilabit.info>2018-05-21 00:09:15 +0700
commit0947ee08631bd083f25a7b428fadcb087dc84f3a (patch)
tree6247af7331752550a8ff58b0f8df35c5a722dd31
parent23138d96a7ea679b28de99a7c520d5bf511dc84c (diff)
downloadbeku-0947ee08631bd083f25a7b428fadcb087dc84f3a.tar.xz
package.gitClone: return error if destination directory is not empty
-rw-r--r--beku.go1
-rw-r--r--package_git.go7
2 files changed, 8 insertions, 0 deletions
diff --git a/beku.go b/beku.go
index 9b838cf..3f079a0 100644
--- a/beku.go
+++ b/beku.go
@@ -54,6 +54,7 @@ var (
ErrPackageName = errors.New("Empty or invalid package name")
errDBPackageName = "missing package name, line %d at %s"
+ errDirNotEmpty = "directory %s is not empty"
)
var (
diff --git a/package_git.go b/package_git.go
index 8865ebf..ee46d39 100644
--- a/package_git.go
+++ b/package_git.go
@@ -32,6 +32,7 @@ func (pkg *Package) gitCheckoutVersion(version string) (err error) {
//
// gitClone the package into "$GOPATH/src/{ImportPath}".
+// If destination directory is not empty it will return an error.
//
func (pkg *Package) gitClone() (err error) {
err = os.MkdirAll(pkg.FullPath, 0700)
@@ -40,6 +41,12 @@ func (pkg *Package) gitClone() (err error) {
return
}
+ empty := IsDirEmpty(pkg.FullPath)
+ if !empty {
+ err = fmt.Errorf("gitClone: "+errDirNotEmpty, pkg.FullPath)
+ return
+ }
+
//nolint:gas
cmd := exec.Command("git", "clone", pkg.RemoteURL, ".")
fmt.Println(">>>", cmd.Args)