From 46f24b0b7ab6bff8529ceb8292e1abba063811dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Sat, 30 Mar 2019 19:31:03 +0100 Subject: [PATCH] Quote all vars, remove useless echo/sub-shell, add shebands, fail on unset vars, enable pipefail, formatting --- 0.14/build.sh | 1 + 0.14/clean.sh | 1 + 0.14/docker-entrypoint.sh | 24 +++++------ 0.14/run.sh | 1 + 0.15/docker-entrypoint.sh | 42 ++++++++++---------- 0.16/files/docker-entrypoint.sh | 54 ++++++++++++------------- 0.16/files/scenario.sh | 46 +++++++++++----------- 0.16/files/scenario2map.sh | 29 +++++++------- 0.17/files/docker-entrypoint.sh | 70 ++++++++++++++++----------------- 0.17/files/scenario.sh | 48 +++++++++++----------- 0.17/files/scenario2map.sh | 31 +++++++-------- 11 files changed, 172 insertions(+), 175 deletions(-) diff --git a/0.14/build.sh b/0.14/build.sh index 50b2cf9..8831cfe 100755 --- a/0.14/build.sh +++ b/0.14/build.sh @@ -1 +1,2 @@ +#!/bin/sh sudo docker build --no-cache -t factorio . diff --git a/0.14/clean.sh b/0.14/clean.sh index 08dc515..afee4ef 100755 --- a/0.14/clean.sh +++ b/0.14/clean.sh @@ -1 +1,2 @@ +#!/bin/sh sudo rm -rf /tmp/factorio diff --git a/0.14/docker-entrypoint.sh b/0.14/docker-entrypoint.sh index 4eb8cc0..5f8f3d5 100755 --- a/0.14/docker-entrypoint.sh +++ b/0.14/docker-entrypoint.sh @@ -1,30 +1,30 @@ #!/bin/sh -x -set -e +set -euo pipefail SAVES=/factorio/saves CONFIG=/factorio/config -mkdir -p $SAVES +mkdir -p "$SAVES" mkdir -p /factorio/mods -mkdir -p $CONFIG +mkdir -p "$CONFIG" if [ ! -f $CONFIG/rconpw ]; then - echo $(pwgen 15 1) > $CONFIG/rconpw + pwgen 15 1 >"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then +if ! find -L "$SAVES" -iname \*.zip -mindepth 1 -print | grep -q .; then /opt/factorio/bin/x64/factorio \ - --create $SAVES/_autosave1.zip \ - --map-gen-settings $CONFIG/map-gen-settings.json + --create "$SAVES/_autosave1.zip" \ + --map-gen-settings "$CONFIG/map-gen-settings.json" fi exec /opt/factorio/bin/x64/factorio \ @@ -32,4 +32,4 @@ exec /opt/factorio/bin/x64/factorio \ --start-server-load-latest \ --server-settings $CONFIG/server-settings.json \ --rcon-port 27015 \ - --rcon-password "$(cat $CONFIG/rconpw)" + --rcon-password "$(cat "$CONFIG/rconpw")" diff --git a/0.14/run.sh b/0.14/run.sh index 601920a..8bb5a08 100755 --- a/0.14/run.sh +++ b/0.14/run.sh @@ -1,3 +1,4 @@ +#!/bin/sh sudo docker run --rm -it \ -v /tmp/factorio:/factorio \ --name factorio \ diff --git a/0.15/docker-entrypoint.sh b/0.15/docker-entrypoint.sh index 9228ef1..c42e384 100755 --- a/0.15/docker-entrypoint.sh +++ b/0.15/docker-entrypoint.sh @@ -1,43 +1,43 @@ #!/bin/sh -x -set -e +set -euo pipefail SAVES=/factorio/saves CONFIG=/factorio/config -mkdir -p $SAVES +mkdir -p "$SAVES" mkdir -p /factorio/mods -mkdir -p $CONFIG +mkdir -p "$CONFIG" -if [ ! -f $CONFIG/rconpw ]; then - echo $(pwgen 15 1) > $CONFIG/rconpw +if [ ! -f "$CONFIG/rconpw" ]; then + pwgen 15 1 >"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi -if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then +if ! find -L "$SAVES" -iname \*.zip -mindepth 1 -print | grep -q .; then /opt/factorio/bin/x64/factorio \ - --create $SAVES/_autosave1.zip \ - --map-gen-settings $CONFIG/map-gen-settings.json \ - --map-settings $CONFIG/map-settings.json + --create "$SAVES/_autosave1.zip" \ + --map-gen-settings "$CONFIG/map-gen-settings.json" \ + --map-settings "$CONFIG/map-settings.json" fi exec /opt/factorio/bin/x64/factorio \ - --port $PORT \ + --port "$PORT" \ --start-server-load-latest \ - --server-settings $CONFIG/server-settings.json \ - --server-whitelist $CONFIG/server-whitelist.json \ - --server-banlist $CONFIG/server-banlist.json \ - --rcon-port $RCON_PORT \ - --rcon-password "$(cat $CONFIG/rconpw)" \ + --server-settings "$CONFIG/server-settings.json" \ + --server-whitelist "$CONFIG/server-whitelist.json" \ + --server-banlist "$CONFIG/server-banlist.json" \ + --rcon-port "$RCON_PORT" \ + --rcon-password "$(cat "$CONFIG/rconpw")" \ --server-id /factorio/config/server-id.json diff --git a/0.16/files/docker-entrypoint.sh b/0.16/files/docker-entrypoint.sh index 3aee1b8..605136f 100755 --- a/0.16/files/docker-entrypoint.sh +++ b/0.16/files/docker-entrypoint.sh @@ -1,48 +1,48 @@ #!/bin/sh -x -set -e +set -euo pipefail id -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS -mkdir -p $SCRIPTOUTPUT +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIOS" +mkdir -p "$SCRIPTOUTPUT" -if [ ! -f $CONFIG/rconpw ]; then - echo $(pwgen 15 1) > $CONFIG/rconpw +if [ ! -f "$CONFIG/rconpw" ]; then + pwgen 15 1>"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi -if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then - rm -f $SAVES/*.tmp.zip +if find -L "$SAVES" -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then + rm -f "$SAVES/*.tmp.zip" fi -if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then +if ! find -L "$SAVES" -iname \*.zip -mindepth 1 -print | grep -q .; then /opt/factorio/bin/x64/factorio \ - --create $SAVES/_autosave1.zip \ - --map-gen-settings $CONFIG/map-gen-settings.json \ - --map-settings $CONFIG/map-settings.json + --create "$SAVES/_autosave1.zip" \ + --map-gen-settings "$CONFIG/map-gen-settings.json" \ + --map-settings "$CONFIG/map-settings.json" fi exec /opt/factorio/bin/x64/factorio \ - --port $PORT \ + --port "$PORT" \ --start-server-load-latest \ - --server-settings $CONFIG/server-settings.json \ - --server-whitelist $CONFIG/server-whitelist.json \ - --server-banlist $CONFIG/server-banlist.json \ - --rcon-port $RCON_PORT \ - --rcon-password "$(cat $CONFIG/rconpw)" \ + --server-settings "$CONFIG/server-settings.json" \ + --server-whitelist "$CONFIG/server-whitelist.json" \ + --server-banlist "$CONFIG/server-banlist.json" \ + --rcon-port "$RCON_PORT" \ + --rcon-password "$(cat "$CONFIG/rconpw")" \ --server-id /factorio/config/server-id.json \ - $@ + "$@" diff --git a/0.16/files/scenario.sh b/0.16/files/scenario.sh index 588e51c..634c6bf 100755 --- a/0.16/files/scenario.sh +++ b/0.16/files/scenario.sh @@ -1,44 +1,42 @@ #!/bin/sh -x -if [ -z "$1" ] - then - echo "No argument supplied" +if [ -z "$1" ]; then + echo "No argument supplied" fi SCENARIO=$1 -set -e +set -euo pipefail id -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIO" #chown -R factorio /factorio -if [ ! -f $CONFIG/rconpw ]; then - echo $(pwgen 15 1) > $CONFIG/rconpw +if [ ! -f "$CONFIG/rconpw" ]; then + pwgen 15 1 >"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi - exec /opt/factorio/bin/x64/factorio \ - --port $PORT \ - --start-server-load-scenario $SCENARIO \ - --server-settings $CONFIG/server-settings.json \ - --server-whitelist $CONFIG/server-whitelist.json \ - --server-banlist $CONFIG/server-banlist.json \ - --rcon-port $RCON_PORT \ - --rcon-password "$(cat $CONFIG/rconpw)" \ + --port "$PORT" \ + --start-server-load-scenario "$SCENARIO" \ + --server-settings "$CONFIG/server-settings.json" \ + --server-whitelist "$CONFIG/server-whitelist.json" \ + --server-banlist "$CONFIG/server-banlist.json" \ + --rcon-port "$RCON_PORT" \ + --rcon-password "$(cat "$CONFIG/rconpw")" \ --server-id /factorio/config/server-id.json diff --git a/0.16/files/scenario2map.sh b/0.16/files/scenario2map.sh index f95d08d..8260276 100755 --- a/0.16/files/scenario2map.sh +++ b/0.16/files/scenario2map.sh @@ -1,30 +1,29 @@ #!/bin/sh -x -if [ -z "$1" ] - then - echo "No argument supplied" +if [ -z "$1" ]; then + echo "No argument supplied" fi SCENARIO=$1 -set -e +set -euo pipefail id -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIO" -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi exec /opt/factorio/bin/x64/factorio \ - --scenario2map $SCENARIO + --scenario2map "$SCENARIO" diff --git a/0.17/files/docker-entrypoint.sh b/0.17/files/docker-entrypoint.sh index 2b4d931..875745f 100755 --- a/0.17/files/docker-entrypoint.sh +++ b/0.17/files/docker-entrypoint.sh @@ -1,69 +1,69 @@ #!/bin/sh -x -set -e +set -euo pipefail id FACTORIO_VOL=/factorio -mkdir -p $FACTORIO_VOL -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS -mkdir -p $SCRIPTOUTPUT +mkdir -p "$FACTORIO_VOL" +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIOS" +mkdir -p "$SCRIPTOUTPUT" -if [ ! -f $CONFIG/rconpw ]; then +if [ ! -f "$CONFIG/rconpw" ]; then # Generate a new RCON password if none exists - echo $(pwgen 15 1) > $CONFIG/rconpw + pwgen 15 1 >"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then +if [ ! -f "$CONFIG/server-settings.json" ]; then # Copy default settings if server-settings.json doesn't exist - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi -if find -L $SAVES -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then +if find -L "$SAVES" -iname \*.tmp.zip -mindepth 1 -print | grep -q .; then # Delete incomplete saves (such as after a forced exit) - rm -f $SAVES/*.tmp.zip + rm -f "$SAVES/*.tmp.zip" fi if [ "$(id -u)" = '0' ]; then # Update the User and Group ID based on the PUID/PGID variables - usermod -o -u $PUID factorio - groupmod -o -g $PGID factorio + usermod -o -u "$PUID" factorio + groupmod -o -g "$PGID" factorio # Take ownership of factorio data if running as root chown -R factorio:factorio $FACTORIO_VOL - # Make sure we own temp - #mkdir -p /opt/factorio/temp - #chown -R factorio:factorio /opt/factorio/temp # Drop to the factorio user SU_EXEC="su-exec factorio" +else + SU_EXEC="" fi -if ! find -L $SAVES -iname \*.zip -mindepth 1 -print | grep -q .; then +if ! find -L "$SAVES" -iname \*.zip -mindepth 1 -print | grep -q .; then # Generate a new map if no save ZIPs exist - ${SU_EXEC} /opt/factorio/bin/x64/factorio \ - --create $SAVES/_autosave1.zip \ - --map-gen-settings $CONFIG/map-gen-settings.json \ - --map-settings $CONFIG/map-settings.json + $SU_EXEC /opt/factorio/bin/x64/factorio \ + --create "$SAVES/_autosave1.zip" \ + --map-gen-settings "$CONFIG/map-gen-settings.json" \ + --map-settings "$CONFIG/map-settings.json" fi -exec ${SU_EXEC} /opt/factorio/bin/x64/factorio \ - --port $PORT \ +# shellcheck disable=SC2086 +exec $SU_EXEC /opt/factorio/bin/x64/factorio \ + --port "$PORT" \ --start-server-load-latest \ - --server-settings $CONFIG/server-settings.json \ - --server-banlist $CONFIG/server-banlist.json \ - --rcon-port $RCON_PORT \ - --server-whitelist $CONFIG/server-whitelist.json \ + --server-settings "$CONFIG/server-settings.json" \ + --server-banlist "$CONFIG/server-banlist.json" \ + --rcon-port "$RCON_PORT" \ + --server-whitelist "$CONFIG/server-whitelist.json" \ --use-server-whitelist \ - --server-adminlist $CONFIG/server-adminlist.json \ - --rcon-password "$(cat $CONFIG/rconpw)" \ + --server-adminlist "$CONFIG/server-adminlist.json" \ + --rcon-password "$(cat "$CONFIG/rconpw")" \ --server-id /factorio/config/server-id.json \ "$@" diff --git a/0.17/files/scenario.sh b/0.17/files/scenario.sh index 588e51c..c8cfe58 100755 --- a/0.17/files/scenario.sh +++ b/0.17/files/scenario.sh @@ -1,44 +1,42 @@ #!/bin/sh -x -if [ -z "$1" ] - then - echo "No argument supplied" +if [ -z "$1" ]; then + echo "No argument supplied" fi -SCENARIO=$1 +SCENARIO="$1" -set -e +set -euo pipefail id -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIO" #chown -R factorio /factorio -if [ ! -f $CONFIG/rconpw ]; then - echo $(pwgen 15 1) > $CONFIG/rconpw +if [ ! -f "$CONFIG/rconpw" ]; then + pwgen 15 1 >"$CONFIG/rconpw" fi -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi - exec /opt/factorio/bin/x64/factorio \ - --port $PORT \ - --start-server-load-scenario $SCENARIO \ - --server-settings $CONFIG/server-settings.json \ - --server-whitelist $CONFIG/server-whitelist.json \ - --server-banlist $CONFIG/server-banlist.json \ - --rcon-port $RCON_PORT \ - --rcon-password "$(cat $CONFIG/rconpw)" \ + --port "$PORT" \ + --start-server-load-scenario "$SCENARIO" \ + --server-settings "$CONFIG/server-settings.json" \ + --server-whitelist "$CONFIG/server-whitelist.json" \ + --server-banlist "$CONFIG/server-banlist.json" \ + --rcon-port "$RCON_PORT" \ + --rcon-password "$(cat "$CONFIG/rconpw")" \ --server-id /factorio/config/server-id.json diff --git a/0.17/files/scenario2map.sh b/0.17/files/scenario2map.sh index f95d08d..63b09d5 100755 --- a/0.17/files/scenario2map.sh +++ b/0.17/files/scenario2map.sh @@ -1,30 +1,29 @@ #!/bin/sh -x -if [ -z "$1" ] - then - echo "No argument supplied" +if [ -z "$1" ]; then + echo "No argument supplied" fi -SCENARIO=$1 +SCENARIO="$1" -set -e +set -euo pipefail id -mkdir -p $SAVES -mkdir -p $CONFIG -mkdir -p $MODS -mkdir -p $SCENARIOS +mkdir -p "$SAVES" +mkdir -p "$CONFIG" +mkdir -p "$MODS" +mkdir -p "$SCENARIO" -if [ ! -f $CONFIG/server-settings.json ]; then - cp /opt/factorio/data/server-settings.example.json $CONFIG/server-settings.json +if [ ! -f "$CONFIG/server-settings.json" ]; then + cp /opt/factorio/data/server-settings.example.json "$CONFIG/server-settings.json" fi -if [ ! -f $CONFIG/map-gen-settings.json ]; then - cp /opt/factorio/data/map-gen-settings.example.json $CONFIG/map-gen-settings.json +if [ ! -f "$CONFIG/map-gen-settings.json" ]; then + cp /opt/factorio/data/map-gen-settings.example.json "$CONFIG/map-gen-settings.json" fi -if [ ! -f $CONFIG/map-settings.json ]; then - cp /opt/factorio/data/map-settings.example.json $CONFIG/map-settings.json +if [ ! -f "$CONFIG/map-settings.json" ]; then + cp /opt/factorio/data/map-settings.example.json "$CONFIG/map-settings.json" fi exec /opt/factorio/bin/x64/factorio \ - --scenario2map $SCENARIO + --scenario2map "$SCENARIO"