PortValhalla/scripts/Common/Software/docker/services/minecraft/main.fish

73 lines
1.8 KiB
Fish

#!/bin/env fish
begin
set -l dir (status dirname)
set -l user minecraft
source "$dir/../service.fish"
function installSW -V dir -V domain -V server -V service
initializeServiceInstallation $argv
sudo cp "$dir/docker-compose.yml" (getServiceRoot $argv)
installDockerService $argv
end
function configureSW -V dir -V user -V service
set -l uid
set -l gid
set -l file (mktemp)
set -l root (getServiceRoot $argv)
set -l dirs "$root"/{mods,{data,config}/{legacy,bedrock}}
set -l files "$root"/{legacy,bedrock}.properties
set -l config "$root/docker-compose.yml"
configureDockerService $argv
and sudo useradd \
--system \
--shell /bin/false \
--comment 'Minecraft server' \
--groups docker \
$user
set uid (id -u $user)
set gid (id -g $user)
for service in (yq -0 ".services | keys[]" "$config" | string split0 || true)
set -l envKey "$(getServiceKey "$service").environment"
cp "$config" "$file"
and yq "$envKey.UID = $uid" "$file" |
yq "$envKey.GID = $gid" |
sudo tee "$config" >/dev/null
end
and for dir in $dirs
sudo mkdir -p "$dir"
end
and begin
set -l file
for file in $files
sudo mkdir -p (dirname "$file")
sudo touch "$file"
end
end
and for item in $dirs $files
sudo chown -R $uid:$gid "$item"
end
rm "$file"
end
function getServiceServers -V server
end
function getServiceLocations
end
function getExtraBackupPatterns
echo "\.properties\$|^(config|mods)\$"
end
runInstaller --force $argv
end