Skip to content

Commit

Permalink
Parse start commands in wings
Browse files Browse the repository at this point in the history
This would replace the need to parse the start commands in the entrypoint so exec could be used instead of eval.

As seen in the gist below I have tested what it would do to the ark start command

https://gist.githubusercontent.com/parkervcp/db4d2d7b23b48f9aa0eacff79e77d972/raw/377601cd74e4d9c19e58ba0a56086bba438165fe/gistfile1.txt
  • Loading branch information
parkervcp committed Aug 7, 2023
1 parent 438e5fd commit b7555ed
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"fmt"
"net/http"
"os"
"strconv"
"strings"
"sync"

Expand Down Expand Up @@ -143,13 +144,30 @@ func (s *Server) Context() context.Context {
return s.ctx
}

func parseInvocation(invocation string, envvars map[string]interface{}, memory int64, port int, ip string) (parsed string) {
// replace "{{" and "}}" with "${" and "}" respectively
invocation = strings.Replace(invocation, "{{", "${", -1)
invocation = strings.Replace(invocation, "}}", "}", -1)

// replaces ${varname} with varval
for varname, varval := range envvars {
invocation = strings.Replace(invocation, fmt.Sprintf("${%s}", varname), fmt.Sprint(varval), -1)
}

invocation = strings.Replace(invocation, "${SERVER_PORT}", strconv.Itoa(port), -1)
invocation = strings.Replace(invocation, "${SERVER_MEMORY}", strconv.Itoa(int(memory)), -1)
invocation = strings.Replace(invocation, "${SERVER_IP}", ip, -1)

return invocation
}

// Returns all of the environment variables that should be assigned to a running
// server instance.
func (s *Server) GetEnvironmentVariables() []string {
out := []string{
// TODO: allow this to be overridden by the user.
fmt.Sprintf("TZ=%s", config.Get().System.Timezone),
fmt.Sprintf("STARTUP=%s", s.Config().Invocation),
fmt.Sprintf("STARTUP=%s", parseInvocation(s.Config().Invocation, s.Config().EnvVars, s.MemoryLimit(), s.Config().Allocations.DefaultMapping.Port, s.Config().Allocations.DefaultMapping.Ip)),
fmt.Sprintf("SERVER_MEMORY=%d", s.MemoryLimit()),
fmt.Sprintf("SERVER_IP=%s", s.Config().Allocations.DefaultMapping.Ip),
fmt.Sprintf("SERVER_PORT=%d", s.Config().Allocations.DefaultMapping.Port),
Expand Down

0 comments on commit b7555ed

Please sign in to comment.