Skip to content

Commit

Permalink
Reduce code duplication
Browse files Browse the repository at this point in the history
  • Loading branch information
sweoggy committed Dec 19, 2023
1 parent 8ed36fe commit 6436abe
Showing 1 changed file with 49 additions and 67 deletions.
116 changes: 49 additions & 67 deletions internal/resolution/pm/composer/job.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,10 @@ func (j *Job) handleError(cmdErr job.IError) {

for _, expression := range expressions {
regex := regexp.MustCompile(expression)
matches := regex.FindAllStringSubmatch(cmdErr.Error(), -1)

if regex.MatchString(cmdErr.Error()) {
cmdErr = j.addDocumentation(expression, regex, cmdErr)
if len(matches) > 0 {
cmdErr = j.addDocumentation(expression, regex, matches, cmdErr)
j.Errors().Critical(cmdErr)

return
Expand All @@ -93,89 +94,74 @@ func (j *Job) handleError(cmdErr job.IError) {
j.Errors().Critical(cmdErr)
}

func (j *Job) addDocumentation(expr string, regex *regexp.Regexp, cmdErr job.IError) job.IError {
func (j *Job) addDocumentation(expr string, regex *regexp.Regexp, matches [][]string, cmdErr job.IError) job.IError {
documentation := cmdErr.Documentation()

switch expr {
case composerMissingExtension:
cmdErr = j.addComposerMissingRequirementsErrorDocumentation(regex, cmdErr)
documentation = j.addComposerMissingRequirementsErrorDocumentation(cmdErr)
case invalidRequirement:
cmdErr = j.addInvalidRequirementErrorDocumentation(regex, cmdErr)
documentation = j.addInvalidRequirementErrorDocumentation(matches)
case noNetworkRegex:
cmdErr = j.addNetworkUnreachableErrorDocumentation(cmdErr)
documentation = j.addNetworkUnreachableErrorDocumentation()
case invalidVersionErrRegex:
cmdErr = j.addInvalidVersionErrorDocumentation(regex, cmdErr)
documentation = j.addInvalidVersionErrorDocumentation(matches)
case dependenciesResolveErrRegex:
cmdErr = j.addDependenciesResolveErrorDocumentation(regex, cmdErr)
documentation = j.addDependenciesResolveErrorDocumentation(matches)
}

cmdErr.SetDocumentation(documentation)

return cmdErr
}

func (j *Job) addComposerMissingRequirementsErrorDocumentation(regex *regexp.Regexp, cmdErr job.IError) job.IError {
cmdErr.SetDocumentation(
strings.Join(
[]string{
"Failed to build Composer dependency tree.",
"Your runtime environment is missing one or more Composer requirements.",
"Check error message below for more details:\n\n",
cmdErr.Error(),
}, " "),
)

return cmdErr
func (j *Job) addComposerMissingRequirementsErrorDocumentation(cmdErr job.IError) string {
return strings.Join(
[]string{
"Failed to build Composer dependency tree.",
"Your runtime environment is missing one or more Composer requirements.",
"Check error message below for more details:\n\n",
cmdErr.Error(),
}, " ")
}

func (j *Job) addInvalidRequirementErrorDocumentation(regex *regexp.Regexp, cmdErr job.IError) job.IError {
matches := regex.FindAllStringSubmatch(cmdErr.Error(), 1)
func (j *Job) addInvalidRequirementErrorDocumentation(matches [][]string) string {
message := ""
if len(matches) > 0 && len(matches[0]) > 1 {
message = matches[0][1]
}

cmdErr.SetDocumentation(
strings.Join(
[]string{
"Couldn't resolve dependency",
message,
", please make sure it is spelt correctly:\n",
}, " "),
)

return cmdErr
return strings.Join(
[]string{
"Couldn't resolve dependency",
message,
", please make sure it is spelt correctly:\n",
}, " ")
}

func (j *Job) addNetworkUnreachableErrorDocumentation(cmdErr job.IError) job.IError {
cmdErr.SetDocumentation(
strings.Join(
[]string{
"We weren't able to retrieve one or more dependencies.",
"Please check your Internet connection and try again.",
}, " "),
)

return cmdErr
func (j *Job) addNetworkUnreachableErrorDocumentation() string {
return strings.Join(
[]string{
"We weren't able to retrieve one or more dependencies.",
"Please check your Internet connection and try again.",
}, " ")
}

func (j *Job) addInvalidVersionErrorDocumentation(regex *regexp.Regexp, cmdErr job.IError) job.IError {
matches := regex.FindAllStringSubmatch(cmdErr.Error(), 1)
func (j *Job) addInvalidVersionErrorDocumentation(matches [][]string) string {
message := ""
if len(matches) > 0 && len(matches[0]) > 1 {
message = matches[0][1]
}

cmdErr.SetDocumentation(
strings.Join(
[]string{
"Couldn't resolve version",
message,
", please make sure it exists:\n",
}, " "),
)

return cmdErr
return strings.Join(
[]string{
"Couldn't resolve version",
message,
", please make sure it exists:\n",
}, " ")
}

func (j *Job) addDependenciesResolveErrorDocumentation(regex *regexp.Regexp, cmdErr job.IError) job.IError {
matches := regex.FindAllStringSubmatch(cmdErr.Error(), 1)
func (j *Job) addDependenciesResolveErrorDocumentation(matches [][]string) string {
message := "An error occurred during dependencies resolve "
if len(matches) > 0 && len(matches[0]) > 1 {
message += strings.Join(
Expand All @@ -186,15 +172,11 @@ func (j *Job) addDependenciesResolveErrorDocumentation(regex *regexp.Regexp, cmd
}, "")
}

cmdErr.SetDocumentation(
strings.Join(
[]string{
message,
"\n\n",
util.InstallPrivateDependencyMessage,
"\n\n",
}, ""),
)

return cmdErr
return strings.Join(
[]string{
message,
"\n\n",
util.InstallPrivateDependencyMessage,
"\n\n",
}, "")
}

0 comments on commit 6436abe

Please sign in to comment.