Issue #235 Fixing Windows Issues
diff --git a/action/create.go b/action/create.go
index d08857d..5a8d6c4 100644
--- a/action/create.go
+++ b/action/create.go
@@ -121,30 +121,22 @@
for _, pa := range sortable {
n := strings.TrimPrefix(pa, vpath)
- root := util.GetRootFromPackage(n)
+ root, subpkg := util.NormalizeName(n)
if !config.HasDependency(root) {
msg.Info("Found reference to %s\n", n)
d := &cfg.Dependency{
Name: root,
}
- subpkg := strings.TrimPrefix(n, root)
- if len(subpkg) > 0 && subpkg != "/" {
+ if len(subpkg) > 0 {
d.Subpackages = []string{subpkg}
}
config.Imports = append(config.Imports, d)
} else {
- subpkg := strings.TrimPrefix(n, root)
- if len(subpkg) > 0 && subpkg != "/" {
+ if len(subpkg) > 0 {
subpkg = strings.TrimPrefix(subpkg, "/")
d := config.Imports.Get(root)
- f := false
- for _, v := range d.Subpackages {
- if v == subpkg {
- f = true
- }
- }
- if !f {
+ if !d.HasSubpackage(subpkg) {
msg.Info("Adding sub-package %s to %s\n", subpkg, root)
d.Subpackages = append(d.Subpackages, subpkg)
}
diff --git a/action/get.go b/action/get.go
index ce20e84..38e6547 100644
--- a/action/get.go
+++ b/action/get.go
@@ -108,7 +108,7 @@
version = parts[1]
}
- root := util.GetRootFromPackage(name)
+ root, subpkg := util.NormalizeName(name)
if len(root) == 0 {
return fmt.Errorf("Package name is required for %q.", name)
}
@@ -116,18 +116,9 @@
if conf.HasDependency(root) {
// Check if the subpackage is present.
- subpkg := strings.TrimPrefix(name, root)
- subpkg = strings.TrimPrefix(subpkg, "/")
if subpkg != "" {
- found := false
dep := conf.Imports.Get(root)
- for _, s := range dep.Subpackages {
- if s == subpkg {
- found = true
- break
- }
- }
- if found {
+ if dep.HasSubpackage(subpkg) {
msg.Warn("Package %q is already in glide.yaml. Skipping", name)
} else {
dep.Subpackages = append(dep.Subpackages, subpkg)
@@ -158,9 +149,8 @@
dep.Repository = "http://" + root
}
- subpkg := strings.TrimPrefix(name, root)
- if len(subpkg) > 0 && subpkg != "/" {
- dep.Subpackages = []string{strings.TrimPrefix(subpkg, "/")}
+ if len(subpkg) > 0 {
+ dep.Subpackages = []string{subpkg}
}
if dep.Reference != "" {
diff --git a/cfg/config.go b/cfg/config.go
index 2aea716..de189eb 100644
--- a/cfg/config.go
+++ b/cfg/config.go
@@ -366,11 +366,10 @@
d.VcsType = filterVcsType(d.VcsType)
// Get the root name for the package
- o := d.Name
- d.Name = util.GetRootFromPackage(d.Name)
- subpkg := strings.TrimPrefix(o, d.Name)
- if len(subpkg) > 0 && subpkg != "/" {
- d.Subpackages = append(d.Subpackages, strings.TrimPrefix(subpkg, "/"))
+ tn, subpkg := util.NormalizeName(d.Name)
+ d.Name = tn
+ if subpkg != "" {
+ d.Subpackages = append(d.Subpackages, subpkg)
}
return nil
diff --git a/godep/godep.go b/godep/godep.go
index b39deca..6785a0d 100644
--- a/godep/godep.go
+++ b/godep/godep.go
@@ -8,7 +8,6 @@
"encoding/json"
"os"
"path/filepath"
- "strings"
"github.com/Masterminds/glide/cfg"
"github.com/Masterminds/glide/msg"
@@ -74,9 +73,7 @@
seen := map[string]bool{}
for _, d := range godeps.Deps {
- pkg := util.GetRootFromPackage(d.ImportPath)
- sub := strings.TrimPrefix(d.ImportPath, pkg)
- sub = strings.TrimPrefix(sub, "/")
+ pkg, sub := util.NormalizeName(d.ImportPath)
if _, ok := seen[pkg]; ok {
if len(sub) == 0 {
continue
@@ -90,7 +87,7 @@
} else {
seen[pkg] = true
dep := &cfg.Dependency{Name: pkg, Reference: d.Rev}
- if len(sub) > 0 {
+ if sub != "" {
dep.Subpackages = []string{sub}
}
buf = append(buf, dep)
diff --git a/repo/installer.go b/repo/installer.go
index c3db217..645d490 100644
--- a/repo/installer.go
+++ b/repo/installer.go
@@ -454,14 +454,16 @@
} else if v.Reference != "" && dep.Reference != "" && v.Reference != dep.Reference {
dest := filepath.Join(d.Destination, filepath.FromSlash(v.Name))
dep = determineDependency(v, dep, dest)
+ } else {
+ dep = v
}
+ } else if v != nil {
+ dep = v
} else if dep != nil {
// We've got an imported dependency to use and don't already have a
// record of it. Append it to the Imports.
d.Config.Imports = append(d.Config.Imports, dep)
- } else if v != nil {
- dep = v
} else {
// If we've gotten here we don't have any depenency objects.
r, sp := util.NormalizeName(pkg)
diff --git a/util/util.go b/util/util.go
index 502be52..409d400 100644
--- a/util/util.go
+++ b/util/util.go
@@ -287,7 +287,8 @@
}
}
- root := GetRootFromPackage(filepath.ToSlash(name))
+ name = filepath.ToSlash(name)
+ root := GetRootFromPackage(name)
extra := strings.TrimPrefix(name, root)
if len(extra) > 0 && extra != "/" {
extra = strings.TrimPrefix(extra, "/")