Restore to commit 74e578279624c6045ca440a3459ebfa1f8d54191
This commit is contained in:
192
scripts/README.md
Normal file
192
scripts/README.md
Normal file
@@ -0,0 +1,192 @@
|
||||
# Utility Scripts
|
||||
|
||||
This directory contains utility scripts for managing the Shopify AI App Builder.
|
||||
|
||||
## Environment File Scripts
|
||||
|
||||
### validate-env.sh
|
||||
|
||||
Validates `.env` files for common issues including invisible Unicode characters.
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
./scripts/validate-env.sh [env-file-path]
|
||||
|
||||
# Examples:
|
||||
./scripts/validate-env.sh .env
|
||||
./scripts/validate-env.sh /path/to/custom.env
|
||||
```
|
||||
|
||||
**What it checks:**
|
||||
- U+200E (Left-to-Right Mark) - the most common issue
|
||||
- U+200F (Right-to-Left Mark)
|
||||
- U+200B (Zero Width Space)
|
||||
- U+FEFF (Byte Order Mark / BOM)
|
||||
- Other directional formatting characters (U+202A-202E)
|
||||
- Windows line endings (CRLF)
|
||||
- Trailing spaces in variable definitions
|
||||
- Spaces in variable names
|
||||
|
||||
**Exit codes:**
|
||||
- `0` - File is clean
|
||||
- `1` - Issues found
|
||||
|
||||
### clean-env.sh
|
||||
|
||||
Removes invisible Unicode characters from `.env` files.
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
./scripts/clean-env.sh [env-file-path]
|
||||
|
||||
# Examples:
|
||||
./scripts/clean-env.sh .env
|
||||
./scripts/clean-env.sh /path/to/custom.env
|
||||
```
|
||||
|
||||
**What it does:**
|
||||
- Creates a backup of the original file (`.backup` extension)
|
||||
- Removes all invisible Unicode characters
|
||||
- Preserves all valid content
|
||||
|
||||
**Always creates a backup** before modifying the file, so you can restore if needed:
|
||||
```bash
|
||||
mv .env.backup .env
|
||||
```
|
||||
|
||||
## Typical Workflow
|
||||
|
||||
When you encounter Portainer deployment errors with invisible characters:
|
||||
|
||||
```bash
|
||||
# 1. Validate your env file
|
||||
./scripts/validate-env.sh .env
|
||||
|
||||
# 2. If issues found, clean it
|
||||
./scripts/clean-env.sh .env
|
||||
|
||||
# 3. Verify it's fixed
|
||||
./scripts/validate-env.sh .env
|
||||
|
||||
# 4. Deploy to Portainer
|
||||
```
|
||||
|
||||
## Other Scripts
|
||||
|
||||
### check-duplicate-classes.php
|
||||
|
||||
Comprehensive PHP/WordPress Plugin Static Analyzer that detects runtime errors, duplicate declarations, missing dependencies, and code issues. Optimized for minimal memory usage via streaming token parsing.
|
||||
|
||||
**Usage:**
|
||||
```bash
|
||||
php scripts/check-duplicate-classes.php /path/to/plugin
|
||||
php scripts/check-duplicate-classes.php /path/to/plugin --verbose
|
||||
php scripts/check-duplicate-classes.php /path/to/plugin --quiet
|
||||
php scripts/check-duplicate-classes.php /path/to/plugin --strict
|
||||
```
|
||||
|
||||
**Options:**
|
||||
- `--verbose` - Show detailed output and statistics
|
||||
- `--strict` - Enable stricter checks (may have false positives)
|
||||
- `--quiet` - Suppress informational messages
|
||||
- `--no-cache` - Skip caching (useful for CI/CD)
|
||||
|
||||
**What it detects:**
|
||||
- Duplicate class, interface, trait, function, and constant declarations (prevents "Cannot redeclare" errors)
|
||||
- Missing include/require files
|
||||
- Usage of undefined classes (new, instanceof, extends, implements, catch)
|
||||
- **Undefined functions** - Calls to functions that don't exist in the codebase or PHP/WP core
|
||||
- **Early function calls** - Functions called before they are defined in the same file
|
||||
- **Potential undefined arrays** - Array accesses on variables that may not be initialized
|
||||
- **CSS overlap risks** - CSS patterns that may cause UI elements to overlap
|
||||
- Namespace-aware detection (prevents false positives across namespaces)
|
||||
|
||||
**CSS Overlap Detection:**
|
||||
The script analyzes CSS files for patterns that commonly cause overlapping UI elements:
|
||||
- Absolute positioned elements at z-index 0
|
||||
- Elements anchored to both top/bottom or left/right
|
||||
- Negative margins that can pull elements into overlapping positions
|
||||
|
||||
**Exit codes:**
|
||||
- `0` - No issues found
|
||||
- `1` - Issues detected
|
||||
|
||||
**Example output:**
|
||||
```
|
||||
Checking for undefined functions...
|
||||
✓ No undefined functions found
|
||||
|
||||
Checking for early function calls...
|
||||
EARLY FUNCTION CALL: 'my_function' called at line 15 but defined at line 45 in includes/helper.php
|
||||
...
|
||||
✓ No early function calls found
|
||||
|
||||
Checking for potential undefined arrays and array keys...
|
||||
POTENTIAL UNDEFINED ARRAY: '$options' accessed as array at functions.php:23
|
||||
This array may not be initialized before use.
|
||||
Consider using isset() or !empty() check before access.
|
||||
...
|
||||
|
||||
Checking for potential CSS overlaps...
|
||||
POTENTIAL CSS OVERLAP in admin/css/admin.css:156
|
||||
Reason: Negative margin (may cause overlap)
|
||||
Context: margin-left: -15px;...
|
||||
...
|
||||
|
||||
DUPLICATE CLASS: 'PCFB_Field_Icons' declared in 2 locations:
|
||||
admin/class-admin-helper.php:167
|
||||
admin/page-form-builder.php:206
|
||||
|
||||
MISSING CLASS/TYPE: 'Undefined_Class' used but not declared:
|
||||
admin/some-file.php:42 (new)
|
||||
|
||||
================================================================================
|
||||
VALIDATION SUMMARY
|
||||
================================================================================
|
||||
Runtime issues (duplicates, missing classes): FOUND
|
||||
Undefined functions: 0 found
|
||||
Early function calls: 1 found
|
||||
Potential undefined arrays: 1 found
|
||||
Potential CSS overlaps: 1 found
|
||||
|
||||
FAIL: Issues detected that should be reviewed
|
||||
```
|
||||
|
||||
### entrypoint.sh
|
||||
|
||||
Container entrypoint script that:
|
||||
- Sets up the environment
|
||||
- Starts the web server (port 4000)
|
||||
- Starts the terminal service (port 4001)
|
||||
|
||||
This script runs automatically when the Docker container starts. You don't need to run it manually.
|
||||
|
||||
### healthcheck.sh
|
||||
|
||||
Docker health check script that verifies:
|
||||
- The web server is responding on port 4000
|
||||
- The service is healthy
|
||||
|
||||
This is used by Docker to monitor container health. You don't need to run it manually.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Permission denied
|
||||
|
||||
If you get "Permission denied" errors:
|
||||
```bash
|
||||
chmod +x scripts/*.sh
|
||||
```
|
||||
|
||||
### Command not found
|
||||
|
||||
Make sure you're running from the project root:
|
||||
```bash
|
||||
cd /path/to/shopify-ai
|
||||
./scripts/validate-env.sh .env
|
||||
```
|
||||
|
||||
Or use full paths:
|
||||
```bash
|
||||
/path/to/shopify-ai/scripts/validate-env.sh /path/to/.env
|
||||
```
|
||||
Reference in New Issue
Block a user