Split esc/ and esc/cmd into separate modules.
#205
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/cmdout of theescmodule s.t. the latter has no dependency onpulumi/pulumi.Unfortunately, the
escCLI itself does require apulumi/pulumidependency so that it can share credential management with thepulumiCLI.These changes should at least simplify the dependency graph for
pulumi/pulumisomewhat so thatpulumi/pulumi/sdkcan depend onescwithout circularity.Unfortunately, there is still circularity between
esc/cmdandpulumi/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/sdkcould then freely depend onpulumi/escandpulumi/pulumi/pkgcould 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.3esc/cmd/clito consumeesc/v1.2.3, then commit + tagesc/cmd/cli/v1.2.3esc/cmdto consumeesc/cmd/cli/v1.2.3, then commit + tagesc/cmd/v1.2.3That said, that process is probably worth the simplicity of reasoning about dependencies.
Thoughts?