/Magento-ModEx

ModEx.sh - Magento Module Extractor - Versao Beta

Primary LanguageShell

#Magento Module Extractor - ModEx#

    ____            _           _     __  __           _ _____
   |  _ \ _ __ ___ (_) ___  ___| |_  |  \/  | ___   __| | ____|_  __
   | |_) | '__/ _ \| |/ _ \/ __| __| | |\/| |/ _ \ / _` |  _| \ \/ /
   |  __/| | | (_) | |  __/ (__| |_  | |  | | (_) | (_| | |___ >  <
   |_|   |_|  \___// |\___|\___|\__| |_|  |_|\___/ \__,_|_____/_/\_\
                 |__/

Shell Script de extração de módulos instalados no Magento

objective: Extracts modules of magento apps
Versao Beta

oque é o ModEx?

Bem há tempos venho estudando sobre como desenvolver módulos de forma organizada para Magento. Nessas pesquisas eu encontrei o Modgit que é uma excelente ferramenta para instalação, remoção e update do módulo. Porém nunca havia encontrado uma forma de trabalho organizado para a parte de desenvolvimento de módulo no Magento.

Ou seja, basicamente se vc estiver desenvolvendo um módulo para Magento você usará uma instalação limpa e ao termina o desenvolvolvimento será necessário recolher todos os arquivos que compoem o módulo, para assim poder jogar o módulo no Github ou mesmo para posteriormente distribui-lo compactado posteriormente.

Bem nos estudos eu havia encontrado o seguinte post no Inchoo: http://inchoo.net/ecommerce/magento/how-to-setup-git-for-magento-extension-development/

Resumidamente ele explica uma forma que aparentemente seria mais fácil de trabalhar com o desenvolvimento no Magento, Ele explica como criar links simbólicos para todos os arquivos que compoem o módulo e assim tornar mais simples a maneira de envio do modulo para o github, mas mesmo assim essa tarefa apesar de automatizar um pouco o processo, ainda é uma maneira cansativa, pois é preciso ratrear todos os arquivos que se compoem o módulo e sempre manter os links simbólicos atualizados.

Ou seja, eu estava sem recursos para agilizar o desenvolvimento de módulos no Magento e estava determinado de achar uma solução que dê menos trabalho rs.

Pois bem navegando encontrei um outro post: http://diy.o.cmdcentral.co.za/kb/category/magento/dev_tutorials/

Emfim vi nele uma forma plausível para tornar a tarefa mais simples, pois ele utiliza o locate para buscar os arquivos que compoem o módulo. Porém ele se baseia em busca de urls e nome dos arquivos e com isso deixaria de fora outros arquivos espalhados em outras pastas no Magento.

Sendo mais detalhista verifiquei que seria possível aprimorar essa busca com o FIND, pois com o FIND seria capaz de buscar strings dentro dos arquivos. Ou seja, basta o desenvolvedor programar dentro de um padrão onde em cada arquivo que compoem o módulo ele incluiria o comentário com o nome do módulo, exemplo:

<!--Modulo_DeivisonArthur--> ou /* Modulo_DeivisonArthur */

EUREKA!!!! Bem com esses 2 tipos de comentários conseguimos colocar a string que vamos buscar dentro de todos os tipos de arquivos, desde: HTML, CSS, JS, PHP,... E assim também conseguiriamos buscar todos os arquivos que contenham a string buscada, independentemente de onde ela esteja em nossa instalação do Magento!

Como funciona?

Primeiramente precisa-se ter um padrão de desenvolvimento de módulo no Magento, para isso pode-se usar uma regra do PHPDocs que pede que seja incluso comentários descritivos em todos os arquivos que compoem o módulo, veja mais em:

Por exemplo:

/**
 *
 * @category   Inovarti
 * @package    Inovarti_GoogleAdwords
 * @author     Suporte <webmaster@inovarti.com>
 * @version 1.0 this version tag is parsed
 */

PS: Esse comentário precisa estar presente em todos os arquivos que compoem o módulo! Pois utilizaremos a parte setado no @package para realizar a busca pelos arquivos do módulo. Nesse caso seria a string: Inovarti_GoogleAdwords

PS: Não é necessário que seja seguido o padrão do PHPDoc, mas que pelo menos tenha um comentário com o nome do módulo em todos os arquivos.

Pos bem, com o comentário setado em todos os arquivos, podemos realizar a busca!

Executando a extração do módulo

1-Primeiramente entre em seu SSH e baixe o Shell Script ModEx.sh em sua raiz do Magento.

2-Dê a permissão de execução ao ModEx.sh com o comando: chmod +x ModEx.sh

3-Busque e extraia o módulo com o comando: ./modex.sh -s Inovarti_GoogleAdwords

PS: o atributo "s" indica que será passado uma string ao ModEx, pois irei implementar a extração em uma pasta ao invés de um arquivo compactado, com isso conseguimos entrar na pasta, ver se esta tudo certo e iniciar o processo de envio do módulo para o Github.

4-Se tudo der certo, vc verá que existe em sua raiz do Magento um arquivo .tar.gz, nesse caso criou o ModEx-Inovarti_GoogleAdwords.tar.gz

Caso queira ver como fica o arquivo compactado com o exemplo acima, acesse: http://lojamodelo.inovarti.com.br/ModEx-Inovarti_GoogleAdwords-22.tar.gz ou veja no source acima, pois anexei para uma melhor visualização de como fica o source ;)

Bem é isso pessoal, espero ter ajudado e contribuido para um desenvolvimento mais ágil e padronizado!

Observações

  • Não execute o ModEx em sua loja de produção! Utilize um ambiente seguro com linux e o magento default para testar!
  • Utilize somente para estudos, apesar de ter sido bastante estudado como formar o Shell Script, não homologamos por completo!
  • Não busca por strings padrões e genéricas como "magento", pois seu sistema pode entrar em loop.
  • Apesar de feito para extração de módulos Magento por conta de sua diversidade de pastas, sua lógica pode ser utilizada também em outros sistemas.
  • Não remova os créditos! Senão nós iremos te achar e falar publicamente sobre a remoção dos créditos! rs

Duvidas?

Caso tenha alguma dúvida ou comentário envie pelo comentário em: www.deivison.com.br

Creditos:

-> Deivison Arthur <deivison.arthur@gmail.com> 
-> Samuel Maciel Sampaio <samukasmk@gmail.com> 
-> Isaac Lopes <isaac@inovarti.com.br>

Licença GPLv3

Este arquivo esta sujeito a versao 3 da GNU General Public License, que foi adicionada nesse pacote no arquivo COPYING e esta disponivel pela Web em http://pt.wikipedia.org/wiki/GNU_General_Public_License; Qualquer notificação mande um email para os mantenedores do projeto.

http://www.gnu.org/licenses/gpl-3.0.html

A GPL3 é recursiva! Com isso não haverá proteção intelectual sobre tais sistemas! Ou seja, GPL é viral. O que significa dizer que qualquer coisa que ela toca, vira GPL. Se você usar uma biblioteca GPL, seu aplicativo será GPL.

Veja mais em: http://www.deivison.com.br/blog/2012/12/05/como-remover-a-licenca-de-modulos-do-magento/

Gostou do módulo?

Se você gostou, se foi útil para você, se fez você economizar aquela grana pois estava prestes a pagar caro por aquele módulo pago, pois não achava um solução gratuita que te atendesse e queira prestigiar o trabalho feito efetuando uma doação de qualquer valor, não vou negar e vou ficar grato, você pode fazer isso utilizando o Pagseguro no site ofical do projeto: http://onestepcheckout.com.br/ ou como doação ao email 2ds@deivison.com.br

Obrigado!