diff options
| author | Shulhan <ms@kilabit.info> | 2018-06-03 17:06:30 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2018-06-03 23:51:33 +0700 |
| commit | b30109159d464ba022608d6f566cfc61bc1c8b26 (patch) | |
| tree | 56855c8483f97ccbca7ed8eaa4c138eacd93652e | |
| parent | ccbdc4ab14f8c1ffcf369e157502dcb38d4fc90b (diff) | |
| download | beku-b30109159d464ba022608d6f566cfc61bc1c8b26.tar.xz | |
NewPackage(): use golang tools/go/vcs to get remote URL
This will allow beku to handle custom import URL.
| -rw-r--r-- | beku.go | 1 | ||||
| -rw-r--r-- | beku_test.go | 6 | ||||
| -rw-r--r-- | env.go | 21 | ||||
| -rw-r--r-- | package.go | 30 | ||||
| -rw-r--r-- | package_test.go | 11 |
5 files changed, 54 insertions, 15 deletions
@@ -60,6 +60,7 @@ var ( errDBPackageName = "missing package name, line %d at %s" errDirNotEmpty = "directory %s is not empty" errExcluded = "Package '%s' is in excluded list\n" + errVCS = "Unknown VCS mode %s" ) var ( diff --git a/beku_test.go b/beku_test.go index 62e8183..5fb7f81 100644 --- a/beku_test.go +++ b/beku_test.go @@ -112,9 +112,9 @@ func TestMain(m *testing.M) { os.Exit(1) } - testGitPkgCur = NewPackage(testGitRepo, testGitRepo, VCSModeGit) - testGitPkgNew = NewPackage(testGitRepo, testGitRepo, VCSModeGit) - testGitPkgShare = NewPackage(testGitRepoShare, testGitRepoShare, VCSModeGit) + testGitPkgCur, _ = NewPackage(testGitRepo, testGitRepo, VCSModeGit) + testGitPkgNew, _ = NewPackage(testGitRepo, testGitRepo, VCSModeGit) + testGitPkgShare, _ = NewPackage(testGitRepoShare, testGitRepoShare, VCSModeGit) // Always set the git test repo to latest version. testEnv.NoConfirm = true @@ -223,7 +223,10 @@ func (env *Env) GetPackage(importPath string) (pkg *Package, err error) { return } - pkg = NewPackage(importPath, importPath, VCSModeGit) + pkg, err = NewPackage(importPath, importPath, VCSModeGit) + if err != nil { + return + } err = pkg.Scan() @@ -294,7 +297,11 @@ func (env *Env) GetUnused(srcPath string) (err error) { continue } - pkg = NewPackage(importPath, importPath, VCSModeGit) + pkg, err = NewPackage(importPath, importPath, VCSModeGit) + if err != nil { + return + } + env.pkgsUnused = append(env.pkgsUnused, pkg) } @@ -454,7 +461,10 @@ func (env *Env) newPackage(fullPath string, vcsMode VCSMode) (err error) { return } - pkg := NewPackage(pkgName, pkgName, vcsMode) + pkg, err := NewPackage(pkgName, pkgName, vcsMode) + if err != nil { + return + } if Debug >= DebugL2 { fmt.Println(">>> Scanning package:", pkg.ImportPath) @@ -1107,7 +1117,10 @@ func (env *Env) Sync(pkgName, importPath string) (err error) { return } - newPkg := NewPackage(pkgName, importPath, VCSModeGit) + newPkg, err := NewPackage(pkgName, importPath, VCSModeGit) + if err != nil { + return + } if len(version) > 0 { newPkg.Version = version @@ -15,6 +15,7 @@ import ( "strings" "github.com/shuLhan/share/lib/ini" + "golang.org/x/tools/go/vcs" ) // @@ -37,15 +38,32 @@ type Package struct { } // -// NewPackage create a package set the package version, tag status, and dependencies. +// NewPackage create a package set the package version, tag status, and +// dependencies. // func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( - pkg *Package, + pkg *Package, err error, ) { + repoRoot, err := vcs.RepoRootForImportPath(pkgName, Debug >= DebugL2) + if err != nil { + fmt.Fprintf(defStderr, "NewPackage: error: %s\n", err.Error()) + fmt.Fprintf(defStderr, "NewPackage: skip %s\n", pkgName) + return + } + + if Debug >= DebugL2 { + fmt.Printf("NewPackage: %+v\n", *repoRoot) + } + + if repoRoot.VCS.Cmd != valVCSModeGit { + err = fmt.Errorf(errVCS, repoRoot.VCS.Cmd) + return nil, err + } + pkg = &Package{ - ImportPath: importPath, - RemoteURL: "https://" + pkgName, - FullPath: filepath.Join(build.Default.GOPATH, dirSrc, importPath), + ImportPath: repoRoot.Root, + RemoteURL: repoRoot.Repo, + FullPath: filepath.Join(build.Default.GOPATH, dirSrc, repoRoot.Root), vcs: vcsMode, state: packageStateNew, } @@ -53,6 +71,8 @@ func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( switch vcsMode { case VCSModeGit: pkg.RemoteName = gitDefRemoteName + default: + err = fmt.Errorf(errVCS, vcsMode) } return diff --git a/package_test.go b/package_test.go index 46bd5de..1bbf36f 100644 --- a/package_test.go +++ b/package_test.go @@ -29,7 +29,7 @@ func testPackageRemove(t *testing.T) { t.Log(c.desc) if len(c.pkgName) > 0 { - c.pkg = NewPackage(c.pkgName, c.pkgName, VCSModeGit) + c.pkg, _ = NewPackage(c.pkgName, c.pkgName, VCSModeGit) } err := c.pkg.Remove() @@ -718,13 +718,14 @@ func testUpdateMissingDep(t *testing.T) { func testPackageGoClean(t *testing.T) { cases := []struct { desc string + pkgName string pkg *Package pkgBin string expErr string expBinErr string }{{ - desc: `With package not exist`, - pkg: NewPackage(testPkgNotExist, testPkgNotExist, VCSModeGit), + desc: `With package not exist`, + pkgName: testPkgNotExist, }, { desc: `With package exist`, pkg: testGitPkgCur, @@ -736,6 +737,10 @@ func testPackageGoClean(t *testing.T) { for _, c := range cases { t.Log(c.desc) + if len(c.pkgName) > 0 { + c.pkg, _ = NewPackage(c.pkgName, c.pkgName, VCSModeGit) + } + err = c.pkg.GoClean() if err != nil { test.Assert(t, "err", c.expErr, err, true) |
