Fixing Deploy Dir
This commit is contained in:
parent
572b9be363
commit
87ff3f6e35
105
install.sh
105
install.sh
|
|
@ -6,41 +6,108 @@ set -euo pipefail
|
||||||
# Functions
|
# Functions
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
|
||||||
|
# resolve_dirs() {
|
||||||
|
# local json="$1"
|
||||||
|
# declare -A raw resolved
|
||||||
|
|
||||||
|
# while IFS='=' read -r key val; do
|
||||||
|
# raw["$key"]="$val"
|
||||||
|
# done < <(jq -r '.DIRS | to_entries[] | "\(.key)=\(.value)"' "$json")
|
||||||
|
|
||||||
|
# if [[ -z "${raw[SITE]:-}" ]]; then
|
||||||
|
# echo "ERROR: DIRS.SITE is not defined in nwa-deploy-config.json"
|
||||||
|
# exit 1
|
||||||
|
# fi
|
||||||
|
|
||||||
|
# resolved["SITE"]="${raw[SITE]/#\~/$HOME}"
|
||||||
|
|
||||||
|
# local changed=true
|
||||||
|
# while $changed; do
|
||||||
|
# changed=false
|
||||||
|
# for key in "${!raw[@]}"; do
|
||||||
|
# [[ -n "${resolved[$key]:-}" ]] && continue
|
||||||
|
|
||||||
|
# local val="${raw[$key]}"
|
||||||
|
# for rkey in "${!resolved[@]}"; do
|
||||||
|
# val="${val/$rkey/${resolved[$rkey]:-}}"
|
||||||
|
# done
|
||||||
|
|
||||||
|
# # if [[ "$val" != ** ]]; then
|
||||||
|
# # resolved["$key"]="$val"
|
||||||
|
# # changed=true
|
||||||
|
# # fi
|
||||||
|
|
||||||
|
# local unresolved=false
|
||||||
|
|
||||||
|
# for unresolved_key in "${!raw[@]}"; do
|
||||||
|
# if [[ -z "${resolved[$unresolved_key]:-}" && "$val" == *"$unresolved_key"* ]]; then
|
||||||
|
# unresolved=true
|
||||||
|
# break
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
|
||||||
|
# if [[ "$unresolved" == false ]]; then
|
||||||
|
# resolved["$key"]="$val"
|
||||||
|
# changed=true
|
||||||
|
# fi
|
||||||
|
# done
|
||||||
|
# done
|
||||||
|
|
||||||
|
# for key in "${!raw[@]}"; do
|
||||||
|
# [[ -z "${resolved[$key]:-}" ]] && {
|
||||||
|
# echo "ERROR: Unresolved DIR: $key=${raw[$key]}"
|
||||||
|
# exit 1
|
||||||
|
# }
|
||||||
|
# done
|
||||||
|
|
||||||
|
# for key in "${!resolved[@]}"; do
|
||||||
|
# export "$key=${resolved[$key]}"
|
||||||
|
# printf " %-12s %s\n" "$key:" "${resolved[$key]}"
|
||||||
|
# mkdir -p "${resolved[$key]}"
|
||||||
|
# done
|
||||||
|
# }
|
||||||
|
|
||||||
resolve_dirs() {
|
resolve_dirs() {
|
||||||
local json="$1"
|
local json="$1"
|
||||||
|
local sitename="$2"
|
||||||
declare -A raw resolved
|
declare -A raw resolved
|
||||||
|
|
||||||
|
if [[ -z "$sitename" || "$sitename" == "null" ]]; then
|
||||||
|
echo "ERROR: METADATA.name is not defined in metadata.json"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Basic safety: deployment directory name should be simple.
|
||||||
|
if [[ ! "$sitename" =~ ^[A-Za-z0-9._-]+$ ]]; then
|
||||||
|
echo "ERROR: Invalid METADATA.name for deploy directory: $sitename"
|
||||||
|
echo " Allowed characters: A-Z a-z 0-9 . _ -"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
while IFS='=' read -r key val; do
|
while IFS='=' read -r key val; do
|
||||||
raw["$key"]="$val"
|
raw["$key"]="$val"
|
||||||
done < <(jq -r '.DIRS | to_entries[] | "\(.key)=\(.value)"' "$json")
|
done < <(jq -r '.DIRS | to_entries[] | "\(.key)=\(.value)"' "$json")
|
||||||
|
|
||||||
if [[ -z "${raw[SITE]:-}" ]]; then
|
# SITE is derived from metadata.json, not from deploy config.
|
||||||
echo "ERROR: DIRS.SITE is not defined in nwa-deploy-config.json"
|
resolved["SITE"]="$HOME/.$sitename"
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
resolved["SITE"]="${raw[SITE]/#\~/$HOME}"
|
|
||||||
|
|
||||||
local changed=true
|
local changed=true
|
||||||
while $changed; do
|
while $changed; do
|
||||||
changed=false
|
changed=false
|
||||||
for key in "${!raw[@]}"; do
|
for key in "${!raw[@]}"; do
|
||||||
|
[[ "$key" == "SITE" ]] && continue
|
||||||
[[ -n "${resolved[$key]:-}" ]] && continue
|
[[ -n "${resolved[$key]:-}" ]] && continue
|
||||||
|
|
||||||
local val="${raw[$key]}"
|
local val="${raw[$key]}"
|
||||||
|
|
||||||
for rkey in "${!resolved[@]}"; do
|
for rkey in "${!resolved[@]}"; do
|
||||||
val="${val/$rkey/${resolved[$rkey]:-}}"
|
val="${val/$rkey/${resolved[$rkey]:-}}"
|
||||||
done
|
done
|
||||||
|
|
||||||
# if [[ "$val" != ** ]]; then
|
|
||||||
# resolved["$key"]="$val"
|
|
||||||
# changed=true
|
|
||||||
# fi
|
|
||||||
|
|
||||||
local unresolved=false
|
local unresolved=false
|
||||||
|
|
||||||
for unresolved_key in "${!raw[@]}"; do
|
for unresolved_key in "${!raw[@]}"; do
|
||||||
if [[ -z "${resolved[$unresolved_key]:-}" && "$val" == *"$unresolved_key"* ]]; then
|
if [[ "$unresolved_key" != "SITE" && -z "${resolved[$unresolved_key]:-}" && "$val" == *"$unresolved_key"* ]]; then
|
||||||
unresolved=true
|
unresolved=true
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
|
|
@ -54,6 +121,8 @@ resolve_dirs() {
|
||||||
done
|
done
|
||||||
|
|
||||||
for key in "${!raw[@]}"; do
|
for key in "${!raw[@]}"; do
|
||||||
|
[[ "$key" == "SITE" ]] && continue
|
||||||
|
|
||||||
[[ -z "${resolved[$key]:-}" ]] && {
|
[[ -z "${resolved[$key]:-}" ]] && {
|
||||||
echo "ERROR: Unresolved DIR: $key=${raw[$key]}"
|
echo "ERROR: Unresolved DIR: $key=${raw[$key]}"
|
||||||
exit 1
|
exit 1
|
||||||
|
|
@ -67,6 +136,8 @@ resolve_dirs() {
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
use_systemd() {
|
use_systemd() {
|
||||||
# Check if systemd user mode is available and service exists
|
# Check if systemd user mode is available and service exists
|
||||||
if systemctl --user status >/dev/null 2>&1; then
|
if systemctl --user status >/dev/null 2>&1; then
|
||||||
|
|
@ -270,13 +341,13 @@ fi
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Setting variables
|
# Setting variables
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
|
SITENAME="$(jq -r '.METADATA.name' "$META_FILE")"
|
||||||
VERSION="$(jq -r '.METADATA.version' "$META_FILE")"
|
VERSION="$(jq -r '.METADATA.version' "$META_FILE")"
|
||||||
VERSION_DATE="$(jq -r '.METADATA.version_date' "$META_FILE")"
|
VERSION_DATE="$(jq -r '.METADATA.version_date' "$META_FILE")"
|
||||||
COPYRIGHT="$(jq -r '.METADATA.copyright' "$META_FILE")"
|
COPYRIGHT="$(jq -r '.METADATA.copyright' "$META_FILE")"
|
||||||
AUTHOR="$(jq -r '.METADATA.author' "$META_FILE")"
|
AUTHOR="$(jq -r '.METADATA.author' "$META_FILE")"
|
||||||
LICENSE="$(jq -r '.METADATA.license' "$META_FILE")"
|
LICENSE="$(jq -r '.METADATA.license' "$META_FILE")"
|
||||||
SITEPAGE="$(jq -r '.METADATA.SITEpage' "$META_FILE")"
|
HOMEPAGE="$(jq -r '.METADATA.homepage' "$META_FILE")"
|
||||||
REPO="$(jq -r '.METADATA.git_repo' "$META_FILE")"
|
REPO="$(jq -r '.METADATA.git_repo' "$META_FILE")"
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -291,12 +362,13 @@ NODE_PLATFORMS="${NODE_PLATFORMS%% }"
|
||||||
echo "####################################"
|
echo "####################################"
|
||||||
echo "Node Web App (NWA)"
|
echo "Node Web App (NWA)"
|
||||||
echo "####################################"
|
echo "####################################"
|
||||||
|
echo " Sitename: $SITENAME"
|
||||||
echo " Version: $VERSION"
|
echo " Version: $VERSION"
|
||||||
echo " Version Date: $VERSION_DATE"
|
echo " Version Date: $VERSION_DATE"
|
||||||
echo " Copyright: (C) $COPYRIGHT"
|
echo " Copyright: (C) $COPYRIGHT"
|
||||||
echo " Author: $AUTHOR"
|
echo " Author: $AUTHOR"
|
||||||
echo " License: $LICENSE"
|
echo " License: $LICENSE"
|
||||||
echo " SITEpage: $SITEPAGE"
|
echo " Homepage: $HOMEPAGE"
|
||||||
echo " Repository: $REPO"
|
echo " Repository: $REPO"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
|
|
@ -325,7 +397,8 @@ fi
|
||||||
|
|
||||||
echo "Directories:"
|
echo "Directories:"
|
||||||
echo " ROOT: $ROOT"
|
echo " ROOT: $ROOT"
|
||||||
resolve_dirs "$CONFIG_FILE"
|
# resolve_dirs "$CONFIG_FILE"
|
||||||
|
resolve_dirs "$CONFIG_FILE" "$SITENAME"
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Copy nwa to Prod Dir
|
# Copy nwa to Prod Dir
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue