chore: initial wp-boilerplate project
This commit is contained in:
63
scripts/post-create.sh
Executable file
63
scripts/post-create.sh
Executable file
@@ -0,0 +1,63 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
PROJECT=${PWD##*/}
|
||||
DB_NAME="wp_${PROJECT/-/_}"
|
||||
GIT_URL="https://gitea.websimple.com/wp-sites/${PROJECT}.git"
|
||||
GIT_ORIGIN="ssh://git@gitea.websimple.com:222/wp-sites/${PROJECT}.git"
|
||||
|
||||
# Portable in-place sed: use GNU sed's -i -e or BSD/macOS sed's -i '' -e
|
||||
sed_inplace() {
|
||||
local expr="$1"
|
||||
shift || return
|
||||
|
||||
# Detect macOS (Darwin) via uname -s; treat everything else as GNU-like sed
|
||||
local os
|
||||
os="$(uname -s 2>/dev/null || echo Unknown)"
|
||||
|
||||
for f in "$@"; do
|
||||
if [ "$os" = "Darwin" ]; then
|
||||
# macOS/BSD sed requires an explicit empty extension to avoid creating backups
|
||||
sed -i '' -e "$expr" "$f"
|
||||
else
|
||||
# GNU sed supports -i -e without creating backup files
|
||||
sed -i -e "$expr" "$f"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Rename project
|
||||
sed_inplace "s/wp-boilerplate/${PROJECT}/g" .cpanel.yml .gitignore composer.json
|
||||
|
||||
# Initialize git repository
|
||||
git init
|
||||
git remote add origin ${GIT_ORIGIN}
|
||||
git fetch origin || error_code=$?
|
||||
if [ "${error_code-0}" -eq 0 ]; then
|
||||
git checkout main -f
|
||||
rm -rf wp-content/mu-plugins/*
|
||||
rm -rf wp-content/plugins/*
|
||||
rm -rf wp-content/themes/*
|
||||
git reset --hard
|
||||
composer install
|
||||
else
|
||||
git remote remove origin
|
||||
git add -A
|
||||
git commit -am 'chore: initial wp-boilerplate project'
|
||||
fi
|
||||
|
||||
# Create database
|
||||
mysql -e "CREATE DATABASE IF NOT EXISTS ${DB_NAME}"
|
||||
|
||||
# Download / configure / install WordPress
|
||||
wp core download --force --skip-content
|
||||
wp core config --dbname=${DB_NAME}
|
||||
|
||||
# Require Composer vendor/autoload.php in wp-config.php
|
||||
VENDOR_AUTOLOAD="if ( file_exists( 'vendor/autoload.php' ) ) { require_once 'vendor/autoload.php'; }"
|
||||
if ! grep -Fq "${VENDOR_AUTOLOAD}" wp-config.php; then
|
||||
sed_inplace "2s|^|${VENDOR_AUTOLOAD}\n|" wp-config.php
|
||||
fi
|
||||
|
||||
# Done
|
||||
echo "Site ready at ${LOCAL_PROTOCOL-https}://${PROJECT}.${TLD-ledevsimple.ca}"
|
||||
Reference in New Issue
Block a user