refactor in preparation for git+ssh

This commit is contained in:
Jacob Straszynski 2018-05-23 11:20:42 -07:00
parent 8ff5580971
commit 562ffd6486

View file

@ -45,6 +45,7 @@ var (
initActionName,
installActionName,
}
gitSSHRegex = regexp.MustCompile("git@([^:])([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)")
githubSlugRegex = regexp.MustCompile("github.com/([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)")
githubSlugWithVersionRegex = regexp.MustCompile("github.com/([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)@(.*)")
githubSlugWithPathRegex = regexp.MustCompile("github.com/([-_a-zA-Z0-9]+)/([-_a-zA-Z0-9]+)/(.*)")
@ -100,29 +101,17 @@ func initCommand() int {
return 0
}
func installCommand(jsonnetHome string, urls ...*url.URL) int {
m, err := pkg.LoadJsonnetfile(pkg.JsonnetFile)
if err != nil {
kingpin.Fatalf("failed to load jsonnetfile: %v", err)
return 1
func parseGithubDependency(urlString string) *spec.Dependency {
if !githubSlugRegex.MatchString(urlString) {
return nil
}
if len(urls) > 0 {
for _, url := range urls {
// install package specified in command
// $ jsonnetpkg install ksonnet git@github.com:ksonnet/ksonnet-lib
// $ jsonnetpkg install grafonnet git@github.com:grafana/grafonnet-lib grafonnet
// $ jsonnetpkg install github.com/grafana/grafonnet-lib/grafonnet
//
// github.com/(slug)/(dir)
urlString := url.String()
if githubSlugRegex.MatchString(urlString) {
name := ""
user := ""
repo := ""
subdir := ""
version := "master"
if githubSlugWithPathRegex.MatchString(urlString) {
if githubSlugWithPathAndVersionRegex.MatchString(urlString) {
matches := githubSlugWithPathAndVersionRegex.FindStringSubmatch(urlString)
@ -153,7 +142,7 @@ func installCommand(jsonnetHome string, urls ...*url.URL) int {
}
}
newDep := spec.Dependency{
return &spec.Dependency{
Name: name,
Source: spec.Source{
GitSource: &spec.GitSource{
@ -163,12 +152,37 @@ func installCommand(jsonnetHome string, urls ...*url.URL) int {
},
Version: version,
}
}
func installCommand(jsonnetHome string, urls ...*url.URL) int {
m, err := pkg.LoadJsonnetfile(pkg.JsonnetFile)
if err != nil {
kingpin.Fatalf("failed to load jsonnetfile: %v", err)
return 1
}
if len(urls) > 0 {
for _, url := range urls {
// install package specified in command
// $ jsonnetpkg install ksonnet git@github.com:ksonnet/ksonnet-lib
// $ jsonnetpkg install grafonnet git@github.com:grafana/grafonnet-lib grafonnet
// $ jsonnetpkg install github.com/grafana/grafonnet-lib/grafonnet
//
// github.com/(slug)/(dir)
urlString := url.String()
newDep := parseGithubDependency(urlString)
if newDep == nil {
kingpin.Errorf("ignoring unrecognized url: %s", url)
continue
}
oldDeps := m.Dependencies
newDeps := []spec.Dependency{}
oldDepReplaced := false
for _, d := range oldDeps {
if d.Name == newDep.Name {
newDeps = append(newDeps, newDep)
newDeps = append(newDeps, *newDep)
oldDepReplaced = true
} else {
newDeps = append(newDeps, d)
@ -176,13 +190,10 @@ func installCommand(jsonnetHome string, urls ...*url.URL) int {
}
if !oldDepReplaced {
newDeps = append(newDeps, newDep)
newDeps = append(newDeps, *newDep)
}
m.Dependencies = newDeps
} else {
kingpin.Errorf("ignoring unrecognized url: %s", url)
}
}
}