From 61b7b967809b126c522f07e457260911523d633c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?=
<58952836+tremor021@users.noreply.github.com>
Date: Mon, 18 Aug 2025 08:22:09 +0200
Subject: [PATCH] Refactor (#6916)
---
ct/gomft.sh | 75 ++--------------------------------------
install/gomft-install.sh | 65 ++++------------------------------
2 files changed, 9 insertions(+), 131 deletions(-)
diff --git a/ct/gomft.sh b/ct/gomft.sh
index 365dbf7d3..3e46eda3c 100644
--- a/ct/gomft.sh
+++ b/ct/gomft.sh
@@ -28,83 +28,14 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
- if ! dpkg -l | grep -q "^ii.*build-essential"; then
- $STD apt-get install -y build-essential
- fi
- if [[ ! -f "/usr/bin/node" ]]; then
- mkdir -p /etc/apt/keyrings
- curl -fsSL "https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key" | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
- echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
- $STD apt-get update
- $STD apt-get install -y nodejs
- fi
+
RELEASE=$(curl -fsSL "https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest" | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
- if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
+ if [[ "${RELEASE}" != "$(cat ~/.gomft)" ]] || [[ ! -f ~/.gomft ]]; then
msg_info "Stopping $APP"
systemctl stop gomft
msg_ok "Stopped $APP"
- msg_info "Updating $APP to ${RELEASE}"
- if ! command -v git >/dev/null 2>&1; then
- $STD apt-get install -y git
- fi
- rm -f /opt/gomft/gomft
- temp_file=$(mktemp)
- curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
- tar -xzf "$temp_file"
- cp -rf "GoMFT-${RELEASE}"/* /opt/gomft/
- cd /opt/gomft
- $STD npm install
- $STD npm run build
- TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
- $STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
- # dirty hack to fix templ
- cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
-package search
-
-import (
- "context"
- "github.com/starfleetcptn/gomft/components/file_metadata"
- "github.com/starfleetcptn/gomft/components/file_metadata/list"
-)
-
-templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
-
-
- if len(data.Files) > 0 {
- @list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
- Files: data.Files,
- Page: data.Page,
- Limit: data.Limit,
- TotalCount: data.TotalCount,
- TotalPages: data.TotalPages,
- Filter: data.Filter,
- SortBy: data.SortBy,
- SortDir: data.SortDir,
- }, "/files/search/partial", "#search-results-container")
- } else {
-
-
-
No files found matching your search criteria.
-
- }
-
-}
-EOF
- $STD "$HOME"/go/bin/templ generate
- export CGO_ENABLED=1
- export GOOS=linux
- $STD go build -o gomft
- chmod +x /opt/gomft/gomft
- echo "${RELEASE}" >/opt/${APP}_version.txt
- msg_ok "Updated $APP to ${RELEASE}"
-
- msg_info "Cleaning Up"
- rm -f "$temp_file"
- rm -rf "$HOME/GoMFT-v.${RELEASE}/"
- msg_ok "Cleanup Complete"
+ fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
msg_info "Starting $APP"
systemctl start gomft
diff --git a/install/gomft-install.sh b/install/gomft-install.sh
index 1e6d2389a..1fa09a6b3 100644
--- a/install/gomft-install.sh
+++ b/install/gomft-install.sh
@@ -18,64 +18,13 @@ $STD apt-get install -y \
sqlite3 \
rclone \
tzdata \
- ca-certificates \
- build-essential \
- git
+ ca-certificates
msg_ok "Installed Dependencies"
-setup_go
-NODE_VERSION="22" setup_nodejs
+fetch_and_deploy_gh_release "gomft" "StarFleetCPTN/GoMFT" "singlefile" "latest" "/opt/gomft" "gomft*linux-amd64"
-msg_info "Setup ${APPLICATION} (Patience)"
-temp_file=$(mktemp)
-RELEASE=$(curl -fsSL https://api.github.com/repos/StarFleetCPTN/GoMFT/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
-curl -fsSL "https://github.com/StarFleetCPTN/GoMFT/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
-tar -xzf "$temp_file"
-mv GoMFT-"${RELEASE}"/ /opt/gomft
-cd /opt/gomft
-TEMPL_VERSION="$(awk '/github.com\/a-h\/templ/{print $2}' go.mod)"
-$STD go install github.com/a-h/templ/cmd/templ@${TEMPL_VERSION}
-cp /opt/gomft/components/file_metadata/search/file_metadata_search_content.templ{,.bak}
-# dirty hack to fix templ
-cat <<'EOF' >/opt/gomft/components/file_metadata/search/file_metadata_search_content.templ
-package search
-
-import (
- "context"
- "github.com/starfleetcptn/gomft/components/file_metadata"
- "github.com/starfleetcptn/gomft/components/file_metadata/list"
-)
-
-templ FileMetadataSearchContent(ctx context.Context, data file_metadata.FileMetadataSearchData) {
-
-
- if len(data.Files) > 0 {
- @list.FileMetadataListPartial(ctx, file_metadata.FileMetadataListData{
- Files: data.Files,
- Page: data.Page,
- Limit: data.Limit,
- TotalCount: data.TotalCount,
- TotalPages: data.TotalPages,
- Filter: data.Filter,
- SortBy: data.SortBy,
- SortDir: data.SortDir,
- }, "/files/search/partial", "#search-results-container")
- } else {
-
-
-
No files found matching your search criteria.
-
- }
-
-}
-EOF
-$STD "$HOME"/go/bin/templ generate
-$STD go build -o gomft main.go
-chmod +x /opt/gomft/gomft
+msg_info "Configuring ${APPLICATION}"
JWT_SECRET_KEY=$(openssl rand -base64 24 | tr -d '/+=')
-
cat </opt/gomft/.env
SERVER_ADDRESS=:8080
DATA_DIR=/opt/gomft/data/gomft
@@ -95,9 +44,7 @@ EMAIL_REQUIRE_AUTH=true
EMAIL_USERNAME=smtp_username
EMAIL_PASSWORD=smtp_password
EOF
-
-echo "${RELEASE}" >/opt/"${APPLICATION}"_version.txt
-msg_ok "Setup ${APPLICATION}"
+msg_ok "Configured ${APPLICATION}"
msg_info "Creating Service"
cat </etc/systemd/system/gomft.service
@@ -108,8 +55,9 @@ After=network.target
[Service]
Type=simple
User=root
+EnvironmentFile=/opt/gomft/.env
WorkingDirectory=/opt/gomft
-ExecStart=/opt/gomft/./gomft
+ExecStart=/opt/gomft/gomft
Restart=always
[Install]
@@ -122,7 +70,6 @@ motd_ssh
customize
msg_info "Cleaning up"
-rm -f "$temp_file"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"