RSS para TAGS do CVS
Publicado por Pedro Robson Leão 06/08/2007
[ Hits: 6.969 ]
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};
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - APAGANDO MSG ANTIGAS
Pós-instalação do Ubuntu 18.04 LTS (codecs, ferramentas do sistema e dev.)
Alterando resolução de monitor externo
Fazer backup de todas base de dados no PostgreSQL
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Instalando partes faltantes do Plasma 6
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Estou tentando ser legalista, mas tá complicado! (9)
espelhar monitores nao funciona (2)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (1)









