Split esc/
and esc/cmd
into separate modules.
#205
+2,893
−2,823
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These changes peel
esc/cmd
out of theesc
module s.t. the latter has no dependency onpulumi/pulumi
.Unfortunately, the
esc
CLI itself does require apulumi/pulumi
dependency so that it can share credential management with thepulumi
CLI.These changes should at least simplify the dependency graph for
pulumi/pulumi
somewhat so thatpulumi/pulumi/sdk
can depend onesc
without circularity.Unfortunately, there is still circularity between
esc/cmd
andpulumi/pulumi/pkg
. We could resolve this by splitting off yet another module that contains the CLI implementation but not the default implementations of various bits that refer topulumi/pulumi/pkg
. That would probably give us the following modules:github.com/pulumi/esc
<-- no pulumi dependenciesgithub.com/pulumi/esc/cmd
<-- pkg/ and sdk/ dependenciesgithub.com/pulumi/esc/cmd/cli
<-- sdk/ dependencypulumi/pulumi/sdk
could then freely depend onpulumi/esc
andpulumi/pulumi/pkg
could depend ongithub.com/pulumi/esc/cmd/cli
, all without circularity.The cost, of course, is a more complicated release process for
esc
, wherein the commit/tag flow becomes:esc/v1.2.3
esc/cmd/cli
to consumeesc/v1.2.3
, then commit + tagesc/cmd/cli/v1.2.3
esc/cmd
to consumeesc/cmd/cli/v1.2.3
, then commit + tagesc/cmd/v1.2.3
That said, that process is probably worth the simplicity of reasoning about dependencies.
Thoughts?