# Easy WordPress Bootstrap (Windows + Herd)

PowerShell companion to the macOS bootstrap script. It provisions a full WordPress development site backed by Laravel Herd and DBngin (or any local MySQL/MariaDB server) with a single command.

## Included Files

- `wp-bootstrap.ps1` – main PowerShell script.
- `wp-cli.phar` – bundled WP-CLI used by the script when `wp` is not installed globally.
- `plugins.json` – default plugin manifest; copy/override per project if you need a different set.

## Prerequisites

- Windows 10/11 with PowerShell 7 (`pwsh`) recommended.
- [Laravel Herd for Windows](https://herd.laravel.com/) installed so PHP is available (the script auto-detects Herd’s `php.exe`).
- DBngin or another MySQL/MariaDB server running locally, with `mysql.exe` available in `PATH`.
- Git for cloning the starter theme.
- Composer and npm in `PATH` so theme dependencies can be installed and built (the script warns and skips if they are missing).

## First-Time Setup

1. Allow local PowerShell scripts (only needs to be done once for your profile):

   ```powershell
   Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
   ```

2. Copy the sample rc file and adjust values that should become your defaults:

   ```powershell
   Copy-Item ..\wp-bootstraprc.example $HOME\.wp-bootstraprc
   ```

3. Leave `wp-cli.phar` in the same folder as `wp-bootstrap.ps1` (or update the `WP_CLI_PHAR` entry in your rc file to point elsewhere).

## Running a Bootstrap

From this directory, run:

```powershell
pwsh -File .\wp-bootstrap.ps1 -ProjectName "Client Site"
```

Optional parameters (all may also be supplied via `~\.wp-bootstraprc`):

- `-AdminUser`
- `-AdminEmail`
- `-ThemeStarterRepo`
- `-HerdWorkspace`
- `-LocalTld`
- `-MysqlHost`
- `-MysqlPort`
- `-MysqlRootUser`
- `-MysqlRootPass`

Omit parameters to fall back to your rc defaults. The script prints the detected configuration before it runs and exits early if required inputs are still missing.

## What the Script Does

- Creates a sanitized project folder in your Herd workspace and reports the local URL.
- Validates MySQL root credentials, creates the database/user, and confirms the new user can connect.
- Downloads WordPress core, generates `wp-config.php`, shuffles salts, sets permalinks, creates Home/News pages, and assigns them.
- Ensures a standard `.htaccess` exists for Apache-friendly rewrites.
- Clones the starter theme with shallow history, strips `.git`, reinitializes the repo, sets an optional remote, and activates the theme.
- Installs/activates plugins pulled from `plugins.json`, preferring a project-local manifest when present.
- Runs `composer install`, `npm install`, and `npm run build` inside the theme when those tools are available.
- Writes a `bootstrap-summary.txt` to the project root and logs plugin installs to `wp-content/plugin-bootstrap.log`.

## Plugin Manifest Details

`plugins.json` entries can be WordPress.org slugs or zip URLs (including private artifacts). Place a tailored `plugins.json` in your project directory to override the repository default for a single site.

## Troubleshooting

- **WP-CLI** – ensure `wp-cli.phar` lives beside the script or set `WP_CLI_PHAR` in `~\.wp-bootstraprc` to an absolute path.
- **MySQL connectivity** – verify the server is running, your root user matches the rc values, and Windows Firewall allows the connection.
- **Composer/NPM missing** – install them via Scoop/winget/Homebrew on Windows, or remove their commands from the script if you do not build theme assets.
- **Permissions** – confirm Herd has access to the project folder and that the execution policy change succeeded.

---
DIY-first policy: keep `plugins.json` lean; add heavier stacks only when the project truly needs them.
