upskill-event-manager/wordpress-dev/bin/deploy-plugin-via-cli.sh

126 lines
No EOL
4.7 KiB
Bash
Executable file

#!/bin/bash
# Deploy HVAC Community Events plugin via WP-CLI
# This script uses SSH to execute WP-CLI commands on the remote server
# It handles plugin installation, activation, and verification
# Get absolute path to this script's directory
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Navigate to wordpress-dev directory
cd "$(dirname "$SCRIPT_DIR")" || exit 1
# Load environment variables
ENV_FILE=".env"
if [ ! -f "$ENV_FILE" ]; then
echo "Error: .env file not found at: $ENV_FILE"
exit 1
fi
source "$ENV_FILE"
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m'
# Function to check if a command was successful
check_status() {
if [ $? -eq 0 ]; then
echo -e "${GREEN}$1${NC}"
return 0
else
echo -e "${RED}$1${NC}"
return 1
fi
}
# Function to run WP-CLI commands remotely
remote_wp_cli() {
COMMAND="$1"
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" "cd ${UPSKILL_STAGING_PATH} && wp $COMMAND --allow-root"
}
echo "=== Deploying HVAC Community Events Plugin via CLI ==="
echo "Remote host: ${UPSKILL_STAGING_IP} (upskill-staging.measurequick.com)"
echo "Remote user: ${UPSKILL_STAGING_SSH_USER}"
echo "WordPress path: ${UPSKILL_STAGING_PATH}"
echo "Plugin package: plugin-backups/hvac-community-events.zip"
echo "======================================================="
# Step 1: Check if plugin exists and deactivate it if it does
echo -e "\n${YELLOW}Checking if plugin is already installed...${NC}"
PLUGIN_STATUS=$(remote_wp_cli "plugin get hvac-community-events --field=status" 2>/dev/null)
if [ $? -eq 0 ]; then
echo -e "${YELLOW}Plugin is already installed with status: $PLUGIN_STATUS${NC}"
# Deactivate plugin if active
if [ "$PLUGIN_STATUS" = "active" ]; then
echo -e "${YELLOW}Deactivating existing plugin...${NC}"
remote_wp_cli "plugin deactivate hvac-community-events"
check_status "Plugin deactivated"
fi
# Make backup of existing plugin
echo -e "${YELLOW}Creating backup of existing plugin...${NC}"
BACKUP_DATE=$(date +%Y%m%d%H%M%S)
remote_wp_cli "plugin get hvac-community-events --field=path" | xargs -I {} sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" "cp -r {} {}.bak.$BACKUP_DATE"
check_status "Plugin backup created"
# Delete existing plugin
echo -e "${YELLOW}Removing existing plugin...${NC}"
remote_wp_cli "plugin delete hvac-community-events"
check_status "Existing plugin deleted"
else
echo -e "${YELLOW}Plugin not currently installed.${NC}"
fi
# Step 2: Upload plugin zip file
echo -e "\n${YELLOW}Uploading plugin package...${NC}"
sshpass -p "${UPSKILL_STAGING_PASS}" scp "plugin-backups/hvac-community-events.zip" "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}:${UPSKILL_STAGING_PATH}"
check_status "Plugin package uploaded"
# Step 3: Install plugin
echo -e "\n${YELLOW}Installing plugin...${NC}"
remote_wp_cli "plugin install ${UPSKILL_STAGING_PATH}/hvac-community-events.zip --force"
check_status "Plugin installed"
# Step 4: Activate plugin
echo -e "\n${YELLOW}Activating plugin...${NC}"
remote_wp_cli "plugin activate hvac-community-events"
check_status "Plugin activated"
# Step 5: Clean up
echo -e "\n${YELLOW}Cleaning up...${NC}"
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" "rm -f ${UPSKILL_STAGING_PATH}/hvac-community-events.zip"
check_status "Temporary files removed"
# Step 6: Verify installation
echo -e "\n${YELLOW}Verifying installation...${NC}"
PLUGIN_VERSION=$(remote_wp_cli "plugin get hvac-community-events --field=version")
check_status "Plugin installed with version: $PLUGIN_VERSION"
# Check if plugin roles are created
echo -e "\n${YELLOW}Checking plugin roles...${NC}"
ROLES=$(remote_wp_cli "role list --field=role")
if [[ $ROLES == *"hvac_trainer"* ]]; then
echo -e "${GREEN}✓ HVAC Trainer role exists${NC}"
else
echo -e "${RED}✗ HVAC Trainer role not found${NC}"
fi
# Step 7: Flush rewrite rules
echo -e "\n${YELLOW}Flushing rewrite rules...${NC}"
remote_wp_cli "rewrite flush --hard"
check_status "Rewrite rules flushed"
echo -e "\n${GREEN}Plugin deployment completed!${NC}"
echo "Plugin: hvac-community-events"
echo "Version: $PLUGIN_VERSION"
echo "Status: $(remote_wp_cli "plugin get hvac-community-events --field=status")"
echo -e "\nNext steps:"
echo "1. Set up test users with './bin/setup-staging-test-users.sh'"
echo "2. Create test data with './bin/create-comprehensive-test-data.sh'"
echo "3. Verify Zoho CRM integration with the verification guide"