diff --git a/cmd/sst/main.go b/cmd/sst/main.go index d793075607..206ac86f13 100644 --- a/cmd/sst/main.go +++ b/cmd/sst/main.go @@ -581,7 +581,7 @@ var root = &cli.Command{ return err } } - entry, err := project.FindProvider(pkg, "latest") + entry, err := project.FindProvider(pkg, pkg, "latest") if err != nil { return util.NewReadableError(err, "Could not find provider "+pkg) } diff --git a/pkg/project/install.go b/pkg/project/install.go index 07f1073692..771a0757b7 100644 --- a/pkg/project/install.go +++ b/pkg/project/install.go @@ -156,7 +156,7 @@ func (p *Project) writeTypes() error { file.WriteString(` interface Providers {` + "\n") file.WriteString(` providers?: {` + "\n") for _, entry := range p.lock { - file.WriteString(` "` + entry.Name + `"?: (_` + entry.Alias + `.ProviderArgs & { version?: string }) | boolean | string;` + "\n") + file.WriteString(` "` + entry.Name + `"?: (_` + entry.Alias + `.ProviderArgs & { package?: string, version?: string }) | boolean | string;` + "\n") } file.WriteString(` }` + "\n") file.WriteString(` }` + "\n") @@ -218,12 +218,16 @@ func (p *Project) generateProviderLock() error { } for name, config := range p.app.Providers { n := name + pkgName := config.(map[string]interface{})["package"] + if pkgName == nil || pkgName == "" { + pkgName = n + } version := config.(map[string]interface{})["version"] if version == nil || version == "" { version = "latest" } wg.Go(func() error { - result, err := FindProvider(n, version.(string)) + result, err := FindProvider(n, pkgName.(string), version.(string)) if err != nil { return err } @@ -257,9 +261,9 @@ func (p *Project) generateProviderLock() error { return nil } -func FindProvider(name string, version string) (*ProviderLockEntry, error) { +func FindProvider(name string, pkgName string, version string) (*ProviderLockEntry, error) { for _, prefix := range []string{"@sst-provider/", "@pulumi/", "@pulumiverse/", "pulumi-", "@", ""} { - pkg, err := npm.Get(prefix+name, version) + pkg, err := npm.Get(prefix+pkgName, version) if err != nil { continue } diff --git a/pkg/project/run.go b/pkg/project/run.go index 58f277c966..0021fcd974 100644 --- a/pkg/project/run.go +++ b/pkg/project/run.go @@ -290,6 +290,9 @@ func (p *Project) RunNext(ctx context.Context, input *StackInput) error { if input.Command == "deploy" || input.Command == "diff" { for provider, opts := range p.app.Providers { for key, value := range opts.(map[string]interface{}) { + if key == "package" || key == "version" { + continue + } switch v := value.(type) { case map[string]interface{}: bytes, err := json.Marshal(v)