pms-cli/utils/start

50 lines
2 KiB
Bash

#!/usr/bin/env bash
function start() {
if [[ ! -d "$(getValueByKey 'PODMAN_DIRECTORY')/${1}" ]]; then
log e "Directory '${1}' does not exist!"
exit 1
fi
if [[ -z "${2}" ]]; then
log e "You have to specify a port, on which the server listens!"
exit 1
fi
local dir="$(getValueByKey 'PODMAN_DIRECTORY')/${1}"
local software="$(getLocalConfValue ${dir} 'software')"
local version="$(getLocalConfValue ${dir} 'version')"
local build="$(getLocalConfValue ${dir} 'build')"
local podman_network="$(getLocalConfValue ${dir} 'podman_network')"
case "$(getLocalConfValue ${dir} 'type')" in
"server")
local software_url="$(getValueByKey SERVERRUNNERS.${software})"
;;
"proxy")
local software_url="$(getValueByKey PROXYRUNNERS.${software})"
;;
esac
if [[ $(checkImage "${software}" "${version}" "${build}") == false ]]; then
log i "Building image '${version}/${software}:${build}'"
buildImage "${software}" "${version}" "${build}" "${software_url}/versions/${version}/builds/${build}"
else
if [[ "$(getLocalConfValue ${dir} 'release')" == "latest" ]]; then
if [[ $(checkUpdate "${software}" "${version}" "${build}" "$(getLocalConfValue ${dir} 'type')") == true ]]; then
log w "Update for '${software}/${version}:${build}' is available."
updateBuild "${software}" "${version}" "${dir}" "$(getLocalConfValue ${dir} 'type')"
local oldbuild="${build}"
build="$(getLocalConfValue ${dir} 'build')"
if [[ $(checkImage "${software}" "${version}" "${build}") == false ]]; then
log i "Updating image '${version}/${software}:${oldbuild}' => '${version}/${software}:${build}'"
buildImage "${software}" "${version}" "${build}" "${software_url}/versions/${version}/builds/${build}"
fi
fi
fi
fi
log i "Starting container '${1}' with image '${version}/${software}:${build}' on port '$([[ -n "${3}" ]] && echo ${3}:)${2}'"
startContainer "${1}" "${version}/${software}:${build}" "${2}" "${3}" "${podman_network}"
}