mirror of
https://github.com/forkless/Piperless.git
synced 2026-08-16 08:56:38 +02:00
Initial public commit
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
#!/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."
|
||||
Reference in New Issue
Block a user