had dev <nome_projeto>
had dev <nome_pasta>/<nome_projeto>
- Pasta aonde busca os projetos:
/home/projetos/magento/
/home/projetos/magento/cloud/
- Arquivo de log que ele abre por padrão
/var/log/apache2/<nome_projeto>-error.log
had php 7.1
had debug on
had dip database_db_1
had definer dump-file.[sql|gz] dbname
- Utiliza regex, portanto constumo informar apenas o Vendor.
had modules '<nome_modulo>'
had show helper
- XDEBUG
- PHP
- VSCODE
- GUAKE
- DOCKER
- APACHE2
Just copy the code and refresh your source to start using.
function had {
case $1 in
# Nos dumps do Magento 2 ele cria os triggers com o DEFINER sendo o usuario do banco remoto
# quando localmente tentamos executar alguma operacao que chame esse trigger ele da erro
# ja que o DEFINER nao existe localmente
'definer')
if [ $# -eq 3 ]; then
changeDefiner $2 $3
else
echo "=[ Parameters ]===============================================";
echo " Please, inform the dumpfile and database ";
echo "=[ Examplo ]==================================================";
echo " had definer {dumpfile} {database} ";
fi
;;
## list ip of container specific
'dip')
if [ $# -eq 2 ]; then
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $2;
else
echo "=[ Parameters ]===============================================";
echo " Please, inform the container name ";
fi
;;
## control php version
'php')
if [ $# -eq 2 ]; then
changePHPVersion $2;
else
echo "=[ Parameters ]===============================================";
echo " Please, inform the version number ";
fi
;;
## control xdebug enable or disable with version
'debug')
if [ $# -eq 2 ]; then
controlXdebug $2;
else
echo "=[ Parameters ]===============================================";
echo " Please, inform ON or OFF ";
fi
;;
## dev mode init
'dev')
if [ $# -eq 2 ]; then
devModeInit $2;
else
echo "=[ Parameters ]===============================================";
echo " Please, inform ON or OFF ";
fi
;;
## grep modules
'modules')
if [ $# -eq 2 ]; then
devModulesStatus $2;
else
echo "=[ Parameters ]===============================================";
echo " Please, inform module (string, regex) ex.: *Magento* ";
fi
;;
## show helper
*) echo "=[ Info ]=====================================================";
echo "Use $0 command ";
echo "=[ Parameters ]===============================================";
echo " dip : Informe o nome do container. ex.: database_db_1 ";
echo " php : Informe a versão do PHP ex.: 7.2 ";
echo " debug : Informe se deseja ativar (on) ou desativar (off) ";
echo "=[ Examplo ]==================================================";
echo " -> had php 7.1 ";
echo " -> had debug on ";
echo " -> had dip database_db_1 ";
echo " -> had definer dump-file.[sql|gz] dbname ";
;;
esac
}
function devModulesStatus {
bin/magento module:status | grep $1"\|modules:"
}
function changeDefiner {
if [[ $1 == *".gz"* ]]; then
cmd="zcat"
else
cmd="cat"
fi
$cmd $1 | sed 's|DEFINER=[^*]*\*|\*|g' | mysql -uroot -proot $2
}
function devModeInit {
DEV=$1;
if [ -d "/home/projetos/magento/$DEV" ]; then
echo "Abrindo o projeto $DEV ";
openProjec $DEV;
else
echo "Projeto não encontrado, segue a lista de projetos existentes: ";
for proj in /home/projetos/magento/*; do
projetos=${proj##*/};
echo $projetos;
if [ "$projetos" = "cloud" ]; then # && [ -d "/home/projetos/magento/cloud/*" ]; then
for projCloud in /home/projetos/magento/cloud/*; do
echo " "${projCloud##*/};
done
fi
done
echo "Informe o projeto novamente: ";
read NEWCHOICE;
devModeInit $NEWCHOICE;
fi
}
function openProjec {
# TODO - validar se existe:
# - vscode
# - guake
# - docker para startar
DEV=$1;
code /home/projetos/magento/$DEV;
(cd /home/projetos/docker/compose/database; bin/start);
guake -n .;
guake -r $DEV -e "cd /home/projetos/magento/$DEV";
logDir=/var/log/apache2/error.log;
if [ -f "/var/log/apache2/${DEV##*/}-error.log" ]; then
logDir=/var/log/apache2/${DEV##*/}-error.log;
fi
guake -n .;
guake -r "error log" -e "tail -f $logDir";
}
function changePHPVersion {
echo " You changing php version to $1 ";
phpVersion="php"$1;
listVersions=`ls /usr/bin/php*`;
echo $phpVersion;
if [ -f "/usr/bin/$phpVersion" ]; then
for file in /usr/bin/php[0-9]*; do
phpVersionExist=$(echo "${file##*/}");
sudo a2dismod $phpVersionExist;
done
sudo a2enmod $phpVersion;
sudo update-alternatives --set php /usr/bin/$phpVersion;
controlWebServer;
echo " Current version: $( php -v | head -n 1 | cut -c-7 ) ";
else
echo " The php ($phpVersion) version not exist bin FILE ";
fi
}
function controlXdebug {
echo " You changing XDEBUG to $1 ";
case $1 in
'on')
sudo sed -i "s/;zend_extension=xdebug.so/zend_extension=xdebug.so/g" /etc/php/*/mods-available/xdebug.ini
sudo sed -i "s/;xdebug.remote_enable=true/xdebug.remote_enable=true/g" /etc/php/*/mods-available/xdebug.ini
sudo sed -i "s/;xdebug.remote_autostart=true/xdebug.remote_autostart=true/g" /etc/php/*/mods-available/xdebug.ini
;;
*)
sudo sed -i "s/zend_extension=xdebug.so/;zend_extension=xdebug.so/g" /etc/php/*/mods-available/xdebug.ini
sudo sed -i "s/xdebug.remote_enable=true/;xdebug.remote_enable=true/g" /etc/php/*/mods-available/xdebug.ini
sudo sed -i "s/xdebug.remote_autostart=true/;xdebug.remote_autostart=true/g" /etc/php/*/mods-available/xdebug.ini
;;
esac
controlWebServer;
cat /etc/php/*/mods-available/xdebug.ini;
}
function controlWebServer {
sudo service apache2 restart;
}