Skip to content

Commit f705d95

Browse files
authored
Merge pull request #353 from nitrictech/develop
Release fix
2 parents fafd30f + a94ae4a commit f705d95

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

pkg/provider/pulumi/generator.go

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package pulumi
1818

1919
import (
2020
"context"
21+
"encoding/json"
2122
"fmt"
2223
"os/exec"
2324
"strings"
@@ -56,6 +57,12 @@ type stackSummary struct {
5657
URL string `json:"url,omitempty"`
5758
}
5859

60+
type pulumiBackend struct{}
61+
62+
type pulumiAbout struct {
63+
Backend *pulumiBackend `json:"backend"`
64+
}
65+
5966
var _ types.Provider = &pulumiDeployment{}
6067

6168
func New(p *project.Project, name, provider string, envMap map[string]string, opts *types.ProviderOpts) (types.Provider, error) {
@@ -112,13 +119,35 @@ func (p *pulumiDeployment) load(log output.Progress) (*auto.Stack, error) {
112119
stackName := p.proj.Name + "-" + p.stackName
113120
ctx := context.Background()
114121

115-
s, err := auto.UpsertStackInlineSource(ctx, stackName, p.proj.Name, p.prov.Deploy,
122+
aboutData, err := exec.Command("pulumi", "about", "-j").Output()
123+
if err != nil {
124+
return nil, errors.WithMessage(err, "Failed to determine login state of pulumi")
125+
}
126+
127+
// Default to local backend if not already logged in
128+
about := &pulumiAbout{}
129+
130+
err = json.Unmarshal([]byte(strings.TrimSpace(string(aboutData))), about)
131+
if err != nil {
132+
return nil, errors.WithMessage(err, "Failed to determine login state of pulumi")
133+
}
134+
135+
upsertOpts := []auto.LocalWorkspaceOption{
116136
auto.SecretsProvider("passphrase"),
117137
auto.Project(workspace.Project{
118138
Name: tokens.PackageName(p.proj.Name),
119139
Runtime: workspace.NewProjectRuntimeInfo("go", nil),
120140
Main: p.proj.Dir,
141+
}),
142+
}
143+
144+
if about.Backend == nil {
145+
upsertOpts = append(upsertOpts, auto.EnvVars(map[string]string{
146+
"PULUMI_BACKEND_URL": "file://~",
121147
}))
148+
}
149+
150+
s, err := auto.UpsertStackInlineSource(ctx, stackName, p.proj.Name, p.prov.Deploy, upsertOpts...)
122151
if err != nil {
123152
return nil, errors.WithMessage(err, "UpsertStackInlineSource")
124153
}

0 commit comments

Comments
 (0)