mirror of https://github.com/pulumi/pulumi.git
a24ad1839b
This fixes how programgen generates import statements to handle conflicting imports when two imported packages have the same name, e.g. github.com/pulumi/pulumi-aws/sdk/v5/go/aws/ecs github.com/pulumi/pulumi-awsx/sdk/go/awsx/ecs To do this, we add a fileImporter type that tracks these imports. It prefers unnamed imports for packages unless one of the following is true: - the name of the package has already been used by another import - the name of the package does not match the last component of the import path (e.g., `example.com/foo-go` with `package foo`). If the name has already been used by another import, it attempts the following in-order: - Combine the last two path components of the import path into an identifier and use that if available. e.g., `awsxs3` from `sdk/go/awsx/s3`. - Append a number to the package name and increment it until an unused name is found. e.g. `ecs2`, `ecs3`, and so on. There's a change in how this information is tracked as well. Previously, this was a pull approach: various calls returned programImports objects which all got merged together. This change switches to a push approach: as code is generated and imports are requested, they're submitted to the fileImporter which keeps track of them until the next `Reset()` call. The above also has a nice side effect of dropping a parameter. Another change worth explicitly calling out: Previously, getModOrAlias partially duplicated some of the logic implemented in getPulumiImport, and used `mod`, `originalMod` in a non-obvious way. This generated incorrect imports like the following (note the two `/aws` at the end): github.com/pulumi/pulumi-aws/sdk/v5/go/aws/aws This change replicates more of the logic of getPulumiImport (now called addPulumiImport) into this function, and addresses the discrepancy in codegen caused by `mod`/`originalMod`. The result leaves most existing code unchanged, except in a couple existing cases where the resulting changes make sense given the logic for named imports outlined above. Resolves #11176 |
||
---|---|---|
.. | ||
regress-11176.go |