-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild_package.sh
More file actions
executable file
·90 lines (76 loc) · 3.97 KB
/
build_package.sh
File metadata and controls
executable file
·90 lines (76 loc) · 3.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
#
# Build script for Atomic Joomla Package
# Produces: pkg_atomic_VERSION.zip (package with template + sample data plugin)
# tpl_atomic_VERSION.zip (standalone template)
# plg_sampledata_atomic_VERSION.zip (standalone plugin)
#
# Usage: bash build_package.sh
#
set -e
# ── Paths ──────────────────────────────────────────────────────────
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
TPL_SRC="$SCRIPT_DIR/tpl_atomic"
PLG_SRC="$SCRIPT_DIR/plg_sampledata_atomic"
PKG_SRC="$SCRIPT_DIR/pkg_atomic"
OUT_DIR="$SCRIPT_DIR/ZIP"
# ── Versions (read from XML manifests) ─────────────────────────────
TPL_VERSION=$(sed -n 's/.*<version>\([^<]*\)<\/version>.*/\1/p' "$TPL_SRC/templateDetails.xml" | head -1)
PLG_VERSION=$(sed -n 's/.*<version>\([^<]*\)<\/version>.*/\1/p' "$PLG_SRC/atomic.xml" | head -1)
PKG_VERSION=$(sed -n 's/.*<version>\([^<]*\)<\/version>.*/\1/p' "$PKG_SRC/pkg_atomic.xml" | head -1)
# ── Common zip exclusions ──────────────────────────────────────────
EXCLUDES=(-x "*.DS_Store" -x "__MACOSX/*" -x ".git/*")
# ── Clean .DS_Store files from source directories ──────────────────
echo "Cleaning .DS_Store files..."
find "$TPL_SRC" "$PLG_SRC" "$PKG_SRC" -name ".DS_Store" -delete 2>/dev/null || true
# ── Create output directory ────────────────────────────────────────
mkdir -p "$OUT_DIR"
# ── Temp workspace ─────────────────────────────────────────────────
WORK_DIR=$(mktemp -d)
trap 'rm -rf "$WORK_DIR"' EXIT
echo "========================================"
echo " Atomic Package Builder"
echo "========================================"
echo " Template version : $TPL_VERSION"
echo " Plugin version : $PLG_VERSION"
echo " Package version : $PKG_VERSION"
echo "----------------------------------------"
# ── 1. Build standalone template ZIP ───────────────────────────────
echo ""
echo "[1/3] Building standalone template ZIP..."
TPL_ZIP="$OUT_DIR/tpl_atomic_${TPL_VERSION}.zip"
rm -f "$TPL_ZIP"
(cd "$TPL_SRC" && zip -r "$TPL_ZIP" . "${EXCLUDES[@]}" -q)
echo " -> $TPL_ZIP"
# ── 2. Build plugin ZIP ───────────────────────────────────────────
echo ""
echo "[2/3] Building sample data plugin ZIP..."
PLG_ZIP="$OUT_DIR/plg_sampledata_atomic_${PLG_VERSION}.zip"
rm -f "$PLG_ZIP"
(cd "$PLG_SRC" && zip -r "$PLG_ZIP" . "${EXCLUDES[@]}" -q)
echo " -> $PLG_ZIP"
# ── 3. Assemble package ZIP ───────────────────────────────────────
echo ""
echo "[3/3] Assembling package ZIP..."
# Create package structure in temp dir
mkdir -p "$WORK_DIR/packages"
cp "$PKG_SRC/pkg_atomic.xml" "$WORK_DIR/"
cp "$TPL_ZIP" "$WORK_DIR/packages/tpl_atomic.zip"
cp "$PLG_ZIP" "$WORK_DIR/packages/plg_sampledata_atomic.zip"
PKG_ZIP="$OUT_DIR/pkg_atomic_${PKG_VERSION}.zip"
rm -f "$PKG_ZIP"
(cd "$WORK_DIR" && zip -r "$PKG_ZIP" . "${EXCLUDES[@]}" -q)
echo " -> $PKG_ZIP"
# ── Summary ────────────────────────────────────────────────────────
echo ""
echo "========================================"
echo " Build complete!"
echo "========================================"
echo ""
echo " Package (install this):"
echo " $PKG_ZIP"
echo ""
echo " Standalone ZIPs (also in $OUT_DIR):"
echo " tpl_atomic_${TPL_VERSION}.zip"
echo " plg_sampledata_atomic_${PLG_VERSION}.zip"
echo ""