123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- {{- define "terraria.configuration" -}}
- {{ include "terraria.validation" $ }}
- {{ $sizes := (dict "small" 1 "medium" 2 "large" 3) }}
- {{ $difficutlies := (dict "normal" 0 "expert" 1 "master" 2 "journey" 3) }}
- {{ $flags := (list "-port" "-world" "-maxplayers" "-password" "-secure" "-forceupdate" "-worldevil" "-difficulty" "-autocreate" "-seed") }}
- {{/* worldevil, dificulty and autocreate flags are only used
- when a world is generated. According to docs server will
- ingore them if a world exists, so we can safely pass
- them all the time and let server handle it.
- Also -autocreate must come before other flags.
- */}}
- - -autocreate
- - {{ get $sizes .Values.terrariaConfig.worldSize | quote }}
- - -worldevil
- - {{ .Values.terrariaConfig.worldEvil | quote }}
- - -difficulty
- - {{ get $difficutlies .Values.terrariaConfig.worldDifficulty | quote }}
- {{ with .Values.terrariaConfig.worldSeed }}
- - -seed
- - {{ . | quote }}
- {{ end }}
- - -port
- - {{ .Values.terrariaNetwork.serverPort | quote }}
- - -world
- - {{ printf "/root/.local/share/Terraria/Worlds/%s.wld" .Values.terrariaConfig.worldName | quote }}
- - -maxplayers
- - {{ .Values.terrariaConfig.maxPlayers | quote }}
- {{ with .Values.terrariaConfig.password }}
- - -password
- - {{ . | quote }}
- {{ end }}
- {{ if .Values.terrariaConfig.secure }}
- - -secure
- {{ end }}
- {{ if .Values.terrariaConfig.forceUpdate }}
- - -forceupdate
- {{ end }}
- {{ range $arg := .Values.terrariaConfig.additionalArgs }}
- {{ if (mustHas $arg.key $flags) }}
- {{ fail (printf "Terraria - Argument [%s] is already handled by the app, please use the corresponding field instead" $arg.key) }}
- {{ end }}
- - {{ $arg.key | quote }}
- {{ with $arg.value }}
- - {{ . | quote }}
- {{ end }}
- {{ end }}
- {{- end -}}
- {{- define "terraria.validation" -}}
- {{- if not (mustRegexMatch "^[a-zA-Z0-9-]+$" .Values.terrariaConfig.worldName) -}}
- {{- fail "Terraria - Expected World Name to only have [letters, numbers, dashes]" -}}
- {{- end -}}
- {{- if not .Values.terrariaConfig.maxPlayers -}}
- {{- fail "Terraria - Expected non-empty Max Players" -}}
- {{- end -}}
- {{- if gt (int .Values.terrariaConfig.maxPlayers) 255 -}}
- {{- fail "Terraria - Expected Max Players to be at most 255" -}}
- {{- end -}}
- {{- $evils := (list "crimson" "corrupt" "random") -}}
- {{- if not (mustHas .Values.terrariaConfig.worldEvil $evils) -}}
- {{- fail (printf "Terraria - Expected World Evil to be one of [%s], but got [%s]" (join ", " $evils) .Values.terrariaConfig.worldEvil) -}}
- {{- end -}}
- {{- $sizes := (list "small" "medium" "large") -}}
- {{- if not (mustHas .Values.terrariaConfig.worldSize $sizes) -}}
- {{- fail (printf "Terraria - Expected World Size to be one of [%s], but got [%s]" (join ", " $sizes) .Values.terrariaConfig.worldSize) -}}
- {{- end -}}
- {{- $difficutlies := (list "normal" "expert" "master" "journey") -}}
- {{- if not (mustHas .Values.terrariaConfig.worldDifficulty $difficutlies) -}}
- {{- fail (printf "Terraria - Expected World Difficulty to be one of [%s], but got [%s]" (join ", " $difficutlies) .Values.terrariaConfig.worldDifficulty) -}}
- {{- end -}}
- {{- end -}}
|