mirror of
https://github.com/forkless/Piperless.git
synced 2026-08-16 00:46:38 +02:00
92 lines
3.1 KiB
Bash
Executable File
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."
|