diff --git a/internal/resolution/pm/pip/job.go b/internal/resolution/pm/pip/job.go index 03895a77..e28854cd 100644 --- a/internal/resolution/pm/pip/job.go +++ b/internal/resolution/pm/pip/job.go @@ -91,47 +91,7 @@ func (j *Job) Run() { _, cmdErr = j.runInstallCmd() if cmdErr != nil { cmdErr.SetStatus(status) - var buildError = regexp.MustCompile("setup.py[ install for]*(?P[^ ]*) did not run successfully.") - var credentialError = regexp.MustCompile("WARNING: 401 Error, Credentials not correct for") - - switch { - case buildError.MatchString(cmdErr.Error()): - matches := buildError.FindAllStringSubmatch(cmdErr.Error(), 10) - dependencyName := "" - if len(matches) > 0 { - if len(matches[len(matches)-1]) > 1 { - dependencyName = "\"" + matches[len(matches)-1][1] + "\"" - } - } - cmdErr.SetDocumentation( - strings.Join( - []string{ - "Failed to build python dependency ", - dependencyName, - " with setup.py. This probably means the " + - "project was not set up correctly and " + - "could mean that an OS package is missing.", - }, ""), - ) - case credentialError.MatchString(cmdErr.Error()): - authErrDependencyNamePattern := regexp.MustCompile("No matching distribution found for ([^ ]*)\n") - dependencyNameMatch := authErrDependencyNamePattern.FindStringSubmatch(cmdErr.Error()) - dependencyName := "" - if len(dependencyNameMatch) > 1 { - dependencyName = "\"" + dependencyNameMatch[len(dependencyNameMatch)-1] + "\"" - } - cmdErr.SetDocumentation( - strings.Join( - []string{ - "Failed to install python dependency ", - dependencyName, - " due to authorization. This could mean it is", - " a private dependency that the debricked CLI", - " does not have access to.", - }, ""), - ) - } - j.Errors().Critical(cmdErr) + j.handleInstallError(cmdErr) return } @@ -146,6 +106,50 @@ func (j *Job) Run() { } +func (j *Job) handleInstallError(cmdErr job.IError) { + var buildError = regexp.MustCompile("setup.py[ install for]*(?P[^ ]*) did not run successfully.") + var credentialError = regexp.MustCompile("WARNING: 401 Error, Credentials not correct for") + + switch { + case buildError.MatchString(cmdErr.Error()): + matches := buildError.FindAllStringSubmatch(cmdErr.Error(), 10) + dependencyName := "" + if len(matches) > 0 { + if len(matches[len(matches)-1]) > 1 { + dependencyName = "\"" + matches[len(matches)-1][1] + "\"" + } + } + cmdErr.SetDocumentation( + strings.Join( + []string{ + "Failed to build python dependency ", + dependencyName, + " with setup.py. This probably means the " + + "project was not set up correctly and " + + "could mean that an OS package is missing.", + }, ""), + ) + case credentialError.MatchString(cmdErr.Error()): + authErrDependencyNamePattern := regexp.MustCompile("No matching distribution found for ([^ ]*)\n") + dependencyNameMatch := authErrDependencyNamePattern.FindStringSubmatch(cmdErr.Error()) + dependencyName := "" + if len(dependencyNameMatch) > 1 { + dependencyName = "\"" + dependencyNameMatch[len(dependencyNameMatch)-1] + "\"" + } + cmdErr.SetDocumentation( + strings.Join( + []string{ + "Failed to install python dependency ", + dependencyName, + " due to authorization. This could mean it is", + " a private dependency that the debricked CLI", + " does not have access to.", + }, ""), + ) + } + j.Errors().Critical(cmdErr) +} + func (j *Job) writeLockContent() job.IError { status := "generating lock file" j.SendStatus(status)