From fa07473779738354c43c06bc880cf0c28e88d160 Mon Sep 17 00:00:00 2001
From: weru <fromweru@gmail.com>
Date: Tue, 04 Nov 2025 17:06:28 +0000
Subject: [PATCH] add cms install script

---
 install-tina-cms.sh                              |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 exampleSite/content/docs/compose/use-tina-cms.md |    2 
 2 files changed, 115 insertions(+), 1 deletions(-)

diff --git a/exampleSite/content/docs/compose/use-tina-cms.md b/exampleSite/content/docs/compose/use-tina-cms.md
index f39219a..adbf0d7 100644
--- a/exampleSite/content/docs/compose/use-tina-cms.md
+++ b/exampleSite/content/docs/compose/use-tina-cms.md
@@ -13,7 +13,7 @@
 1. Check the root of your site. If you do not have a `tina` folder. Download it using this command. 
 
     ```
-    curl -L https://github.com/onweru/compose/archive/refs/heads/master.zip -o cms.zip && unzip cms.zip "compose-master/exampleSite/tina/*" -d . && rm cms.zip
+    curl -fsSL https://raw.githubusercontent.com/onweru/compose/master/install-tina-cms.sh | bash
     ```
 
     {{< tip >}}
diff --git a/install-tina-cms.sh b/install-tina-cms.sh
new file mode 100644
index 0000000..b1ee544
--- /dev/null
+++ b/install-tina-cms.sh
@@ -0,0 +1,114 @@
+#!/usr/bin/env bash
+# =============================================================================
+# install-tina-cms.sh
+# Downloads and extracts onweru/compose (master) and sets up tina + config
+# =============================================================================
+
+set -euo pipefail  # Exit on error, undefined var, pipe failure
+IFS=$'\n\t'        # Safer word splitting
+
+# -------------------------------
+# Configuration
+# -------------------------------
+REPO_URL="https://github.com/onweru/compose/archive/refs/heads/master.zip"
+ZIP_FILE="cms.zip"
+EXTRACT_DIR="cms"
+TEMP_DIR="temp_$(date +%s)_$$"  # Unique temp dir
+TARGET_DIR="./cms"
+EXAMPLE_SITE="compose-master/exampleSite"
+
+# -------------------------------
+# Helper: Print with color
+# -------------------------------
+log()    { echo -e "\033[1;32m[+]\033[0m $*"; }
+warn()   { echo -e "\033[1;33m[!]\033[0m $*" >&2; }
+error()  { echo -e "\033[1;31m[ERROR]\033[0m $*" >&2; }
+die()    { error "$1"; exit 1; }
+
+# -------------------------------
+# Cleanup on exit (success or failure)
+# -------------------------------
+cleanup() {
+  [[ -f "$ZIP_FILE" ]] && rm -f "$ZIP_FILE"
+  [[ -d "$TEMP_DIR" ]] && rm -rf "$TEMP_DIR"
+  [[ -d "$TARGET_DIR" ]] && [[ ! -L "$TARGET_DIR" ]] && rm -rf "$TARGET_DIR"
+}
+trap cleanup EXIT
+
+# -------------------------------
+# Step 1: Download ZIP
+# -------------------------------
+log "Downloading $REPO_URL..."
+if ! curl -L --fail --progress-bar "$REPO_URL" -o "$ZIP_FILE"; then
+  die "Failed to download archive. Check internet or URL."
+fi
+
+# -------------------------------
+# Step 2: Extract only exampleSite
+# -------------------------------
+log "Extracting exampleSite from archive..."
+mkdir -p "$TARGET_DIR"
+
+if ! unzip -q "$ZIP_FILE" "$EXAMPLE_SITE/*" -d "$TARGET_DIR"; then
+  die "Failed to extract '$EXAMPLE_SITE/*' from $ZIP_FILE"
+fi
+
+# Verify extraction
+if [[ ! -d "$TARGET_DIR/$EXAMPLE_SITE" ]]; then
+  die "Expected directory '$TARGET_DIR/$EXAMPLE_SITE' not found after extraction"
+fi
+
+# -------------------------------
+# Step 3: Create temp dir and move files (including hidden)
+# -------------------------------
+log "Moving exampleSite contents to temp directory..."
+mkdir -p "$TEMP_DIR"
+
+# Use safe pattern to include hidden files but exclude . and ..
+mv "$TARGET_DIR/$EXAMPLE_SITE/"*     "$TEMP_DIR/" 2>/dev/null || true
+mv "$TARGET_DIR/$EXAMPLE_SITE/".[!.]* "$TEMP_DIR/" 2>/dev/null || true
+mv "$TARGET_DIR/$EXAMPLE_SITE/.git"* "$TEMP_DIR/" 2>/dev/null || true  # in case .git exists
+
+# -------------------------------
+# Step 4: Move required files to project root
+# -------------------------------
+log "Installing tina/, package.json, and .env..."
+
+[[ -d "$TEMP_DIR/tina" ]] || die "Missing 'tina/' directory in exampleSite"
+[[ -f "$TEMP_DIR/package.json" ]] || die "Missing 'package.json'"
+[[ -f "$TEMP_DIR/.env" ]] || die "Missing '.env' file"
+
+mv "$TEMP_DIR/tina" ./ || die "Failed to move tina/"
+mv "$TEMP_DIR/package.json" ./ || die "Failed to move package.json"
+mv "$TEMP_DIR/.env" ./ || die "Failed to move .env"
+
+# -------------------------------
+# Step 5: Final cleanup
+# -------------------------------
+log "Cleaning up..."
+rm -rf "$TARGET_DIR"  # Already trapped, but explicit
+rm -f "$ZIP_FILE"
+
+# -------------------------------
+# Success!
+# -------------------------------
+log "Setup complete!"
+log "   - tina/ → ./tina/"
+log "   - package.json → ./package.json"
+log "   - .env → ./.env"
+log ""
+log "Next steps: (use bun, npm, pnpm or yarn)"
+log "   bun install"
+log "   update .env file contents"
+log "   bun run dev"
+
+# curl -L https://github.com/onweru/compose/archive/refs/heads/master.zip -o cms.zip
+# unzip cms.zip "compose-master/exampleSite/*" -d ./cms
+# mkdir temp
+# mv cms/compose-master/exampleSite/* cms/compose-master/exampleSite/.* temp
+# rm -rf cms
+# mv temp/tina tina
+# mv temp/package.json package.json
+# mv temp/.env .env
+# rm -rf temp
+# rm cms.zip
\ No newline at end of file

--
Gitblit v1.10.0