Преглед изворни кода

Handle `exit` in main REPL instead of ExitBuiltin.Run()

Alois Mahdal пре 3 дана
родитељ
комит
a9c12566b8
3 измењених фајлова са 7 додато и 2 уклоњено
  1. 4
    2
      app/builtin/builtin.go
  2. 1
    0
      app/core/core.go
  3. 2
    0
      app/main.go

+ 4
- 2
app/builtin/builtin.go Прегледај датотеку

151
 }
151
 }
152
 
152
 
153
 func (self *ExitBuiltin) Run(ctx *core.Context) core.ActionResult {
153
 func (self *ExitBuiltin) Run(ctx *core.Context) core.ActionResult {
154
-	os.Exit(0)
155
-	return wrapEs(0)
154
+	return core.ActionResult{
155
+		Code:       core.ActionResultCodeExit,
156
+		ExitStatus: 0,
157
+	}
156
 }
158
 }
157
 
159
 
158
 //
160
 //

+ 1
- 0
app/core/core.go Прегледај датотеку

29
 	ActionResultCodeNoop ActionResultCode = iota
29
 	ActionResultCodeNoop ActionResultCode = iota
30
 	ActionResultCodeBuiltinCommand
30
 	ActionResultCodeBuiltinCommand
31
 	ActionResultCodeExternalCommand
31
 	ActionResultCodeExternalCommand
32
+	ActionResultCodeExit
32
 )
33
 )

+ 2
- 0
app/main.go Прегледај датотеку

35
 
35
 
36
 		result := runnable.Run(ctx)
36
 		result := runnable.Run(ctx)
37
 		switch result.Code {
37
 		switch result.Code {
38
+		case core.ActionResultCodeExit:
39
+			os.Exit(int(result.ExitStatus))
38
 		case core.ActionResultCodeNoop:
40
 		case core.ActionResultCodeNoop:
39
 		case core.ActionResultCodeBuiltinCommand:
41
 		case core.ActionResultCodeBuiltinCommand:
40
 		case core.ActionResultCodeExternalCommand:
42
 		case core.ActionResultCodeExternalCommand: