Skip to content

Commit 83dddf1

Browse files
authored
fix sst add crash when providers is not an object literal (#6432)
1 parent f2b6ce1 commit 83dddf1

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

cmd/sst/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ var root = &cli.Command{
587587
}
588588
err = p.Add(entry.Name, entry.Version)
589589
if err != nil {
590-
return err
590+
return util.NewReadableError(err, err.Error())
591591
}
592592
spin.Suffix = " Downloading provider..."
593593
p, err = project.New(&project.ProjectConfig{

pkg/project/add.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,29 @@
11
package project
22

33
import (
4+
"bytes"
5+
"fmt"
46
"github.com/sst/sst/v3/pkg/process"
57
"os"
68
"path/filepath"
9+
"strings"
710
)
811

912
func (p *Project) Add(pkg string, version string) error {
13+
var stderr bytes.Buffer
1014
cmd := process.Command("node", filepath.Join(p.PathPlatformDir(), "src/ast/add.mjs"),
1115
p.PathConfig(),
1216
pkg,
1317
version,
1418
)
1519
cmd.Stdout = os.Stdout
16-
cmd.Stderr = os.Stderr
17-
return cmd.Run()
20+
cmd.Stderr = &stderr
21+
err := cmd.Run()
22+
if err != nil {
23+
if msg := strings.TrimSpace(stderr.String()); msg != "" {
24+
return fmt.Errorf("%s", msg)
25+
}
26+
return err
27+
}
28+
return nil
1829
}

platform/src/ast/add.mjs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,13 @@ if (!providersProperty) {
5252
returnStatement.expression.properties.push(providersProperty);
5353
}
5454

55+
if (!ts.isObjectLiteralExpression(providersProperty.initializer)) {
56+
console.error(
57+
'The "providers" property must be a plain object, not a dynamic expression like a ternary or variable.'
58+
);
59+
process.exit(1);
60+
}
61+
5562
if (
5663
providersProperty.initializer.properties.find(
5764
(property) => property.name.getText().replaceAll('"', "") === pkg,

0 commit comments

Comments
 (0)