implemented checking deploy file
parent
cd9c76490e
commit
0ce28302bd
@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env sh
|
||||
|
||||
# MULTIDEPLOY_CONFIG="default"
|
||||
|
||||
######## Public functions #####################
|
||||
|
||||
MULTIDEPLOY_VERSION="1.0"
|
||||
MULTIDEPLOY_FILENAME="multideploy.yaml"
|
||||
|
||||
# domain keyfile certfile cafile fullchain pfx
|
||||
multideploy_deploy() {
|
||||
_cdomain="$1"
|
||||
_ckey="$2"
|
||||
_ccert="$3"
|
||||
_cca="$4"
|
||||
_cfullchain="$5"
|
||||
_cpfx="$6"
|
||||
|
||||
_debug _cdomain "$_cdomain"
|
||||
_debug _ckey "$_ckey"
|
||||
_debug _ccert "$_ccert"
|
||||
_debug _cca "$_cca"
|
||||
_debug _cfullchain "$_cfullchain"
|
||||
_debug _cpfx "$_cpfx"
|
||||
|
||||
DOMAIN_DIR=$_cdomain
|
||||
if echo "$DOMAIN_PATH" | grep -q "$ECC_SUFFIX"; then
|
||||
DOMAIN_DIR="$DOMAIN_DIR"_ecc
|
||||
fi
|
||||
_debug2 "DOMAIN_DIR" "$DOMAIN_DIR"
|
||||
|
||||
_preprocess_deployfile "$DOMAIN_DIR/$MULTIDEPLOY_FILENAME"
|
||||
|
||||
MULTIDEPLOY_CONFIG="${MULTIDEPLOY_CONFIG:-$(_getdeployconf MULTIDEPLOY_CONFIG)}"
|
||||
if [ -z "$MULTIDEPLOY_CONFIG" ]; then
|
||||
MULTIDEPLOY_CONFIG="default"
|
||||
_info "MULTIDEPLOY_CONFIG is not set, so I will use 'default'."
|
||||
else
|
||||
_savedeployconf "MULTIDEPLOY_CONFIG" "$MULTIDEPLOY_CONFIG"
|
||||
_debug2 "MULTIDEPLOY_CONFIG" "$MULTIDEPLOY_CONFIG"
|
||||
fi
|
||||
|
||||
# TODO: Deploy to services
|
||||
}
|
||||
|
||||
#################### Private functions below #####################
|
||||
|
||||
# deploy_filepath
|
||||
_preprocess_deployfile() {
|
||||
deploy_file="$1"
|
||||
|
||||
# Check if yq is installed
|
||||
if ! command -v yq >/dev/null 2>&1; then
|
||||
_err "yq is not installed! Please install yq and try again."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if deploy file exists and create a default template if not
|
||||
if [ -f "$deploy_file" ]; then
|
||||
_debug3 "Deploy file found."
|
||||
_check_deployfile "$deploy_file" "$MULTIDEPLOY_CONFIG"
|
||||
else
|
||||
# TODO: Replace URL with wiki link
|
||||
_err "Deploy file not found. Go to https://CHANGE_URL_TO_WIKI to see how to create one."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# deploy_filepath deploy_config
|
||||
_check_deployfile() {
|
||||
deploy_file="$1"
|
||||
deploy_config="$3"
|
||||
|
||||
# Check version
|
||||
deploy_file_version=$(yq '.version' "$deploy_file")
|
||||
if [ "$MULTIDEPLOY_VERSION" != "$deploy_file_version" ]; then
|
||||
_err "As of $PROJECT_NAME $VER, the deploy file needs version $MULTIDEPLOY_VERSION! Your current deploy file is of version $deploy_file_version."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if config exists
|
||||
if ! yq e ".configs[] | select(.name == \"$deploy_config\")" "$deploy_file" >/dev/null; then
|
||||
_err "Config '$deploy_config' not found."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Extract all services from config
|
||||
services=$(yq e ".configs[] | select(.name == \"$deploy_config\").services[]" "$deploy_file")
|
||||
|
||||
if [ -z "$services" ]; then
|
||||
_err "Config '$deploy_config' does not have any services to deploy to."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if extracted services exist in services list
|
||||
for service in $services; do
|
||||
if ! yq e ".services[] | select(.name == \"$service\")" "$deploy_file" >/dev/null; then
|
||||
_err "Service '$service' not found."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if service has hook
|
||||
if ! yq e ".services[] | select(.name == \"$service\").hook" "$deploy_file" >/dev/null; then
|
||||
_err "Service '$service' does not have a hook."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Check if service has environment
|
||||
if ! yq e ".services[] | select(.name == \"$service\").environment" "$deploy_file" >/dev/null; then
|
||||
_err "Service '$service' does not an environment."
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
}
|
Loading…
Reference in New Issue