pulumi/pkg/engine
Will Jones 738f5b4e4e
Centralise human-friendly error handling in the CLI (#17046)
Presently, all Pulumi CLI commands expose their "run" functions through
`cmdutils.RunFunc`. `RunFunc` wraps the function it is given with some
generic error handling, namely checking if an error is expected (i.e. a
"bail") or not before deciding on an appropriate exit code and logging
as appropriate.

Alongside this, some commands make use of the `PrintEngineResult` helper
function, which spots `DecryptError`s specifically and prints out some
helpful suggestions in the event that such an error occurs. On the
surface, `PrintEngineResult` looks like a good place to solve #16950, in
which we'd like to add a similar feature for snapshot integrity errors
-- that is, spotting when they occur and providing a custom error
message to the user (in this case indicating that they should file an
issue).

Unfortunately, `PrintEngineResult` isn't called for _all_ errors within
a command handler's run function. That said, there's no reason why it
couldn't be, since while it's not generally possible for `DecryptError`s
(the only case handled currently) to crop up in other calls in the
function, we'd like to print the nice message if they ever do. This
commit thus ensures that (a renamed) `PrintEngineResult` is called on
all errors within a command's run function by introducing `runCmdFunc`,
which wraps `cmdutil.RunFunc` specifically for the Pulumi CLI,
inspecting all errors that may appear and printing human-friendly
replacement texts as appropriate. This sets us up for the solution to
issue #16950, where we'll introduce a custom error type for snapshot
integrity errors and then spot this in the new top-level Pulumi CLI
error handler (well, that's the idea at least 🤞).

*Note*: we don't change `cmdutil.RunFunc` itself since currently it
lives in `sdk/go/common` which means that presumably it could be
consumed elsewhere and thus shouldn't contain Pulumi-CLI-specific
things.
2024-08-23 08:48:42 +00:00
..
lifecycletest create unknowns when the provider is not known during construct (#16868) 2024-08-19 07:47:31 +00:00
combinedManager.go Test SnapshotManager and Journal in engine tests (#15871) 2024-04-11 22:54:08 +00:00
deployment.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
deployment_test.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
destroy.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
detailedDiff.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
detailedDiff_test.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
doc.go Document Go packages (#6009) 2021-01-11 11:07:59 -07:00
engine.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
errors.go Centralise human-friendly error handling in the CLI (#17046) 2024-08-23 08:48:42 +00:00
events.go Move assets and archives to their own package (#15157) 2024-01-25 20:39:31 +00:00
events_test.go Do not panic when sending events to closed emitter (#10489) 2022-08-25 12:43:10 -04:00
eventsink.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00
import.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
journal.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00
plugin_host.go [conformance tests] Fix run root and use program info everywhere (#15191) 2024-01-25 23:28:58 +00:00
plugins.go Refactor: move plugin kind to apitype (#15946) 2024-04-25 17:30:30 +00:00
plugins_test.go Refactor: move plugin kind to apitype (#15946) 2024-04-25 17:30:30 +00:00
project.go Update error handling (#8406) 2021-11-12 18:37:17 -08:00
query.go [conformance tests] Fix run root and use program info everywhere (#15191) 2024-01-25 23:28:58 +00:00
refresh.go Clean up deployment options (#16357) 2024-06-11 13:37:57 +00:00
snapshot.go [breaking] Changing the version of go.mod in sdk / pkg to be v3 2021-04-14 19:32:18 +01:00
update.go Change `pulumi refresh` to report diff relative to desired state instead of relative to only output changes (#16146) 2024-06-12 16:17:05 +00:00
update_test.go turn on the golangci-lint exhaustive linter (#15028) 2024-01-17 16:50:41 +00:00