diff --git a/cmd/dev.go b/cmd/dev.go index bbf4aca8..a197861a 100644 --- a/cmd/dev.go +++ b/cmd/dev.go @@ -64,7 +64,7 @@ Examples: project, err := theproject.Project.GetProject(ctx, log, theproject.APIURL, apiKey) if err != nil { - errsystem.New(errsystem.ErrInvalidConfiguration, err, errsystem.WithContextMessage(fmt.Sprintf("Failed to get project: %s", err))).ShowErrorAndExit() + errsystem.New(errsystem.ErrInvalidConfiguration, err, errsystem.WithUserMessage("Failed to validate project (%s) using the provided API key from the .env file in %s. This is most likely due to the API key being invalid or the project has been deleted.", theproject.Project.ProjectId, dir), errsystem.WithContextMessage(fmt.Sprintf("Failed to get project: %s", err))).ShowErrorAndExit() } orgId := project.OrgId diff --git a/internal/errsystem/errsystem.go b/internal/errsystem/errsystem.go index ca2c97e3..9693d860 100644 --- a/internal/errsystem/errsystem.go +++ b/internal/errsystem/errsystem.go @@ -67,9 +67,9 @@ func (e *errSystem) Error() string { } // WithUserMessage adds a user-friendly message to the error. -func WithUserMessage(message string) option { +func WithUserMessage(message string, args ...any) option { return func(e *errSystem) { - e.message = message + e.message = fmt.Sprintf(message, args...) } } diff --git a/internal/project/project.go b/internal/project/project.go index 6fd46d72..45c901e1 100644 --- a/internal/project/project.go +++ b/internal/project/project.go @@ -556,7 +556,7 @@ func ResolveProjectDir(logger logger.Logger, cmd *cobra.Command, required bool) cwd, err := os.Getwd() if err != nil { errsystem.New(errsystem.ErrEnvironmentVariablesNotSet, err, - errsystem.WithUserMessage(fmt.Sprintf("Failed to get current directory: %s", err))).ShowErrorAndExit() + errsystem.WithUserMessage("Failed to get current working directory: %s", err)).ShowErrorAndExit() } dir := cwd dirFlag, _ := cmd.Flags().GetString("dir") @@ -570,7 +570,7 @@ func ResolveProjectDir(logger logger.Logger, cmd *cobra.Command, required bool) abs, err := filepath.Abs(dir) if err != nil { errsystem.New(errsystem.ErrEnvironmentVariablesNotSet, err, - errsystem.WithUserMessage(fmt.Sprintf("Failed to get absolute path: %s", err))).ShowErrorAndExit() + errsystem.WithUserMessage("Failed to get absolute path to %s: %s", dir, err)).ShowErrorAndExit() } if !ProjectExists(abs) && required { dir = viper.GetString("preferences.project_dir")