Terasology icon indicating copy to clipboard operation
Terasology copied to clipboard

`--args` overrides default arguments instead of appending them

Open jdrueckert opened this issue 2 years ago • 5 comments

What you were trying to do

Start a headless server and override its default configuration.

./gradlew server --args="--override-default-config=override.cfg"

What actually happened

A headed Terasology game started.

How to reproduce

  1. Run ./gradlew server and notice that it starts a headless server
  2. Stop the headless server
  3. Run ./gradlew server --args="--override-default-config=override.cfg" and notice that it starts headed Terasology (main menu UI)
  4. Stop the game
  5. Run ./gradlew server --args="--override-default-config=override.cfg --headless" and notice that it starts a headless server

Workaround

Add --headless argument

./gradlew server --args="--override-default-config=override.cfg --headless"

jdrueckert avatar Nov 20 '21 13:11 jdrueckert

One potential pitfall to look out for while addressing this:

If you do have --args always append to the gradle task's default args instead of replacing them, you get duplicates.

For example, gradlew game --args=--homedir=server would end up as

Terasology --homedir=. --homedir=server

at which point Terasology's argument processor (picocli) will complain that homedir can't be both . and server.

keturn avatar Nov 21 '21 18:11 keturn

@jdrueckert Oh it is my change #4916 But server didn't work before :D

@keturn Yeah. I already fix it in #4916. --homedir=. was from kotlin build script. --homedir=server was from server task

DarkWeird avatar Nov 23 '21 06:11 DarkWeird

Maybe better provide gradle's parameter there?

DarkWeird avatar Nov 23 '21 06:11 DarkWeird

Which gradle parameter?

keturn avatar Nov 23 '21 19:11 keturn

Which gradle parameter?

create parameter Like -PadditionalArgs=..

DarkWeird avatar Nov 23 '21 19:11 DarkWeird