RSS para TAGS do CVS
Publicado por Pedro Robson Leão 06/08/2007
[ Hits: 6.934 ]
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};
get-geo2 - localiza o endereço de um IP/HOST no Google Maps
Instalando o Modem Motorola SM56
Configuração do Mysql no Suse, quando ocorre o seguinte erro: "ERROR 2002: Can't connect to local My
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Secure boot, artigo interessante, nada técnico. (2)
Preciso recuperar videos *.mp4 corrompidos (5)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (7)









