Skip to content

Commit f85cdda

Browse files
authored
update some improvements from dev (tools.func) (#4430)
* Harmonize tools.func from DEV-Repo * Update tools.func
1 parent 1700291 commit f85cdda

File tree

1 file changed

+52
-22
lines changed

1 file changed

+52
-22
lines changed

misc/tools.func

Lines changed: 52 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,16 @@ install_node_and_modules() {
5555
IFS=',' read -ra MODULES <<<"$NODE_MODULE"
5656
for mod in "${MODULES[@]}"; do
5757
local MODULE_NAME MODULE_REQ_VERSION MODULE_INSTALLED_VERSION
58-
if [[ "$mod" == *"@"* ]]; then
58+
if [[ "$mod" == @*/*@* ]]; then
59+
# Scoped package with version, e.g. @vue/cli-service@latest
5960
MODULE_NAME="${mod%@*}"
60-
MODULE_REQ_VERSION="${mod#*@}"
61+
MODULE_REQ_VERSION="${mod##*@}"
62+
elif [[ "$mod" == *"@"* ]]; then
63+
# Unscoped package with version, e.g. yarn@latest
64+
MODULE_NAME="${mod%@*}"
65+
MODULE_REQ_VERSION="${mod##*@}"
6166
else
67+
# No version specified
6268
MODULE_NAME="$mod"
6369
MODULE_REQ_VERSION="latest"
6470
fi
@@ -101,35 +107,56 @@ install_postgresql() {
101107
DISTRO="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
102108

103109
if command -v psql >/dev/null; then
104-
CURRENT_PG_VERSION="$(psql -V | grep -oP '\s\K[0-9]+(?=\.)')"
105-
if [[ "$CURRENT_PG_VERSION" != "$PG_VERSION" ]]; then
106-
msg_info "PostgreSQL Version $CURRENT_PG_VERSION found, replacing with $PG_VERSION"
107-
NEED_PG_INSTALL=true
110+
CURRENT_PG_VERSION="$(psql -V | awk '{print $3}' | cut -d. -f1)"
111+
if [[ "$CURRENT_PG_VERSION" == "$PG_VERSION" ]]; then
112+
msg_ok "PostgreSQL $PG_VERSION is already installed"
113+
return
108114
fi
115+
msg_info "Detected PostgreSQL $CURRENT_PG_VERSION, preparing upgrade to $PG_VERSION"
116+
NEED_PG_INSTALL=true
109117
else
110-
msg_info "PostgreSQL not found, installing version $PG_VERSION"
118+
msg_info "PostgreSQL not installed, proceeding with fresh install of $PG_VERSION"
111119
NEED_PG_INSTALL=true
112120
fi
113121

114122
if [[ "$NEED_PG_INSTALL" == true ]]; then
115-
msg_info "Stopping PostgreSQL if running"
116-
systemctl stop postgresql >/dev/null 2>&1 || true
123+
if [[ -n "$CURRENT_PG_VERSION" ]]; then
124+
msg_info "Dumping all PostgreSQL data from version $CURRENT_PG_VERSION"
125+
su - postgres -c "pg_dumpall > /var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql"
126+
fi
117127

118-
msg_info "Removing conflicting PostgreSQL packages"
119-
$STD apt-get purge -y "postgresql*"
128+
msg_info "Stopping PostgreSQL service"
129+
systemctl stop postgresql || true
130+
131+
msg_info "Removing pgdg repo and old GPG key"
120132
rm -f /etc/apt/sources.list.d/pgdg.list /etc/apt/trusted.gpg.d/postgresql.gpg
121133

122-
msg_info "Setting up PostgreSQL Repository"
134+
msg_info "Adding PostgreSQL PGDG repository"
123135
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc |
124136
gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg
125137

126138
echo "deb https://apt.postgresql.org/pub/repos/apt ${DISTRO}-pgdg main" \
127139
>/etc/apt/sources.list.d/pgdg.list
128140

129141
$STD apt-get update
130-
$STD apt-get install -y "postgresql-${PG_VERSION}"
131142

132-
msg_ok "Installed PostgreSQL ${PG_VERSION}"
143+
msg_info "Installing PostgreSQL $PG_VERSION"
144+
$STD apt-get install -y "postgresql-${PG_VERSION}" "postgresql-client-${PG_VERSION}"
145+
146+
if [[ -n "$CURRENT_PG_VERSION" ]]; then
147+
$STD msg_info "Removing old PostgreSQL $CURRENT_PG_VERSION packages"
148+
$STD apt-get purge -y "postgresql-${CURRENT_PG_VERSION}" "postgresql-client-${CURRENT_PG_VERSION}" || true
149+
fi
150+
151+
$STD msg_info "Starting PostgreSQL $PG_VERSION"
152+
systemctl enable --now postgresql
153+
154+
if [[ -n "$CURRENT_PG_VERSION" ]]; then
155+
$STD msg_info "Restoring dumped data"
156+
su - postgres -c "psql < /var/lib/postgresql/backup_$(date +%F)_v${CURRENT_PG_VERSION}.sql"
157+
fi
158+
159+
msg_ok "PostgreSQL $PG_VERSION installed"
133160
fi
134161
}
135162

@@ -245,7 +272,11 @@ install_php() {
245272
COMBINED_MODULES=$(echo "$COMBINED_MODULES" | tr ',' '\n' | awk '!seen[$0]++' | paste -sd, -)
246273

247274
local CURRENT_PHP
248-
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
275+
if command -v php >/dev/null 2>&1; then
276+
CURRENT_PHP=$(php -v 2>/dev/null | awk '/^PHP/{print $2}' | cut -d. -f1,2)
277+
else
278+
CURRENT_PHP=""
279+
fi
249280

250281
if [[ "$CURRENT_PHP" != "$PHP_VERSION" ]]; then
251282
$STD echo "PHP $CURRENT_PHP detected, migrating to PHP $PHP_VERSION"
@@ -352,7 +383,7 @@ install_go() {
352383
msg_error "Could not determine latest Go version"
353384
return 1
354385
fi
355-
msg_info "Detected latest Go version: $GO_VERSION"
386+
$STD msg_info "Detected latest Go version: $GO_VERSION"
356387
fi
357388

358389
local GO_BIN="/usr/local/bin/go"
@@ -362,10 +393,10 @@ install_go() {
362393
local CURRENT_VERSION
363394
CURRENT_VERSION=$("$GO_BIN" version | awk '{print $3}' | sed 's/go//')
364395
if [[ "$CURRENT_VERSION" == "$GO_VERSION" ]]; then
365-
msg_ok "Go $GO_VERSION already installed"
396+
$STD msg_ok "Go $GO_VERSION already installed"
366397
return 0
367398
else
368-
msg_info "Go $CURRENT_VERSION found, upgrading to $GO_VERSION"
399+
$STD msg_info "Go $CURRENT_VERSION found, upgrading to $GO_VERSION"
369400
rm -rf "$GO_INSTALL_DIR"
370401
fi
371402
else
@@ -537,7 +568,7 @@ fetch_and_deploy_gh_release() {
537568
fi
538569

539570
tag=$(echo "$api_response" | jq -r '.tag_name // .name // empty')
540-
[[ "$tag" =~ ^v[0-9] ]] && tag="${tag:1}"
571+
version="${tag#v}"
541572

542573
if [[ -z "$tag" ]]; then
543574
$STD msg_info "Empty tag received, retrying...\n"
@@ -555,12 +586,11 @@ fetch_and_deploy_gh_release() {
555586
fi
556587

557588
# Version comparison (if we already have this version, skip)
558-
if [[ "$current_version" == "$tag" ]]; then
559-
$STD msg_info "Already running the latest version ($tag). Skipping update."
589+
if [[ "$current_version" == "$version" ]]; then
590+
$STD msg_info "Already running the latest version ($version). Skipping update."
560591
return 0
561592
fi
562593

563-
local version="$tag"
564594
local base_url="https://github.com/$repo/releases/download/v$tag"
565595
local tmpdir
566596
tmpdir=$(mktemp -d) || return 1

0 commit comments

Comments
 (0)