RSS para TAGS do CVS
Publicado por Pedro Robson Leão 06/08/2007
[ Hits: 6.696 ]
O script a seguir analisa a criação de TAGS do CVS e cria um arquivo RSS com estas informações:
Os comentarios podem ajudar com a instalação.
O script é incluído no arquivo taginfo do cvs e sempre que uma TAG é adicionada, movida ou apagada, o arquivo RSS é atualizado.
Para acessar o resultado, você pode usar seu cliente RSS preferido.
Qualquer duvida, mande um email.
#!/usr/bin/bash # trata interrupcoes trap 'rm -f .*$$ /tmp/.lockRss${CVS_ROOT}; exit 0' 1 2 3 6 9 13 14 15 16 17 23 24 26; ## # cvs-rss.sh # # Tem por finalidade gerar um arquivo feed para os logs do CVS. # # Dependencias: # cvs # nawk ou awk # cut # cat # date # grep # ftp # cd # rm # touch # xargs # bash # cvsweb # # ${CVSROOT}/CVSROOT/users - para pegar email dos usuarios # # # # Instalacao # # incluir no arquivo ${CVSROOT}/CVSROOT/taginfo # a linha que segue: # # DEFAULT $CVSROOT/CVSROOT/cvs-rss.sh # # Obs: Meu script esta dentro do CVSROOT # O arquivo de saida eh o rssCvs.xml out rssCvs${CVS_ROOT}.xml # # @autor Pedro Robson Leao pedro.leao at gmail.com # @since Jul/2007 # # $Id: $ ## AWK=nawk; # # Os dados a seguir podem ser incluidos no arquivo cvs-rssrc no home do usuario ou no diretorio CVSROOT # #parametros globais # URL cvsweb CVSWEBURL="http://localhost/cgi-bin/cvsweb-x.cgi"; # ROOT para o cvsweb caso tenha mais de um repositorio configurado CVS_ROOT=""; # Usuario e senha ftp para o post do rss FTP_USER="ftpuser"; FTP_PASS="ftppass"; # Host destino ftp FTP_HOST="localhost"; # Diretorio destino do rss FTP_DIR="rss"; #------------------------------------------ # importa arquivos rc caso exista - o arquivo do CVSROOT tem maior precedencia [ -f ~/.cvs-rssrc ] && source ~/.cvs-rssrc; [ -f ${CVSROOT}/CVSROOT/cvs-rssrc ] && source ${CVSROOT}/CVSROOT/cvs-rssrc; # pesquisa email dos usuarios LOCAL_USER=$( grep ${USER} ${CVSROOT}/CVSROOT/users 2>/dev/null | cut -d : -f 2 ); if [ -z "${LOCAL_USER}" ] ; then LOCAL_USER=${USER}; LINK_USER=${USER}; else LINK_USER="<a href=\"mailto:${LOCAL_USER}\">${USER%%@*}</a>" fi # inclui header rss function putStart() { cat <<EOF >>.head.$$ <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" > <channel> <title>CVS TAG'S ${CVS_ROOT}</title> <link>${URL}</link> <description>Monitor de TAGS do CVS</description> <pubDate>$( date )</pubDate> <generator>http://wordpress.org/?v=MU</generator> <language>pt-br</language> EOF } # inclui end rss function putEnd() { cat <<EOF >>.end.$$ </channel> </rss> EOF } # pega rss existente function getHist() { ${AWK} ' /\<item\>/ { flg=1 } flg ' } # envia ftp para a maquina de publicacao function manda() { cd /tmp; ftp -in ${FTP_HOST} <<EOF user ${FTP_USER} ${FTP_PASS} cd ${FTP_DIR} put cvsRss${CVS_ROOT}.xml bye EOF cd -; } #junta as partes do rss function montaRss() { day=$( date +%u ); [ ! -f /tmp/.rss${CVS_ROOT} ] && { [ $day -eq 1 ] && { rm -f /tmp/cvsRss${CVS_ROOT}.xml; touch /tmp/.rss${CVS_ROOT}; } } [ $day -ne 1 ] && rm -f /tmp/.rss${CVS_ROOT}; putStart; if [ -f /tmp/cvsRss${CVS_ROOT}.xml ] ; then cat /tmp/cvsRss${CVS_ROOT}.xml | getHist >>.$USER.$$; else putEnd; cat .end.$$ >>.$USER.$$; fi cat .head.$$ .$USER.$$ >/tmp/cvsRss${CVS_ROOT}.xml; manda; chmod 777 /tmp/cvsRss${CVS_ROOT}.xml >/dev/null 2>&1; } #semaforo - controla geracoes simultaneas while [ -f /tmp/.lockRss${CVS_ROOT} ] ;do sleep 1; done touch /tmp/.lockRss${CVS_ROOT}; # main - processo inicial parms=${@:-"bMyTestPRL add /Development/Teste/contingencia202 contingencia202.c 1.1 contingenciaCompra.c 1.1 converte.sonda.awk 1.1 makefile 1.1"}; branch=$( echo ${parms} | cut -d " " -f 1 ); action=$( echo ${parms} | cut -d " " -f 2 ); cvsroot=$( echo ${parms} | cut -d " " -f 3 ); files=$( echo ${parms} | cut -d " " -f 4- ); cvsroot=$( echo $cvsroot | sed s/"^\/[a-zA-Z]*\/"// ); URL="${CVSWEBURL}/${cvsroot}"; [ ! -z "${CVS_ROOT}" ] && URL=${URL}/?cvsroot=${CVS_ROOT}; URL="${URL};only_with_tag=${branch}"; echo >>.$$; echo "<b>$( date ) - ${HOSTNAME} - ${LINK_USER}</b><br>" >>.$$; # monta links do item echo ${files} | xargs -n 2 | while read line ; do rev=$( echo $line | cut -d " " -f 2 ); link="${CVSWEBURL}/${cvsroot}/$( echo ${line} | cut -d ' ' -f 1 )?rev=${rev};content-type=text%2Fx-cvsweb-markup"; [ ! -z "${CVS_ROOT}" ] && link="${link};cvsroot=${CVS_ROOT}"; link="${link};only_with_tag=${branch}"; if [ "${action}" == "del" ] ; then echo " <font color=red>${cvsroot}/${line}</font><br>" >>.$$ else echo " <a href=\"${link}\">${cvsroot}/${line}</a><br>" >>.$$ fi done f=.$$; CONTENT=$( cat ${f} ); # monta novo item rss cat <<EOF >>.$USER.$$ <item> <title>${branch} - ${action}</title> <link>${URL}</link> <dc:creator>${LOCAL_USER}</dc:creator> <pubDate>$(date)</pubDate> <category><![CDATA[${action}]]></category> <description><![CDATA[${CONTENT}<hr>]]></description> </item> EOF # gera o arquivo montaRss; # apaga locks e arquivos temporarios rm -f .*$$ /tmp/.lockRss${CVS_ROOT};
Copiar subdiretório presente em vários diretórios
Analisador de rede com aviso em net send
Java 7/8 - Instalação automatizada no Ubuntu
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Linux rodando do hd externo ou ssd? (4)
Firewall iptables - Rotear Interface Cliente (0)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta