Skip to content

Commit

Permalink
Split complex error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
filip-debricked committed Dec 5, 2023
1 parent db30e57 commit ca16f1b
Showing 1 changed file with 45 additions and 41 deletions.
86 changes: 45 additions & 41 deletions internal/resolution/pm/pip/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -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<dependency>[^ ]*) 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
}
Expand All @@ -146,6 +106,50 @@ func (j *Job) Run() {

}

func (j *Job) handleInstallError(cmdErr job.IError) {
var buildError = regexp.MustCompile("setup.py[ install for]*(?P<dependency>[^ ]*) 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)
Expand Down

0 comments on commit ca16f1b

Please sign in to comment.