aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2018-06-03 19:55:38 +0700
committerShulhan <ms@kilabit.info>2018-06-04 00:06:48 +0700
commit9e35bb0d8ba1dfad4637f9fad77dd929176c49a1 (patch)
tree2138e9c604e9bef056558cedc3bbb31a743af09f
parent0fae71f16b5e3194126802905ca0d740c06ee395 (diff)
downloadbeku-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.go6
-rw-r--r--env.go18
-rw-r--r--env_test.go12
-rw-r--r--package.go37
-rw-r--r--package_test.go42
-rw-r--r--vcsmode.go20
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
diff --git a/env.go b/env.go
index 58ca631..71b46c1 100644
--- a/env.go
+++ b/env.go
@@ -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,
}},
}}
diff --git a/package.go b/package.go
index f440b2d..2aff41d 100644
--- a/package.go
+++ b/package.go
@@ -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"
-)