@@ -18,6 +18,7 @@ package pulumi
18
18
19
19
import (
20
20
"context"
21
+ "encoding/json"
21
22
"fmt"
22
23
"os/exec"
23
24
"strings"
@@ -56,6 +57,12 @@ type stackSummary struct {
56
57
URL string `json:"url,omitempty"`
57
58
}
58
59
60
+ type pulumiBackend struct {}
61
+
62
+ type pulumiAbout struct {
63
+ Backend * pulumiBackend `json:"backend"`
64
+ }
65
+
59
66
var _ types.Provider = & pulumiDeployment {}
60
67
61
68
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) {
112
119
stackName := p .proj .Name + "-" + p .stackName
113
120
ctx := context .Background ()
114
121
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 {
116
136
auto .SecretsProvider ("passphrase" ),
117
137
auto .Project (workspace.Project {
118
138
Name : tokens .PackageName (p .proj .Name ),
119
139
Runtime : workspace .NewProjectRuntimeInfo ("go" , nil ),
120
140
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://~" ,
121
147
}))
148
+ }
149
+
150
+ s , err := auto .UpsertStackInlineSource (ctx , stackName , p .proj .Name , p .prov .Deploy , upsertOpts ... )
122
151
if err != nil {
123
152
return nil , errors .WithMessage (err , "UpsertStackInlineSource" )
124
153
}
0 commit comments