This branch adds the ability to define the binding ip as an extra parameter. Tested and working Reviewed-on: #1 Co-authored-by: LinuxSquare <linuxscripting.sh@gmail.com> Co-committed-by: LinuxSquare <linuxscripting.sh@gmail.com>
124 lines
3.6 KiB
Bash
124 lines
3.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
function init() {
|
|
createNetwork "$2"
|
|
if [[ -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then
|
|
log e "Directory '${1}' already exists"
|
|
exit 1
|
|
fi
|
|
|
|
local newdir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}"
|
|
|
|
mkdir -p "${newdir}/data/world/datapacks"
|
|
populateConfig "${newdir}/config.json" "$2"
|
|
}
|
|
|
|
function populateConfig() {
|
|
local config="$1"
|
|
local network_name="$2"
|
|
|
|
local runnertype
|
|
local build
|
|
local software
|
|
local software_url
|
|
local release
|
|
local version
|
|
|
|
# software
|
|
log i "What would you like to install?"
|
|
while [[ ! $softwareAns =~ [1-2] ]]; do
|
|
echo -ne "[1] Server\n[2] Proxy\n"
|
|
read -p "Answer: " softwareAns
|
|
done
|
|
case "$softwareAns" in
|
|
1)
|
|
runnertype="server"
|
|
log i "Which server-software would you like to install?"
|
|
local servers=($(getValueByKey 'SERVERRUNNERS|keys[]'))
|
|
while [[ ! $serverAns =~ [0-9] ]]; do
|
|
for (( i = 0; i<${#servers[@]}; i++ )); do
|
|
if [[ -n ${servers[$i]} ]]; then
|
|
echo "[$(($i + 1))] ${servers[$i]}"
|
|
fi
|
|
done
|
|
read -p "Answer: " serverAns
|
|
done
|
|
if [[ $serverAns -gt ${#servers[@]} ]]; then
|
|
log e "The answer '$serverAns' is not valid!"
|
|
exit 1
|
|
fi
|
|
software="${servers[$(($serverAns - 1))]}"
|
|
software_url="$(getValueByKey SERVERRUNNERS.${software})"
|
|
;;
|
|
2)
|
|
runnertype="proxy"
|
|
log i "Which proxy-software would you like to install?"
|
|
local proxies=($(getValueByKey 'PROXYRUNNERS|keys[]'))
|
|
while [[ ! $proxyAns =~ [0-9] ]]; do
|
|
for (( i = 0; i<${#proxies[@]}; i++ )); do
|
|
if [[ -n ${proxies[$i]} ]]; then
|
|
echo "[$(($i + 1))] ${proxies[$i]}"
|
|
fi
|
|
done
|
|
read -p "Answer: " proxyAns
|
|
done
|
|
if [[ $proxyAns -gt ${#proxies[@]} ]]; then
|
|
log e "The answer '$proxyAns' is not valid!"
|
|
exit 1
|
|
fi
|
|
software="${proxies[$(($proxyAns - 1))]}"
|
|
software_url="$(getValueByKey PROXYRUNNERS.${software})"
|
|
;;
|
|
*)
|
|
log e "The answer '$softwareAns' is not valid!"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
# version
|
|
log i "Which version of '$software' would you like to install?"
|
|
local versions=($(curl -s "$software_url" | jq -r '.versions[]' ))
|
|
|
|
while [[ -z $versionAns ]]; do
|
|
for (( i = 0; i<${#versions[@]}; i++ )); do
|
|
echo "[$(($i + 1))] ${versions[$i]}"
|
|
done
|
|
read -p "Answer: " versionAns
|
|
done
|
|
if [[ $versionAns -gt ${#versions[@]} ]]; then
|
|
log e "The answer '$versionAns' is not valid!"
|
|
exit 1
|
|
fi
|
|
version="${versions[$(($versionAns - 1))]}"
|
|
|
|
# releasecycle
|
|
log i "Which release-cycle do you want to go?"
|
|
while [[ -z $releaseCycleAns ]]; do
|
|
echo -ne "[1] latest\n[2] specific\n"
|
|
read -p "Answer: " releaseCycleAns
|
|
done
|
|
case "$releaseCycleAns" in
|
|
1)
|
|
release="latest"
|
|
build=$(curl -s "$software_url/versions/$version" | jq -r '.builds | last')
|
|
;;
|
|
2)
|
|
log i "Which build of '$software/$version' would you like to use?"
|
|
local builds=($(curl -s "$software_url/versions/$version" | jq -r '.builds[]'))
|
|
while [[ -z $buildAns ]]; do
|
|
for (( i = 0; i<${#builds[@]}; i++ )); do
|
|
echo "[$(($i + 1))] ${builds[$i]}"
|
|
done
|
|
read -p "Answer: " buildAns
|
|
done
|
|
if [[ $buildAns -gt ${#builds[@]} ]]; then
|
|
log e "The answer '$buildAns' is not valid!"
|
|
exit 1
|
|
fi
|
|
build="${builds[$(($buildAns - 1))]}"
|
|
release="specific"
|
|
;;
|
|
esac
|
|
|
|
jq "(.type=\"$runnertype\")|(.build=$build)|(.software=\"$software\")|(.release=\"$release\")|(.version=\"$version\")|(.podman_network=\"$network_name\")" ${TEMPLATEDIR}/config.json > "$config"
|
|
}
|