RSS para TAGS do CVS
Publicado por Pedro Robson Leão 06/08/2007
[ Hits: 6.588 ]
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};
Apagando 2 linhas do fim de um arquivo
Claro 3g Sony Ericsson md300 script conexao REVISAO 2
Kit de Scripts para Backup (Full + Diferencial + SMBmount + Rede) - Atualizado
Organize seu /var/log/messages
Nenhum comentário foi encontrado.
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Não consigo acessar os modos de desempenho (2)
Ubuntu — tentando iniciar o windows? (0)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba