ohmyzsh/plugins/magento2/magento2.plugin.zsh

165 lines
4.8 KiB
Bash

#!/usr/bin/env zsh
# Oh My Zsh plugin for Magento 2
# Basic settings and variables
export MAGENTO_ROOT=${MAGENTO_ROOT:-$(pwd)}
# Function to determine the Magento root directory
function _get_magento_root() {
local dir=$PWD
while [[ $dir != "/" ]]; do
if [[ -f "$dir/app/etc/env.php" || (-f "$dir/composer.json" && -d "$dir/vendor/magento") ]]; then
echo $dir
return 0
fi
dir=${dir:h}
done
echo $MAGENTO_ROOT
}
# Set Magento root
function mg-set-root() {
export MAGENTO_ROOT=$(pwd)
echo "Magento root set to: $MAGENTO_ROOT"
}
# Navigate to Magento root directory
function mg-cd() {
local root=$(_get_magento_root)
cd $root
echo "Changed to Magento directory: $root"
}
# Aliases for console commands
alias m2="php -d memory_limit=-1 bin/magento"
alias m2cc="m2 cache:clean"
alias m2cf="m2 cache:flush"
alias m2st="m2 setup:upgrade && m2 setup:di:compile && m2 setup:static-content:deploy -f"
alias m2setup="m2 setup:upgrade"
alias m2dicom="m2 setup:di:compile"
alias m2deploy="m2 setup:static-content:deploy -f"
alias m2mode="m2 deploy:mode:show"
alias m2dev="m2 deploy:mode:set developer"
alias m2prod="m2 deploy:mode:set production"
alias m2maint="m2 maintenance:status"
alias m2mainton="m2 maintenance:enable"
alias m2maintoff="m2 maintenance:disable"
alias m2module="m2 module:status"
alias m2mod="m2 module:status"
alias m2enable="m2 module:enable"
alias m2disable="m2 module:disable"
alias m2index="m2 indexer:status"
alias m2indexr="m2 indexer:reindex"
alias m2log="tail -f var/log/system.log"
alias m2elog="tail -f var/log/exception.log"
alias m2debug="tail -f var/log/debug.log"
# Function for enabling/disabling modules
function mg-module() {
if [[ $1 == "enable" && -n $2 ]]; then
m2 module:enable $2
elif [[ $1 == "disable" && -n $2 ]]; then
m2 module:disable $2
else
m2 module:status
fi
}
# Create administrator
function mg-admin-create() {
local username=${1:-"admin"}
local email=${2:-"admin@example.com"}
local firstname=${3:-"Admin"}
local lastname=${4:-"User"}
local password=${5:-"admin123"}
m2 admin:user:create --admin-user=$username --admin-password=$password --admin-email=$email --admin-firstname=$firstname --admin-lastname=$lastname
echo "Administrator created: $username ($email)"
}
# Change administrator password
function mg-admin-password() {
local username=${1:-"admin"}
local password=${2:-"admin123"}
m2 admin:user:unlock $username
m2 admin:user:create --admin-user=$username --admin-password=$password --admin-email="" --admin-firstname="" --admin-lastname="" --magento-init-params="--no-interaction"
echo "Password for $username changed to $password"
}
# Work with database
function mg-db-info() {
local root=$(_get_magento_root)
if [[ -f "$root/app/etc/env.php" ]]; then
php -r '
$env = include "'$root'/app/etc/env.php";
if (isset($env["db"]["connection"]["default"])) {
$db = $env["db"]["connection"]["default"];
echo "DB Host: " . $db["host"] . "\n";
echo "DB Name: " . $db["dbname"] . "\n";
echo "DB User: " . $db["username"] . "\n";
} else {
echo "Database configuration not found\n";
}
'
else
echo "Magento configuration file not found"
fi
}
# Deploy multilanguage static files
function mg-deploy-langs() {
local langs=${1:-"en_US"}
m2 setup:static-content:deploy -f $langs
}
# Quick system update (all in one command)
function mg-update() {
local root=$(_get_magento_root)
cd $root
echo "=== Starting Magento update ==="
echo "1. Clearing cache..."
m2 cache:flush
echo "2. Updating database..."
m2 setup:upgrade
echo "3. Compiling DI..."
m2 setup:di:compile
echo "4. Deploying static files..."
m2 setup:static-content:deploy -f
echo "5. Reindexing..."
m2 indexer:reindex
echo "=== Update completed ==="
}
# Function to check system status
function mg-status() {
local root=$(_get_magento_root)
cd $root
echo "=== Magento 2 Status ==="
echo "Working mode:"
m2 deploy:mode:show
echo "\nMaintenance status:"
m2 maintenance:status
echo "\nIndex status:"
m2 indexer:status
echo "\nCache status:"
m2 cache:status
echo "===================="
}
# Function for quick cleanup of temporary files
function mg-clean() {
local root=$(_get_magento_root)
cd $root
echo "Cleaning temporary files and cache..."
rm -rf var/cache/* var/page_cache/* var/view_preprocessed/* pub/static/frontend/* pub/static/adminhtml/* var/di/* generated/code/*
m2 cache:flush
echo "Cleanup completed."
}
# Command completion for Magento CLI commands
compdef '_arguments "1: :((cache\:"Cache operations" setup\:"Setup operations" module\:"Module operations" deploy\:"Deploy operations" indexer\:"Indexer operations" admin\:"Admin operations" dev\:"Dev operations" maintenance\:"Maintenance operations" config\:"Config operations"))"' m2