88 lines
1.6 KiB
Bash
88 lines
1.6 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
log() {
|
|
printf '[%s] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*"
|
|
}
|
|
|
|
fail() {
|
|
printf 'ERROR: %s\n' "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
run_step() {
|
|
local message="$1"
|
|
shift
|
|
log "$message"
|
|
"$@"
|
|
}
|
|
|
|
require_root() {
|
|
[[ "${EUID}" -eq 0 ]] || fail "Ten skrypt musi byc uruchomiony jako root."
|
|
}
|
|
|
|
require_file() {
|
|
local path="$1"
|
|
[[ -f "$path" ]] || fail "Brak wymaganego pliku: $path"
|
|
}
|
|
|
|
require_dir() {
|
|
local path="$1"
|
|
[[ -d "$path" ]] || fail "Brak wymaganego katalogu: $path"
|
|
}
|
|
|
|
set_key_value() {
|
|
local path="$1"
|
|
local key="$2"
|
|
local value="$3"
|
|
|
|
touch "$path"
|
|
if grep -qE "^${key}=" "$path"; then
|
|
sed -i -E "s|^${key}=.*|${key}=${value}|" "$path"
|
|
else
|
|
printf '%s=%s\n' "$key" "$value" >> "$path"
|
|
fi
|
|
}
|
|
|
|
get_key_value() {
|
|
local path="$1"
|
|
local key="$2"
|
|
local value
|
|
|
|
value="$(grep -m1 -E "^${key}=" "$path" | cut -d= -f2-)"
|
|
[[ -n "$value" ]] || fail "Brak wartosci $key w $path"
|
|
printf '%s\n' "$value"
|
|
}
|
|
|
|
get_optional_key_value() {
|
|
local path="$1"
|
|
local key="$2"
|
|
|
|
grep -m1 -E "^${key}=" "$path" | cut -d= -f2- || true
|
|
}
|
|
|
|
get_php_release_list() {
|
|
local path="$1"
|
|
local value
|
|
local first=1
|
|
local idx
|
|
|
|
for idx in 1 2 3 4 5 6 7 8 9; do
|
|
value="$(get_optional_key_value "$path" "php${idx}_release")"
|
|
[[ -n "$value" && "$value" != "no" ]] || continue
|
|
|
|
if [[ "$first" -eq 1 ]]; then
|
|
printf 'PHP %s (domyślna)' "$value"
|
|
first=0
|
|
else
|
|
printf '\nPHP %s' "$value"
|
|
fi
|
|
done
|
|
}
|
|
|
|
render_template() {
|
|
local template="$1"
|
|
local output="$2"
|
|
|
|
perl -pe 's/\{\{([A-Z0-9_]+)\}\}/exists $ENV{$1} ? $ENV{$1} : $&/ge' "$template" > "$output"
|
|
}
|