diff options
| author | Shulhan <ms@kilabit.info> | 2018-05-19 20:04:28 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2018-05-19 20:04:28 +0700 |
| commit | ae7867ff2091a5360bc7eddaff0d1d8a97bdb11e (patch) | |
| tree | 437ba1b9d21165d9ef7ff1cde9be3e0bcddd6662 /package.go | |
| parent | 2d351be9315454915a156fd85112c2cf23413fa6 (diff) | |
| download | beku-ae7867ff2091a5360bc7eddaff0d1d8a97bdb11e.tar.xz | |
Add remove operation
Diffstat (limited to 'package.go')
| -rw-r--r-- | package.go | 69 |
1 files changed, 68 insertions, 1 deletions
@@ -82,6 +82,28 @@ func (pkg *Package) Fetch() (err error) { } // +// GoClean will remove the package binaries and archives. +// +func (pkg *Package) GoClean() (err error) { + //nolint:gas + cmd := exec.Command("go", "clean", "-i", "-cache", "-testcache", "./...") + if Debug >= DebugL1 { + fmt.Println(">>>", cmd.Args) + } + cmd.Dir = pkg.FullPath + cmd.Stdout = defStdout + cmd.Stderr = defStderr + + err = cmd.Run() + if err != nil { + err = fmt.Errorf("GoClean: %s", err) + return + } + + return +} + +// // Install a package. Clone package to GOPATH/src, set to the latest tag if // exist or to the latest commit, and scan dependencies. // @@ -124,6 +146,51 @@ func (pkg *Package) IsEqual(other *Package) bool { } // +// Remove package installed binaries, archives, and source from GOPATH. +// +func (pkg *Package) Remove() (err error) { + err = pkg.GoClean() + if err != nil { + err = fmt.Errorf("Remove: %s", err) + return + } + + if Debug >= DebugL1 { + fmt.Println(">>> Remove source:", pkg.FullPath) + } + + err = os.RemoveAll(pkg.FullPath) + if err != nil { + err = fmt.Errorf("Remove: %s", err) + return + } + + return +} + +// +// RemoveRequiredBy will remove package import path from current +// package list of required-by. +// If import-path found as required-by, it will return true, otherwise it will +// return false. +// +func (pkg *Package) RemoveRequiredBy(importPath string) (ok bool) { + var requiredBy []string + + for x := 0; x < len(pkg.RequiredBy); x++ { + if pkg.RequiredBy[x] == importPath { + ok = true + continue + } + requiredBy = append(requiredBy, pkg.RequiredBy[x]) + } + if ok { + pkg.RequiredBy = requiredBy + } + return +} + +// // Scan will set the package version, `isTag` status, and remote URL using // metadata in package repository. // @@ -172,7 +239,7 @@ func (pkg *Package) ScanDeps(env *Env) (err error) { func (pkg *Package) GetRecursiveImports() ( imports []string, err error, ) { - //nolint: gas + //nolint:gas cmd := exec.Command("go", "list", "-e", "-f", `{{ join .Deps "\n"}}`, "./...") fmt.Println(">>>", cmd.Args) |
