Files
Piperless/build.sh
T
2026-05-11 21:57:24 +02:00

92 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# Piperless WordPress Plugin — Build Script
#
# Creates a clean distribution ZIP file ready for WordPress installation.
#
# Usage:
# chmod +x build.sh
# ./build.sh
#
set -euo pipefail
PLUGIN_SLUG="piperless"
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# ── Read version from plugin header ───────────────────────────────────────
VERSION=$( grep -oP '^\s*\*\s*Version:\s*\K[0-9.]+' "${SCRIPT_DIR}/${PLUGIN_SLUG}.php" | head -1 )
if [[ -z "${VERSION}" ]]; then
echo "Error: could not determine plugin version from ${PLUGIN_SLUG}.php"
exit 1
fi
BUILD_DIR="${SCRIPT_DIR}/build"
STAGING="${BUILD_DIR}/${PLUGIN_SLUG}"
ZIP_FILE="${SCRIPT_DIR}/${PLUGIN_SLUG}-${VERSION}.zip"
echo "=== Piperless Build Script ==="
echo "Version: ${VERSION}"
echo "Output: ${ZIP_FILE}"
echo ""
# ── Clean previous build ──────────────────────────────────────────────────
rm -rf "${BUILD_DIR}" "${ZIP_FILE}"
mkdir -p "${STAGING}"
# ── Copy plugin files ─────────────────────────────────────────────────────
echo "Copying files…"
# Files to include.
INCLUDE=(
"${PLUGIN_SLUG}.php"
"uninstall.php"
"index.php"
"includes"
"assets"
"languages"
)
for item in "${INCLUDE[@]}"; do
src="${SCRIPT_DIR}/${item}"
if [[ -e "${src}" ]]; then
cp -r "${src}" "${STAGING}/"
else
echo " Warning: ${item} not found, skipping."
fi
done
# ── Remove development files ──────────────────────────────────────────────
echo "Cleaning development files…"
find "${STAGING}" -name '.DS_Store' -delete
find "${STAGING}" -name 'Thumbs.db' -delete
find "${STAGING}" -name '*.map' -delete
# ── Create ZIP ────────────────────────────────────────────────────────────
echo "Creating ZIP archive…"
cd "${BUILD_DIR}"
zip -r "${ZIP_FILE}" "${PLUGIN_SLUG}" > /dev/null
cd "${SCRIPT_DIR}"
# ── Verify ────────────────────────────────────────────────────────────────
ZIP_SIZE=$( du -h "${ZIP_FILE}" | cut -f1 )
PLUGIN_FILE="${STAGING}/${PLUGIN_SLUG}.php"
if [[ -f "${ZIP_FILE}" ]]; then
echo ""
echo "=== Build Complete ==="
echo " File: ${ZIP_FILE}"
echo " Size: ${ZIP_SIZE}"
echo " Files included:"
unzip -l "${ZIP_FILE}" | tail -n +4 | head -n -2
else
echo "Error: ZIP file was not created."
exit 1
fi
# ── Clean staging (keep the zip) ──────────────────────────────────────────
rm -rf "${BUILD_DIR}"
echo ""
echo "Done. Install ${ZIP_FILE} via WordPress Admin → Plugins → Add New → Upload."