Unified git repository management
Signed-off-by: Alvise88 <vitalvise@gmail.com>
This commit is contained in:
@@ -25,28 +25,24 @@ type Require struct {
|
||||
|
||||
func newRequire(repoName, versionConstraint string) (*Require, error) {
|
||||
switch {
|
||||
case strings.HasPrefix(repoName, "github.com"):
|
||||
return parseGithubRepoName(repoName, versionConstraint)
|
||||
case strings.HasPrefix(repoName, pkg.AlphaModule):
|
||||
return parseDaggerRepoName(repoName, versionConstraint)
|
||||
case strings.Contains(repoName, ".git"):
|
||||
return parseGitRepoName(repoName, versionConstraint)
|
||||
default:
|
||||
return nil, fmt.Errorf("repo name does not match suported providers")
|
||||
return parseGitRepoName(repoName, versionConstraint)
|
||||
}
|
||||
}
|
||||
|
||||
var githubRepoNameRegex = regexp.MustCompile(`(github.com/[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+)([a-zA-Z0-9/_.-]*)@?([0-9a-zA-Z.-]*)`)
|
||||
var gitRepoNameRegex = regexp.MustCompile(`([a-zA-Z0-9_.-]+(?::\d*)?/[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+)([a-zA-Z0-9/_.-]*)@?([0-9a-zA-Z.-]*)`)
|
||||
|
||||
func parseGithubRepoName(repoName, versionConstraint string) (*Require, error) {
|
||||
repoMatches := githubRepoNameRegex.FindStringSubmatch(repoName)
|
||||
func parseGitRepoName(repoName, versionConstraint string) (*Require, error) {
|
||||
repoMatches := gitRepoNameRegex.FindStringSubmatch(repoName)
|
||||
|
||||
if len(repoMatches) < 4 {
|
||||
return nil, fmt.Errorf("issue when parsing github repo")
|
||||
}
|
||||
|
||||
return &Require{
|
||||
repo: repoMatches[1],
|
||||
repo: strings.TrimSuffix(repoMatches[1], ".git"),
|
||||
path: repoMatches[2],
|
||||
version: repoMatches[3],
|
||||
versionConstraint: versionConstraint,
|
||||
@@ -76,27 +72,6 @@ func parseDaggerRepoName(repoName, versionConstraint string) (*Require, error) {
|
||||
}, nil
|
||||
}
|
||||
|
||||
// TODO: Get real URL regex
|
||||
var gitRepoNameRegex = regexp.MustCompile(`^([a-zA-Z0-9_.-]+\.[a-zA-Z0-9]+(?::\d*)?/[a-zA-Z0-9_.-/]+?\.git)([a-zA-Z0-9/_.-]*)?@?([0-9a-zA-Z.-]*)`)
|
||||
|
||||
func parseGitRepoName(repoName, versionConstraint string) (*Require, error) {
|
||||
repoMatches := gitRepoNameRegex.FindStringSubmatch(repoName)
|
||||
|
||||
if len(repoMatches) < 3 {
|
||||
return nil, fmt.Errorf("issue when parsing git repo")
|
||||
}
|
||||
|
||||
return &Require{
|
||||
repo: repoMatches[1],
|
||||
path: repoMatches[2],
|
||||
version: repoMatches[3],
|
||||
versionConstraint: versionConstraint,
|
||||
|
||||
cloneRepo: repoMatches[1],
|
||||
clonePath: repoMatches[2],
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (r *Require) String() string {
|
||||
return fmt.Sprintf("%s@%s", r.fullPath(), r.version)
|
||||
}
|
||||
|
Reference in New Issue
Block a user