diff --git a/.gitignore b/.gitignore index 9bf485c..983fc0a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ protodep dist/ service/protodep.lock proto/ +dependency/protodep.lock \ No newline at end of file diff --git a/cmd/up.go b/cmd/up.go index 230b5d0..3129382 100644 --- a/cmd/up.go +++ b/cmd/up.go @@ -103,7 +103,6 @@ var upCmd = &cobra.Command{ func initDepCmd() { upCmd.PersistentFlags().BoolP(forceUpdateFlag, "f", false, "update locked file and .proto vendors") - upCmd.PersistentFlags().BoolP(httpsOnlyFlag, "o", false, "use https only for downloading dependencies") upCmd.PersistentFlags().StringP(httpsUsernameFlag, "u", "", "set username for https authentication") upCmd.PersistentFlags().StringP(httpsPasswordFlag, "s", "", "set password for https authentication") upCmd.PersistentFlags().StringP(sshIdentityFileFlag, "i", "id_rsa", "set name identity file for ssh-connection") diff --git a/service/sync.go b/service/sync.go index 89b833b..705052f 100644 --- a/service/sync.go +++ b/service/sync.go @@ -60,16 +60,33 @@ func (s *SyncImpl) Resolve(forceUpdate bool) error { var authProvider helper.AuthProvider for _, dep := range protodep.Dependencies { - repoURL, err := url.Parse("https://" + dep.Target) + depRepoURL, err := url.Parse(dep.Target) + if err != nil { + return err + } + bareDepHostname := depRepoURL.Hostname() + bareDepRepoPath := strings.TrimPrefix(depRepoURL.RawPath, "/") + bareDepRepo := bareDepHostname + "/" + bareDepRepoPath + + repoURL, err := url.Parse("https://" + bareDepRepo) if err != nil { return err } repoHostnameWithScheme := repoURL.Scheme + "://" + repoURL.Hostname() - sshGitRepo := helper.GitConfig(repoHostnameWithScheme) - if len(sshGitRepo) > 0 { - dep.Target = sshGitRepo+repoURL.Path - authProvider = s.authProviderSSH + rewritedGitRepo := helper.GitConfig(repoHostnameWithScheme) + if len(rewritedGitRepo) > 0 { + rewritedGitRepoURL, err := url.Parse(rewritedGitRepo) + if err != nil { + return err + } + + dep.Target = rewritedGitRepo + repoURL.Path + if rewritedGitRepoURL.Scheme == "ssh" { + authProvider = s.authProviderSSH + } else { + authProvider = s.authProviderHTTPS + } } else { authProvider = s.authProviderHTTPS } @@ -116,7 +133,7 @@ func (s *SyncImpl) Resolve(forceUpdate bool) error { } newdeps = append(newdeps, dependency.ProtoDepDependency{ - Target: repo.Dep.Target, + Target: bareDepRepo, Branch: repo.Dep.Branch, Revision: repo.Hash, Path: repo.Dep.Path,