-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathprocesses-helper.go
88 lines (78 loc) · 2.6 KB
/
processes-helper.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package processesHelper
import (
"fmt"
"os"
"os/exec"
configHelper "simplism/helpers/config"
stringHelper "simplism/helpers/stringHelper"
simplismTypes "simplism/types"
)
// getExecutablePath returns the path of the executable file for the given program name.
//
// It takes a string parameter `progName` which represents the name of the program.
// It returns a string which represents the path of the executable file.
func GetExecutablePath(progName string) string {
executablePath, err := exec.LookPath(progName)
if err != nil {
executablePath = "./simplism"
//fmt.Println("😡 Error finding executable:", err)
//os.Exit(1)
}
return executablePath
}
func SpawnSimplismProcess(wasmArguments simplismTypes.WasmArguments) {
wasmArguments = configHelper.ApplyDefaultValuesIfMissing(wasmArguments)
spawnArgs := []string{
"",
"listen",
wasmArguments.FilePath,
wasmArguments.FunctionName,
"--wasm-url", wasmArguments.URL,
"--wasm-url-auth-header", wasmArguments.WasmURLAuthHeader,
"--http-port", wasmArguments.HTTPPort,
"--log-level", wasmArguments.LogLevel,
"--allow-hosts", wasmArguments.AllowHosts,
"--allow-paths", wasmArguments.AllowPaths,
"--env", wasmArguments.EnvVars,
"--config", wasmArguments.Config,
"--wasi", stringHelper.GetTheStringValueOf(wasmArguments.Wasi),
"--input", wasmArguments.Input,
"--wasm-url-auth-header", wasmArguments.WasmURLAuthHeader,
"--cert-file", wasmArguments.CertFile,
"--key-file", wasmArguments.KeyFile,
"--admin-reload-token", wasmArguments.AdminReloadToken,
"--admin-discovery-token", wasmArguments.AdminDiscoveryToken,
"--admin-spawn-token", wasmArguments.AdminSpawnToken,
//"--spawn-mode", "true",
"--service-discovery", stringHelper.GetTheStringValueOf(wasmArguments.ServiceDiscovery),
"--discovery-endpoint", wasmArguments.DiscoveryEndpoint,
"--service-name", wasmArguments.ServiceName,
"--information", wasmArguments.Information,
}
cmd := &exec.Cmd{
Path: GetExecutablePath("simplism"),
Args: spawnArgs,
Stdout: os.Stdout,
Stderr: os.Stdout,
}
err := cmd.Start()
if err != nil {
fmt.Println("😡 Error when spawning a new simplism process:", wasmArguments.FilePath, err)
os.Exit(1) // exit with an error 🤔
// TODO: return something instead of exiting
}
fmt.Println("🚀", wasmArguments.ServiceName, "spawned [", cmd.Process.Pid, "]")
}
func KillSimplismProcess(pid int) error {
process, err := os.FindProcess(pid)
if err != nil {
fmt.Println("😡 Error finding process", err)
return err
}
err = process.Kill()
if err != nil {
fmt.Println("😡 Error killing process", err)
return err
}
return nil
}