Gustavo, se trata de um script de automação para as atualizações constantes do needwork.txt. Ele está dividido em duas partes (e eu pretendo mudar isso): a primeira é uma modificação no www-cvs que cria uma pasta de trabalho pra onde são copiados os arquivos a serem atualizados; muda seus nomes, cria um arquivo .list contendo entradas do tipo "portuguese/foo/bar/foobar.wml x.xx > y.yy" e abre o vi direto com os arquivos. A outra parte realiza o envio dos emails no formato acordado: Assunto: [wml] portuguese/foo/bar/foobar.wml x.xx > y.yy Texto: Algumas palavras pra não ficar tão impessoal :) Arquivo anexo: portuguese/foo/bar/foobar.wml Do jeito que estão eles só são interessantes pra quem vai traduzir todo o needwork de uma vez, que é o que eu costumo fazer. Mas algumas modificações podem torná-los ferramentas importantes para o projeto. Há ainda os arquivos wml.vim e needwork.txt.vim que possuem realce de sintaxe para os wml e needwork, respectivamente. O primeiro contém, além da sintaxe, funções de busca e realçe de busca, largura de linha e coisas úteis pra traduções completas de arquivos (que eu criei pra manter minha sanidade mental), o outro eu ainda não consegui tornar funcional, mas tá quase lá. De qualquer forma, segue anexo estes arquivos, pra quem quiser fuçãr/usar/mexer. Alem deles vai o vimrc. -- Rodrigo Torres ID: 082BC137
#!/bin/bash
export CVSROOT=:pserver:anonymous@cvs.debian.org:/cvs/webwml
trap 'echo Recebido Crtl-C, saindo.; exit 0 ' 2
test -f ~/.cvspass || touch ~/.cvspass
cvs login
if [ "$1" = "init" ]; then
cvs co -l webwml
cvs co -l webwml/Perl
cvs co -l webwml/Perl/Local
cvs co -l webwml/Perl/Webwml
cvs co webwml/english
cvs co webwml/portuguese
else
cvs -q update -P -d -l webwml
cvs -q update -P -d -l webwml/Perl
cvs -q update -P -d -l webwml/Perl/Local
cvs -q update -P -d -l webwml/Perl/Webwml
cvs -q update -P -d webwml/english
cvs -q update -P -d webwml/portuguese
fi
cd webwml
./check_trans.pl -d > ../update.txt
cd ../
cat update.txt | grep -v ^Missing > needwork.txt
#grep -B2 '===' needwork.txt
# Esta parte cuidará de criar no diretório mywork a pasta
# com a data atual e copiará para ela os arquivos pedindo
# atualização
# TODO fazer esse negócio abrir o Vim logo em bg com vi -o ../needwork
# e o primeiro arquivo da lista. Pra que eu só preciso dar um fg pra
# pra chamá-lo de volta.
diretorio_de_trabalho="mywork/`date +%m%d-%a`/"
mkdir --parents ${diretorio_de_trabalho}
caminho_arquivos=`grep ^NeedToUpdate needwork.txt |\
sed -e 's/^NeedToUpdate \(.*\.wml\) from version \(.*\) to version \([^ ]*\).*/\1 \2 > \3/'|\
tee ${diretorio_de_trabalho}.list |\
sed -e 's/\(.*\.wml\).*/\1/'`
nome_arquivos=`echo ${caminho_arquivos} | tr '/' '.'`
cd webwml
item=1
for i in ${caminho_arquivos}
do
cp -a $i ../${diretorio_de_trabalho}`echo ${nome_arquivos} | cut -d ' ' -f $item`
item=$[$item + 1]
done
cd ../${diretorio_de_trabalho}
vi -o ../../needwork.txt *
#!/bin/bash
# vim:tw=80:ts=4
# enviador de emails para a lista debian-l10n-portuguese@lists.debian.org
# para cada item no arquivo .list da pasta de trabalho envia um e-mail para a lista
# usando o mutt na linha de comando
# TODO Receber o diretório ou arquivos a enviar como argumentos
# TODO Receber o email como argumento, mas tendo o l10n como default
# TODO Criar uma marcação "enviado" no .list para evitar envios duplos
# e checar antes de enviar
trap 'echo Recebido Crtl-C, saindo.; exit 0 ' 2
arquivos=`ls [!.]* | sort`
assuntos_completo=`cat .list | sort | sed -e 's/$/;/' -e 's/portuguese\///'`
contador=1
# o bendito smtp.web.de só recebe se o imap.web.de tiver sido acessado no
# mesmo dia. É só para garantir
nice -n 19 fetchmail -u rodrigo-torres -B 1 -s -k imap.web.de &
for i in ${arquivos}
do
nome_arquivo=${i}
assunto=`echo ${assuntos_completo} | cut -d ';' -f $contador`
echo -n enviando $assunto:
mutt -a $nome_arquivo -s "[wml] ${assunto}" $email <<\EOF
Automação é melhor que andar de bicicleta. Leva um tempo pra pegar o jeito, mas
depois é só alegria. Favor desconsiderar quaisquer mensagens duplicadas; ainda
estou aparando arestas.
EOF
echo ' enviada'
contador=$[$contador + 1]
#echo '$contador': $contador #debug
#echo '$nome_arquivo': $nome_arquivo #debug
#echo '$assunto': $assunto #debug
done
syntax on
set tw=78 tabstop=4 joinspaces wrap ruler
" Opções de busca
set hls is ic scs magic
map <F5> {i**Traduzido<esc>}o<esc>ki**<cr>
map ,mt /^\t\+\\|\s\+$<cr>
syn match Bloco_traduzido '\*\*Traduzido\n\(.*[^*]\n\)*\*\*'
map ,bt :hi Bloco_traduzido ctermfg=green ctermbg=black<cr>
map ,nbt :hi clear Bloco_traduzido<cr>
"/\*\*Traduzido\n\(.*[^*]\n\)*\*\*
hi Search ctermbg=lightgreen ctermfg=black
hi IncSearch ctermbg=black ctermfg=cyan
" carregar as syntaxe de wml, que já vem com o Vim
set filetype=wml
" vim:tw=78:ts=4
" needwork.txt.vim
syntax match diff_mais "^+.*"
syntax match diff_menos "^-.*"
syntax match cabeçalho "^NeedToUpdate\(.*\n\)\{2\}"
syntax match info "^==\(.*\n\)\{7\}"
highlight diff_mais ctermfg=black ctermbg=gray
highlight diff_menos ctermfg=gray ctermbg=blue
highlight cabeçalho ctermfg=white ctermbg=black
highlight info ctermfg=black ctermbg=black
syntax on
au BufNewFile,BufRead \(*.\)*.wml source ~/.wml.vim au BufRead needwork.txt source ~/.needwork.txt.vim set visualbell syntax on
Attachment:
signature.asc
Description: Digital signature