105 lines
2.9 KiB
Bash
105 lines
2.9 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
if [[ ! -x "$(command -v packwiz)" ]]; then
|
||
|
|
echo -e "Setup Error: packwiz is not installed in PATH!\n" >&2
|
||
|
|
echo "Installation instructions can be found here:" >&2
|
||
|
|
echo "https://packwiz.infra.link/installation" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Initialising packwiz modpack..."
|
||
|
|
packwiz init -r
|
||
|
|
|
||
|
|
if [[ $? -ne 0 ]] || [[ ! -f pack.toml ]]; then
|
||
|
|
echo "Setup Error: failed to initialise packwiz modpack!" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
grep -q liteloader pack.toml
|
||
|
|
|
||
|
|
if [[ $? -eq 0 ]]; then
|
||
|
|
echo "Setup Error: LiteLoader is not supported!" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
VERSION_FIELDS=$(cat pack.toml | tail -n 2 | tr -d ' "')
|
||
|
|
FIRST_FIELD=$(echo "$VERSION_FIELDS" | head -n 1)
|
||
|
|
SECOND_FIELD=$(echo "$VERSION_FIELDS" | tail -n 1)
|
||
|
|
MINECRAFT_FIELD=$([[ "$FIRST_FIELD" =~ minecraft ]] && echo "$FIRST_FIELD" || echo "$SECOND_FIELD")
|
||
|
|
MOD_LOADER_FIELD=$([[ "$FIRST_FIELD" =~ minecraft ]] && echo "$SECOND_FIELD" || echo "$FIRST_FIELD" )
|
||
|
|
|
||
|
|
MINECRAFT_VERSION=$(echo "$MINECRAFT_FIELD" | cut -d '=' -f 2)
|
||
|
|
MOD_LOADER_NAME=$(echo "$MOD_LOADER_FIELD" | cut -d '=' -f 1 | tr '[:lower:]' '[:upper:]')
|
||
|
|
MOD_LOADER_VERSION=$(echo "$MOD_LOADER_FIELD" | cut -d '=' -f 2)
|
||
|
|
LOADER_VERSION_VAR_NAME=$([[ "$MOD_LOADER_NAME" = "FORGE" ]] && echo "FORGE_VERSION" || echo "${MOD_LOADER_NAME}_LOADER_VERSION")
|
||
|
|
RCON_PASSWORD=$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 24)
|
||
|
|
|
||
|
|
echo "# For a complete list of environment variables and their defaults, see:
|
||
|
|
# https://docker-minecraft-server.readthedocs.io/en/latest/variables
|
||
|
|
|
||
|
|
EULA=true
|
||
|
|
PACKWIZ_URL=http://packwiz:3000/pack.toml
|
||
|
|
RCON_PASSWORD=${RCON_PASSWORD}
|
||
|
|
TYPE=${MOD_LOADER_NAME}
|
||
|
|
VERSION=${MINECRAFT_VERSION}
|
||
|
|
${LOADER_VERSION_VAR_NAME}=${MOD_LOADER_VERSION}" > .env
|
||
|
|
|
||
|
|
echo "Created .env file for the Minecraft server container!"
|
||
|
|
|
||
|
|
echo "[options]
|
||
|
|
no-internal-hashes = true" >> pack.toml
|
||
|
|
|
||
|
|
echo '#!/bin/bash
|
||
|
|
|
||
|
|
if ! [ -x "$(command -v packwiz)" ]; then
|
||
|
|
echo "Error: packwiz is not installed!" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
readarray ignored_files < .dockerignore
|
||
|
|
|
||
|
|
for file in ${ignored_files[@]}; do
|
||
|
|
mv $file "/tmp/$file"
|
||
|
|
done
|
||
|
|
|
||
|
|
packwiz refresh --build
|
||
|
|
touch /tmp/.commit' > .git/hooks/pre-commit
|
||
|
|
|
||
|
|
echo '#!/bin/bash
|
||
|
|
|
||
|
|
if [ -e /tmp/.commit ]; then
|
||
|
|
rm /tmp/.commit
|
||
|
|
readarray ignored_files < /tmp/.dockerignore
|
||
|
|
|
||
|
|
for file in ${ignored_files[@]}; do
|
||
|
|
mv "/tmp/$file" $file
|
||
|
|
done
|
||
|
|
|
||
|
|
git add -A
|
||
|
|
git commit --amend -C HEAD --no-verify
|
||
|
|
fi' > .git/hooks/post-commit
|
||
|
|
|
||
|
|
echo "Created pre/post-commit Git hooks to prevent indexing of files in .dockerignore!"
|
||
|
|
echo "Making new hooks executable..."
|
||
|
|
sudo chmod +x .git/hooks/pre-commit .git/hooks/post-commit
|
||
|
|
|
||
|
|
if [[ $? -eq 0 ]]; then
|
||
|
|
echo "Successfully updated hooks' permissions!"
|
||
|
|
else
|
||
|
|
echo "Setup Error: failed to update hooks' permissions!" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo "Committing modpack manifest and index..."
|
||
|
|
|
||
|
|
git add -A
|
||
|
|
git commit -m "(re)init modpack" -q
|
||
|
|
|
||
|
|
if [[ $? -eq 0 ]]; then
|
||
|
|
echo "Successfully committed changes!"
|
||
|
|
echo "Setup complete!"
|
||
|
|
else
|
||
|
|
echo "Setup Error: failed to commit changes!" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|