Skip to content

Commit fc78e10

Browse files
authored
Merge pull request #50 from HexmosTech/fix/lsp-returning-error
Fix LSP crashing due to log.fatal
2 parents a990e49 + 10bf43a commit fc78e10

8 files changed

Lines changed: 42 additions & 25 deletions

File tree

cmdexec/cmdexec.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
package cmdexec
88

99
import (
10-
"errors"
1110
"os"
1211
"strings"
1312
"time"
@@ -28,7 +27,7 @@ func ExecCommand(cmdSlice []string, stdinBody string, apiDir string) (httpie.ExR
2827
start := time.Now()
2928
resp, err := httpie.Lama2Entry(cmdSlice, strings.NewReader(stdinBody))
3029
if err != nil {
31-
return httpie.ExResponse{}, 0, errors.New("Error from API executor: " + err.Error())
30+
return httpie.ExResponse{}, 0, err
3231
}
3332
elapsed := time.Since(start)
3433
utils.ChangeWorkingDir(oldDir)

cmdexec/js.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
package cmdexec
44

55
import (
6+
"errors"
7+
68
"github.com/dop251/goja"
79
"github.com/dop251/goja_nodejs/console"
810
"github.com/dop251/goja_nodejs/require"
@@ -25,14 +27,15 @@ func GetJSVm() interface{} {
2527
// Note: the vm runtime remains modified; so if
2628
// you reuse the vm for other operations, the state
2729
// from previous invocations carry over
28-
func RunVMCode(jsCode string, vm interface{}) {
30+
func RunVMCode(jsCode string, vm interface{}) error {
2931
if vm == nil {
3032
vm = GetJSVm()
3133
}
3234
_, err := vm.(*goja.Runtime).RunString(jsCode)
3335
if ex, ok := err.(*goja.Exception); ok {
34-
log.Fatal().Str("Error executing JS processor block", ex.String()).Msg("")
36+
return errors.New("Executing JS processor block: " + ex.String())
3537
}
38+
return nil
3639
}
3740

3841
// GenerateChainCode takes in an HTTP response body

codegen/codegen.cli.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func initialize() {
2727

2828
var flag = 0
2929

30-
func GenerateTargetCode(targetLangLib string, parsedAPI *gabs.Container) (string) {
30+
func GenerateTargetCode(targetLangLib string, parsedAPI *gabs.Container) string {
3131
convertedSnippetFinal := generateConvertedSippet(targetLangLib, parsedAPI)
3232
clipboard.WriteAll(convertedSnippetFinal)
3333
log.Info().Msg("Code copied to clipboard")

controller/controller.cli.go

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,34 +73,41 @@ func Process(version string) {
7373
log.Debug().Str("Parsed API", parsedAPI.String()).Msg("")
7474
res, out, responseTime, statusCodes, contentSizes, err := HandleParsedFile(parsedAPI, o, dir)
7575
if err != nil {
76-
log.Fatal().Str("Type", "Controller").Msg(fmt.Sprint("Error: ", err))
76+
log.Error().Str("Type", "Controller").Msg(fmt.Sprint("Error: ", err))
7777
}
7878
if out.Output != "" {
7979
outputmanager.WriteJSONOutput(res, out.Output, responseTime, statusCodes, contentSizes)
8080
}
8181
}
8282

83-
func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize) {
83+
func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
8484
vm := cmdexec.GetJSVm()
8585
var resp httpie.ExResponse
8686
var responseTime []outputmanager.ResponseTime
8787
var statusCode []outputmanager.StatusCode
8888
var contentSize []outputmanager.ContentSize
8989
var timeInMs int64
90+
var e1 error
9091
for i, block := range parsedAPIblocks {
9192
log.Debug().Int("Block num", i).Msg("")
9293
log.Debug().Str("Block getting processed", block.String()).Msg("")
9394
blockType := block.S("type").Data().(string)
9495
switch blockType {
9596
case "processor":
96-
ExecuteProcessorBlock(block, vm)
97+
err := ExecuteProcessorBlock(block, vm)
98+
if err != nil {
99+
return httpie.ExResponse{}, o, responseTime, statusCode, contentSize, err
100+
}
97101
case "Lama2File":
98-
resp, timeInMs = processLama2FileBlock(block, vm, o, dir)
102+
resp, timeInMs, e1 = processLama2FileBlock(block, vm, o, dir)
103+
if e1 != nil {
104+
return httpie.ExResponse{}, o, responseTime, statusCode, contentSize, e1
105+
}
99106
log.Info().Str("ResponseTime", fmt.Sprintf("%dms", timeInMs)).Msg("")
100107
responseTime, statusCode, contentSize = CalculateMetrics(resp, timeInMs, responseTime, statusCode, contentSize)
101108
}
102109
}
103-
return resp, o, responseTime, statusCode, contentSize
110+
return resp, o, responseTime, statusCode, contentSize, nil
104111
}
105112

106113
func ExecuteRequestorBlockHelper(resp httpie.ExResponse, headersString string, e1 error, vm interface{}) httpie.ExResponse {
@@ -114,11 +121,15 @@ func ExecuteRequestorBlockHelper(resp httpie.ExResponse, headersString string, e
114121
return resp
115122
}
116123

117-
func ExecuteProcessorBlock(block *gabs.Container, vm interface{}) {
124+
func ExecuteProcessorBlock(block *gabs.Container, vm interface{}) error {
118125
b := block.S("value").Data().(*gabs.Container)
119126
log.Debug().Str("Processor block incoming block", block.String()).Msg("")
120127
script := b.Data().(string)
121-
cmdexec.RunVMCode(script, vm)
128+
err := cmdexec.RunVMCode(script, vm)
129+
if err != nil {
130+
return err
131+
}
132+
return nil
122133
}
123134

124135
func CalculateMetrics(resp httpie.ExResponse, timeInMs int64, responseTime []outputmanager.ResponseTime, statusCodes []outputmanager.StatusCode, contentSizes []outputmanager.ContentSize) ([]outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize) {

controller/controller.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@ import (
1919
func HandleParsedFileHelper(parsedAPI *gabs.Container, args ...interface{}) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
2020
parsedAPIblocks := GetParsedAPIBlocks(parsedAPI)
2121
o, dir := extractArgs(args)
22-
resp, opts, responseTimes, statusCode, contentSize := processBlocks(parsedAPIblocks, o, dir)
22+
resp, opts, responseTimes, statusCode, contentSize, e1 := processBlocks(parsedAPIblocks, o, dir)
23+
if e1 != nil {
24+
return httpie.ExResponse{}, o, responseTimes, statusCode, contentSize, e1
25+
}
2326
return resp, opts, responseTimes, statusCode, contentSize, nil
2427
}
2528

@@ -44,20 +47,23 @@ func extractArgs(args []interface{}) (*lama2cmd.Opts, string) {
4447
return o, dir
4548
}
4649

47-
func processLama2FileBlock(block *gabs.Container, vm interface{}, o *lama2cmd.Opts, dir string) (httpie.ExResponse, int64) {
50+
func processLama2FileBlock(block *gabs.Container, vm interface{}, o *lama2cmd.Opts, dir string) (httpie.ExResponse, int64, error) {
4851
preprocess.ProcessVarsInBlock(block, vm)
4952
cmd, stdinBody := cmdgen.ConstructCommand(block, o)
5053
var resp httpie.ExResponse
5154
var e1 error
5255
resp, responseTime, e1 := cmdexec.ExecCommand(cmd, stdinBody, dir)
56+
if e1 != nil {
57+
return httpie.ExResponse{}, 0, e1
58+
}
5359
headers := resp.Headers
5460
var headersString string
5561
for key, value := range headers {
5662
headersString += fmt.Sprintf("%s: %s\n", key, value)
5763
}
5864

5965
resp = ExecuteRequestorBlockHelper(resp, headersString, e1, vm)
60-
return resp, responseTime
66+
return resp, responseTime, nil
6167
}
6268

6369
// func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts) {

controller/controller.wasm.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func ExecuteRequestorBlockHelper(resp httpie.ExResponse, headersString string, e
7575
return resp
7676
}
7777

78-
func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize) {
78+
func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir string) (httpie.ExResponse, *lama2cmd.Opts, []outputmanager.ResponseTime, []outputmanager.StatusCode, []outputmanager.ContentSize, error) {
7979
worker = preprocess.InitWebWorker() // Initialize the web worker
8080
var resp httpie.ExResponse
8181
for i, block := range parsedAPIblocks {
@@ -86,10 +86,10 @@ func processBlocks(parsedAPIblocks []*gabs.Container, o *lama2cmd.Opts, dir stri
8686
case "processor":
8787
ExecuteProcessorBlock(block)
8888
case "Lama2File":
89-
resp, _ = processLama2FileBlock(block, worker, o, dir)
89+
resp, _, _ = processLama2FileBlock(block, worker, o, dir)
9090
}
9191
}
92-
return resp, o, nil, nil, nil
92+
return resp, o, nil, nil, nil, nil
9393
}
9494

9595
func ExecuteProcessorBlock(block *gabs.Container) {

l2lsp/methods/lsp_code_generation.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import (
1212
)
1313

1414
func CodeGeneration(req request.JSONRPCRequest) response.JSONRPCResponse {
15-
filePath:= req.Params.FilePath
16-
Language:= req.Params.Language
15+
filePath := req.Params.FilePath
16+
Language := req.Params.Language
1717
client := req.Params.Client
1818
generatedCode, err := ProcessCodeGeneration(filePath, Language, client)
1919
if err != nil {
@@ -40,8 +40,6 @@ func ProcessCodeGeneration(filePath, Language, client string) (string, error) {
4040
return "", e
4141
}
4242
generatedCode := codegen.GenerateTargetCode(languageMethod, parsedAPI)
43-
44-
return generatedCode, nil
45-
4643

47-
}
44+
return generatedCode, nil
45+
}

l2lsp/methods/lsp_execute.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,4 @@ func ProcessForLSP(filePath string) (*gabs.Container, error) {
5959
}
6060

6161
return jsonResponse, nil
62-
}
62+
}

0 commit comments

Comments
 (0)