arkmanager / ark-server-tools

Set of server tools used to manage ARK: Survival Evolved servers on Linux
MIT License
680 stars 144 forks source link

Feature request: Check config and exit #1129

Closed Alphakilo closed 4 years ago

Alphakilo commented 4 years ago

I've been tinkering to feed my ARK Servers configuration via CI/CD pipelines. It'd be great to have the configuration validated before being deployed to the server.

klightspeed commented 4 years ago

arkmanager printconfig @instance should print what file each option is found in.

As far as I know, the ARK server does not itself have an option to test its configuration and options.

Alphakilo commented 4 years ago

This works to some extend: https://github.com/Alphakilo/ARK-Server-Tools-CI It prints the entire config, at least the parameters, but returns exit code 0 even if things went south 😄

Steps to reproduce

Provide nonsensical arkmanager.cfg:

cat << EOF > /etc/arkmanager/arkmanager.cfg
bad_param
what even is this
unterminated_value="
;this shoudnt

be=here
EOF

Run arkmanager printconfig @all; echo $?

Expected outcome

Some pointers as to what is wrong with the CFG printed to stderr, exit-code >0

Current outcome

root@4abd03c7a081:~# arkmanager printconfig @all; echo $?
/etc/arkmanager/arkmanager.cfg: line 1: bad_param: command not found
/etc/arkmanager/arkmanager.cfg: line 2: what: command not found
/etc/arkmanager/arkmanager.cfg: line 3: unexpected EOF while looking for matching `"'
/etc/arkmanager/arkmanager.cfg: line 7: syntax error: unexpected end of file
/etc/arkmanager/arkmanager.cfg: line 1: bad_param: command not found
/etc/arkmanager/arkmanager.cfg: line 2: what: command not found
/etc/arkmanager/arkmanager.cfg: line 3: unexpected EOF while looking for matching `"'
/etc/arkmanager/arkmanager.cfg: line 7: syntax error: unexpected end of file
[  ERROR  ]     Your SteamCMD root seems not valid.
[  ERROR  ]     Your SteamCMD exec could not be found.
[  ERROR  ]     You do not permission to write to the log directory.
Running command 'printconfig' for instance 'main'
[  ERROR  ]     Your SteamCMD root seems not valid.
[  ERROR  ]     Your SteamCMD exec could not be found.
[  WARN  ]      Your ARK server exec could not be found.
[  ERROR  ]     You do not permission to write to the log directory.
/etc/arkmanager/instances/main.cfg => arkserverroot
/etc/arkmanager/instances/main.cfg => serverMap
/etc/arkmanager/instances/main.cfg => ark_RCONEnabled
/etc/arkmanager/instances/main.cfg => ark_RCONPort
/etc/arkmanager/instances/main.cfg => ark_SessionName
/etc/arkmanager/instances/main.cfg => ark_Port
/etc/arkmanager/instances/main.cfg => ark_QueryPort
/etc/arkmanager/instances/main.cfg => ark_ServerPassword
/etc/arkmanager/instances/main.cfg => ark_ServerAdminPassword
/etc/arkmanager/instances/main.cfg => ark_MaxPlayers
/etc/arkmanager/arkmanager.cfg: line 1: bad_param: command not found
/etc/arkmanager/arkmanager.cfg: line 2: what: command not found
/etc/arkmanager/arkmanager.cfg: line 3: unexpected EOF while looking for matching `"'
/etc/arkmanager/arkmanager.cfg: line 7: syntax error: unexpected end of file
/etc/arkmanager/arkmanager.cfg => unterminated_value
/etc/arkmanager/arkmanager.cfg: line 1: bad_param: command not found
/etc/arkmanager/arkmanager.cfg: line 2: what: command not found
/etc/arkmanager/arkmanager.cfg: line 3: unexpected EOF while looking for matching `"'
/etc/arkmanager/arkmanager.cfg: line 7: syntax error: unexpected end of file
/etc/arkmanager/arkmanager.cfg => be
0
klightspeed commented 4 years ago
$ (source <(echo x=2; echo bad config; echo y=4)); echo $?
bash: bad: command not found
0
$ (set -e; source <(echo x=2; echo bad config; echo y=4)); echo $?
bash: bad: command not found
127

dfeaf604a7c7a577e0c27fd63840ccbf87c02c32 adds a testconfig command, which tries to source the config while errexit is set. ce9ef308f9cf11d812777bc4c8e4f5edade2b01f outputs the config warnings on stderr instead of stdout.

Alphakilo commented 4 years ago

Just confirmed by installing via --unstable, works perfectly! Thanks a bunch!