/** * Retorna arquivos adicionados para commit * * @access public * @return array - lista de StdClass com configuração do commit */ public function getAdicionados() { $aArquivos = array(); $aArquivosSalvos = $this->getDataBase()->selectAll("SELECT * FROM add_files WHERE project_id = {$this->getProjeto()->id}"); foreach ($aArquivosSalvos as $oDadosArquivo) { $oArquivo = new Arquivo(); $oArquivo->setArquivo($oDadosArquivo->file); $oArquivo->setTagMensagem($oDadosArquivo->tag_message); $oArquivo->setTagArquivo($oDadosArquivo->tag_file); $oArquivo->setMensagem($oDadosArquivo->message); $oArquivo->setTipo($oDadosArquivo->type); $oArquivo->setComando((int) $oDadosArquivo->command); $aArquivos[$oDadosArquivo->file] = $oArquivo; } return $aArquivos; }
public function processarArquivos() { $aArquivos = array(); $sMensagem = '<info>Arquivo %s: %s</info>'; /** * Procura os arquivos para adicionar */ foreach ($this->oInput->getArgument('arquivos') as $sArquivo) { if (!file_exists($sArquivo)) { continue; } if (is_dir($sArquivo)) { continue; } $aArquivos[] = realpath($sArquivo); } if (empty($aArquivos)) { $aArquivos = array_keys($this->aArquivos); } foreach ($aArquivos as $sArquivo) { $lAdicionado = true; if (!empty($this->aArquivos[$sArquivo])) { $lAdicionado = false; $oArquivo = $this->aArquivos[$sArquivo]; if (in_array($oArquivo->getComando(), array(Arquivo::COMANDO_ADICIONAR_TAG, Arquivo::COMANDO_REMOVER_TAG))) { $oArquivo = new Arquivo(); $oArquivo->setArquivo($sArquivo); } } else { $oArquivo = new Arquivo(); $oArquivo->setArquivo($sArquivo); } foreach ($this->oInput->getOptions() as $sArgumento => $sValorArgumento) { if (empty($sValorArgumento)) { continue; } switch ($sArgumento) { /** * Mensagem do commit */ case 'message': $oArquivo->setMensagem($this->oInput->getOption('message')); break; /** * Tag do commit */ /** * Tag do commit */ case 'tag': $oArquivo->setTagMensagem($this->oInput->getOption('tag')); break; /** * Tag do commit */ /** * Tag do commit */ case 'tag-commit': $iTag = $this->oInput->getOption('tag-commit'); $oArquivo->setTagMensagem($iTag); $oArquivo->setTagArquivo($iTag); $oArquivo->setComando(Arquivo::COMANDO_COMMITAR_TAGGEAR); break; /** * Commit para adicionar fonte ou funcionalidade */ /** * Commit para adicionar fonte ou funcionalidade */ case 'added': $oArquivo->setTipo('ADD'); break; /** * Commit para modificacoes do layout ou documentacao */ /** * Commit para modificacoes do layout ou documentacao */ case 'style': $oArquivo->setTipo('STYLE'); break; /** * Commit para correcao de erros */ /** * Commit para correcao de erros */ case 'fixed': $oArquivo->setTipo('FIX'); break; /** * Commit para melhorias */ /** * Commit para melhorias */ case 'enhanced': $oArquivo->setTipo('ENH'); break; } } $iTagArquivo = $oArquivo->getTagArquivo(); $iTagRelease = $this->getApplication()->getConfig()->get('tag')->release; if (empty($iTagArquivo) && !empty($iTagRelease)) { $oArquivo->setTagArquivo($iTagRelease); } $this->aArquivos[$sArquivo] = $oArquivo; if ($lAdicionado) { $this->oOutput->writeln(sprintf($sMensagem, 'adicionado a lista', $this->getApplication()->clearPath($sArquivo))); } else { $this->oOutput->writeln(sprintf($sMensagem, 'atualizado', $this->getApplication()->clearPath($sArquivo))); } } if (!empty($this->aArquivos)) { $this->oArquivoModel->salvarAdicionados($this->aArquivos); } }
/** * Executa comando * * @param Object $oInput * @param Object $oOutput * @access public * @return void */ public function execute($oInput, $oOutput) { $oArquivoModel = new ArquivoModel(); $aArquivosAdicionados = $oArquivoModel->getAdicionados(); $aArquivos = array(); $aOpcoes = array('added', 'delete'); $sComando = null; $aArquivosParametro = $oInput->getArgument('arquivos'); /** * Verifica arquivos passados por parametro */ foreach ($aArquivosParametro as $sArquivo) { if (!file_exists($sArquivo)) { $oOutput->writeln("<error>Arquivo não encontradao: {$sArquivo}</error>"); continue; } $sArquivo = realpath($sArquivo); /** * Arquivo já adicionado a lista, pega ele */ if (!empty($aArquivosAdicionados[$sArquivo])) { $aArquivos[$sArquivo] = $aArquivosAdicionados[$sArquivo]; continue; } $oArquivo = new Arquivo(); $oArquivo->setArquivo($sArquivo); /** * Arquivos não adicionados ainda a lista */ $aArquivos[$sArquivo] = $oArquivo; } /** * Nenhum arquivo passado por parametro, poe tag em todos os arquivos ja adicionados */ if (empty($aArquivos)) { $aArquivos = $aArquivosAdicionados; } foreach ($oInput->getOptions() as $sArgumento => $sValorArgumento) { if (empty($sValorArgumento) || !in_array($sArgumento, $aOpcoes)) { continue; } if (!empty($sComando)) { throw new Exception("Mais de uma comando usado(added, delete)"); } if (empty($sComando)) { $sComando = $sArgumento; } } if (empty($sComando)) { $sComando = 'added'; } /** * Tag do arquivo, sem prefixo T */ $iTag = ltrim(strtoupper($oInput->getArgument('tag')), 'T'); $aArquivosTaggeados = $oArquivoModel->taggear($aArquivos, $iTag, $sComando); if (!empty($aArquivosTaggeados)) { foreach ($aArquivosTaggeados as $sArquivo) { $oOutput->writeln("<info>Arquivo com tag atualizada: " . $this->getApplication()->clearPath($sArquivo) . "</info>"); } } }