diff options
| author | Shulhan <ms@kilabit.info> | 2018-06-03 19:55:38 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2018-06-04 00:06:48 +0700 |
| commit | 9e35bb0d8ba1dfad4637f9fad77dd929176c49a1 (patch) | |
| tree | 2138e9c604e9bef056558cedc3bbb31a743af09f | |
| parent | 0fae71f16b5e3194126802905ca0d740c06ee395 (diff) | |
| download | beku-9e35bb0d8ba1dfad4637f9fad77dd929176c49a1.tar.xz | |
NewPackage(): remove parameter vcs mode
The mode of VCS is already provided by "RepoRoot.VCS.Cmd". This changes
affect on vcs mode value, from number based to string based. Previously,
VCS mode git is labeled as "1", now it's labeled as VCS command "git".
| -rw-r--r-- | beku_test.go | 6 | ||||
| -rw-r--r-- | env.go | 18 | ||||
| -rw-r--r-- | env_test.go | 12 | ||||
| -rw-r--r-- | package.go | 37 | ||||
| -rw-r--r-- | package_test.go | 42 | ||||
| -rw-r--r-- | vcsmode.go | 20 |
6 files changed, 54 insertions, 81 deletions
diff --git a/beku_test.go b/beku_test.go index 5fb7f81..f258e43 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) + testGitPkgNew, _ = NewPackage(testGitRepo, testGitRepo) + testGitPkgShare, _ = NewPackage(testGitRepoShare, testGitRepoShare) // Always set the git test repo to latest version. testEnv.NoConfirm = true @@ -223,7 +223,7 @@ func (env *Env) GetPackage(importPath string) (pkg *Package, err error) { return } - pkg, err = NewPackage(importPath, importPath, VCSModeGit) + pkg, err = NewPackage(importPath, importPath) if err != nil { return } @@ -297,7 +297,7 @@ func (env *Env) GetUnused(srcPath string) (err error) { continue } - pkg, err = NewPackage(importPath, importPath, VCSModeGit) + pkg, err = NewPackage(importPath, importPath) if err != nil { return } @@ -434,7 +434,7 @@ func (env *Env) scanPackages(srcPath string) (err error) { continue } - err = env.newPackage(fullPath, VCSModeGit) + err = env.newPackage(fullPath) if err != nil { return } @@ -454,14 +454,14 @@ func (env *Env) scanPackages(srcPath string) (err error) { // newPackage will append the directory at path as a package only if // its contain version information. // -func (env *Env) newPackage(fullPath string, vcsMode VCSMode) (err error) { +func (env *Env) newPackage(fullPath string) (err error) { pkgName := strings.TrimPrefix(fullPath, env.dirSrc+"/") if env.IsExcluded(pkgName) { return } - pkg, err := NewPackage(pkgName, pkgName, vcsMode) + pkg, err := NewPackage(pkgName, pkgName) if err != nil { return } @@ -914,11 +914,7 @@ func (env *Env) savePackages() { for _, pkg := range env.pkgs { sec := ini.NewSection(sectionPackage, pkg.ImportPath) - switch pkg.vcs { - case VCSModeGit: - sec.Set(keyVCSMode, valVCSModeGit) - } - + sec.Set(keyVCSMode, pkg.vcsMode) sec.Set(keyRemoteName, pkg.RemoteName) sec.Set(keyRemoteURL, pkg.RemoteURL) sec.Set(keyVersion, pkg.Version) @@ -1139,7 +1135,7 @@ func (env *Env) Sync(pkgName, importPath string) (err error) { return } - newPkg, err := NewPackage(pkgName, importPath, VCSModeGit) + newPkg, err := NewPackage(pkgName, importPath) if err != nil { return } diff --git a/env_test.go b/env_test.go index 7c603cd..8e03a9b 100644 --- a/env_test.go +++ b/env_test.go @@ -100,8 +100,8 @@ func testEnvExclude(t *testing.T) { RequiredBy: []string{ "github.com/alecthomas/gometalinter", }, - state: packageStateDirty, - vcs: VCSModeGit, + state: packageStateDirty, + vcsMode: VCSModeGit, }, expMissing: []string{ "github.com/BurntSushi/toml", @@ -134,7 +134,7 @@ func testEnvExclude(t *testing.T) { RemoteURL: "git@github.com:shuLhan/share.git", Version: "b2c8fd7", state: packageStateLoad, - vcs: VCSModeGit, + vcsMode: VCSModeGit, }, expMissing: []string{ "github.com/BurntSushi/toml", @@ -225,7 +225,7 @@ func testEnvGetPackageFromDB(t *testing.T) { RemoteName: "origin", RemoteURL: "https://github.com/alecthomas/gometalinter", Version: "0725fc6", - vcs: VCSModeGit, + vcsMode: VCSModeGit, state: packageStateLoad, Deps: []string{ "github.com/stretchr/testify", @@ -244,7 +244,7 @@ func testEnvGetPackageFromDB(t *testing.T) { RemoteURL: "https://github.com/gotestyourself/gotestyourself", Version: "v2.0.0", isTag: true, - vcs: VCSModeGit, + vcsMode: VCSModeGit, state: packageStateLoad, Deps: []string{ "github.com/pkg/errors", @@ -489,7 +489,7 @@ func testEnvScan(t *testing.T) { RemoteURL: "https://github.com/shuLhan/beku_test", Version: "v0.2.0", isTag: true, - vcs: VCSModeGit, + vcsMode: VCSModeGit, state: packageStateNew, }}, }} @@ -18,6 +18,10 @@ import ( "golang.org/x/tools/go/vcs" ) +const ( + VCSModeGit = "git" +) + // // Package define Go package information: path to package, version, whether is // tag or not, and VCS mode. @@ -33,7 +37,7 @@ type Package struct { DepsMissing []string Deps []string RequiredBy []string - vcs VCSMode + vcsMode string state packageState isTag bool } @@ -42,7 +46,7 @@ type Package struct { // NewPackage create a package set the package version, tag status, and // dependencies. // -func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( +func NewPackage(pkgName, importPath string) ( pkg *Package, err error, ) { repoRoot, err := vcs.RepoRootForImportPath(pkgName, Debug >= DebugL2) @@ -56,7 +60,7 @@ func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( fmt.Printf("NewPackage: %+v\n", *repoRoot) } - if repoRoot.VCS.Cmd != valVCSModeGit { + if repoRoot.VCS.Cmd != VCSModeGit { err = fmt.Errorf(errVCS, repoRoot.VCS.Cmd) return nil, err } @@ -71,13 +75,6 @@ func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( state: packageStateNew, } - switch vcsMode { - case VCSModeGit: - pkg.RemoteName = gitDefRemoteName - default: - err = fmt.Errorf(errVCS, vcsMode) - } - return } @@ -85,7 +82,7 @@ func NewPackage(pkgName, importPath string, vcsMode VCSMode) ( // CheckoutVersion will set the package version to new version. // func (pkg *Package) CheckoutVersion(newVersion string) (err error) { - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitCheckoutVersion(newVersion) } @@ -98,7 +95,7 @@ func (pkg *Package) CheckoutVersion(newVersion string) (err error) { // CompareVersion will compare package version using current package as base. // func (pkg *Package) CompareVersion(newPkg *Package) (err error) { - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitCompareVersion(newPkg) } @@ -111,7 +108,7 @@ func (pkg *Package) CompareVersion(newPkg *Package) (err error) { // commit). // func (pkg *Package) Fetch() (err error) { - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitFetch() } @@ -154,7 +151,7 @@ func (pkg *Package) GoClean() (err error) { // exist or to the latest commit, and scan dependencies. // func (pkg *Package) Install() (err error) { - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitInstall() } @@ -242,7 +239,7 @@ func (pkg *Package) RemoveRequiredBy(importPath string) (ok bool) { // metadata in package repository. // func (pkg *Package) Scan() (err error) { - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitScan() } @@ -418,10 +415,10 @@ func (pkg *Package) load(sec *ini.Section) { switch v.KeyLower { case keyVCSMode: switch v.Value { - case valVCSModeGit: - pkg.vcs = VCSModeGit + case VCSModeGit: + pkg.vcsMode = VCSModeGit default: - pkg.vcs = VCSModeGit + pkg.vcsMode = VCSModeGit } case keyRemoteName: pkg.RemoteName = v.Value @@ -477,7 +474,7 @@ func (pkg *Package) String() string { fmt.Fprintf(&buf, ` [package "%s"] - VCS = %d + VCS = %s RemoteName = %s RemoteURL = %s ScanPath = %s @@ -508,7 +505,7 @@ func (pkg *Package) Update(newPkg *Package) (err error) { pkg.FullPath = newPkg.FullPath } - switch pkg.vcs { + switch pkg.vcsMode { case VCSModeGit: err = pkg.gitUpdate(newPkg) } diff --git a/package_test.go b/package_test.go index 5b245e4..17eaa84 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) } err := c.pkg.Remove() @@ -70,7 +70,7 @@ func testPackageInstall(t *testing.T) { RemoteName: gitDefRemoteName, RemoteURL: "https://" + testGitRepoShare, Version: "17828b8", - vcs: VCSModeGit, + vcsMode: VCSModeGit, state: packageStateNew, }, }, { @@ -353,20 +353,20 @@ func testPackageLoad(t *testing.T) { desc: "With invalid vcs mode", pkgName: "test_vcs", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, }, }, { desc: "Duplicate remote name", pkgName: "dup_remote_name", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", }, }, { desc: "Duplicate remote URL", pkgName: "dup_remote_url", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", }, @@ -374,7 +374,7 @@ func testPackageLoad(t *testing.T) { desc: "Duplicate version", pkgName: "dup_version", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", Version: "v1.1.0", @@ -384,7 +384,7 @@ func testPackageLoad(t *testing.T) { desc: "Version not tag", pkgName: "version_not_tag", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", Version: "12345678", @@ -394,7 +394,7 @@ func testPackageLoad(t *testing.T) { desc: "With deps", pkgName: "deps", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", Version: "12345678", @@ -409,7 +409,7 @@ func testPackageLoad(t *testing.T) { desc: "With missing deps", pkgName: "deps_missing", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", Version: "12345678", @@ -424,7 +424,7 @@ func testPackageLoad(t *testing.T) { desc: "With required-by", pkgName: "required-by", exp: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, RemoteName: "last", RemoteURL: "remote url 2", Version: "12345678", @@ -514,7 +514,7 @@ func testPackageString(t *testing.T) { pkg: testGitPkgCur, exp: ` [package "github.com/shuLhan/beku_test"] - VCS = 1 + VCS = git RemoteName = origin RemoteURL = https://` + testGitRepo + ` ScanPath = ` + filepath.Join(testEnv.dirSrc, testGitRepo) + ` @@ -542,21 +542,21 @@ func testUpdate(t *testing.T) { }{{ desc: "Update remote URL", curPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, RemoteURL: "https://" + testGitRepo, }, newPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, RemoteURL: "git@github.com:shuLhan/beku_test.git", }, expPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, @@ -565,14 +565,14 @@ func testUpdate(t *testing.T) { }, { desc: "Update version", curPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, RemoteURL: "https://" + testGitRepo, }, newPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, @@ -581,7 +581,7 @@ func testUpdate(t *testing.T) { isTag: true, }, expPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, @@ -593,14 +593,14 @@ func testUpdate(t *testing.T) { }, { desc: "Update version back", curPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, RemoteURL: "https://" + testGitRepo, }, newPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, @@ -609,7 +609,7 @@ func testUpdate(t *testing.T) { isTag: true, }, expPkg: &Package{ - vcs: VCSModeGit, + vcsMode: VCSModeGit, ImportPath: testGitRepo, FullPath: filepath.Join(testEnv.dirSrc, testGitRepo), RemoteName: gitDefRemoteName, @@ -740,7 +740,7 @@ func testPackageGoClean(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) } err = c.pkg.GoClean() diff --git a/vcsmode.go b/vcsmode.go deleted file mode 100644 index baa781c..0000000 --- a/vcsmode.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2018, Shulhan <ms@kilabit.info>. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package beku - -// -// VCSMode define the mode of package's version control system (VCS). -// Currently only supporting Git. -// -type VCSMode uint - -// List of VCS modes. -const ( - VCSModeGit VCSMode = 1 << iota -) - -const ( - valVCSModeGit = "git" -) |
