#!/bin/bash
# This file is in the public domain.
# Installs phpcs

set -e

echo "Installing PHP_CodeSniffer..."
composer require --dev "squizlabs/php_codesniffer=*"

# Install Composer Installer plugin (required for automatic sniff registration)
composer require --dev "dealerdirect/phpcodesniffer-composer-installer:^1.0"

echo "==> Making sure composer plugin is allowed"
composer config allow-plugins.dealerdirect/phpcodesniffer-composer-installer true

# Install WordPress Coding Standards (WPCS)
echo "Installing WordPress Coding Standards..."
composer require --dev "wp-coding-standards/wpcs=*"

# Install WooCommerce Coding Standards
echo "Installing WooCommerce Coding Standards..."
composer require --dev "woocommerce/woocommerce-sniffs=*"
composer require --dev "phpcsstandards/phpcsutils:*"
composer require --dev "phpcompatibility/phpcompatibility-wp:*"

# Install PHPCompatibility
echo "Installing PHPCompatibility..."
composer require --dev "phpcompatibility/phpcompatibility-all"

# Set installed paths for PHPCS
echo "Setting PHPCS installed paths..."
./vendor/bin/phpcs --config-set installed_paths \
"vendor/wp-coding-standards/wpcs, \
vendor/woocommerce/woocommerce-sniffs, \
vendor/phpcompatibility/phpcompatibility-php73"

echo "==> Running composer install / update"
composer update --with-all-dependencies

echo "Verifying installed standards..."
./vendor/bin/phpcs -i

echo "Done! Your standards are installed and ready to use with phpcs.xml."
