[Cascavel-pm] Comparacao de diretorios e manipulacao de arquivos.

Luis Campos de Carvalho lechamps em terra.com.br
Sexta Fevereiro 27 12:30:35 CST 2004


   Boa tentativa, Nelson.
   Mas tenho quase certeza de que o problema do Leandro já foi resolvido 
trilhões de vezes.

   :)

   Leandro, você precisa do GNU Make, o construtor de sistemas da GNU, e 
de um Makefile suficientemente bom.

   Acho que se você puder me oferecer informações sobre a localização 
dos arquivos, e sobre o caminho em disco para seus programas, posso 
fazer o Makefile que você precisa daqui. Depois, basta dizer

   $ make t2t

   e deixar o Make determinar quais arquivos mudaram, quais precisam ser 
gerados novamente, e em quais não se precisa mexer... (:

   Ah! Eu acho que o makefile anexo deve resolver seu problema, ou quase 
isso. É texto ASCII, e acho que você precisa mudar algumas coisas.

   Estou confiando que você usa Linux ou outro *nix, se esse não for seu 
caso precisamos fazer pequenas alterações.

   Não testei o script, mas deve funcionar sem maiores problemas.
   Se eu puder ajudar mais, é só falar!
   Putamplexos!

Nelson Ferraz wrote:
> Leandro Costa wrote:
> 
>> Entao o script que preciso desenvolver:
>>
>> Seria o seguinte:
> 
> 
> foreach my $tt2 (@ARGV) {
>   my ($html) = $tt2 =~ s/\.tt2/\.html/i;
> 
>   my $tt2_mtime  = (stat($tt2))[9];
>   my $html_mtime = (stat($html))[9];
> 
>> - primeiro ele verifica se jah existe o arquivo html
>> -arquivo html  existe ?
> 
>   if (-f $html) {
> 
>>     Sim - verifca a data do arquivo .t2t  data maior ? "executa $
>> txt2tags -t html nomedoarquivo.t2t"   - data menor nao faz nada.
> 
>     if ($tt2_mtime > $html_mtime) {
>       system("txt2tags -t html $tt2");
>     }
> 
>>     Nao - $ txt2tags -t html nomedoarquivo.t2t
> 
>   } else {
>     system("txt2tags -t html $tt2");
>   }
> }
> 
> Para executar o script acima, você deve passar os nomes de arquivo 
> através da linha de comando. Exemplo: ./script.pl *.tt2
> 
> Talvez você prefira reescrever todos os ifs/elses da seguinte forma:
> 
> if (!-f $html or $tt2_mtime > $html_mtime) {
>   system("txt2tags -t html $tt2");
> }
> 
> Em outras palavras: execute o comando se o arquivo html não existe, OU 
> se a data do arquivo tt2 for maior que a do arquivo html.
> 
> OBS - eu não testei nenhuma parte deste código.
> 

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
   Luis Campos de Carvalho is BSc in Comp Science,
   PerlMonk [SiteDocClan], Cascavel-pm Moderator,
   Unix Sys Admin && Certified Oracle DBA
   http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
-------------- Próxima Parte ----------
# Makefile para resolver o problema do Leandro Costa, da lista 
# dos Cascavel Perl Mongers. 
#
# Por Luis 'Champs' de Carvalho, <lechamps em terra.com.br>
#
# Este programa é Open-Source, e deve ser distribuído de acordo
# com os Termos da GPL.
#

#
# Primeiro, configuracao
#
TXT2TAGS=/caminho/para/o/txt2tags
T2TARGS="-parametros -para -o -txt2tags"
HTML_DIR=/caminho/para/os/arquivos.html
HTML_EXT=".html"
T2T_DIR=/caminho/para/os/arquivos.t2t
T2T_EXT=".t2t"
FIND=/usr/bin/find

# Nao mexa daqui para baixo, por favor.
ARTIFACTS=$(shell $(FIND) $(HTML_DIR) -type f -name $(HTML_EXT) -print)

.DEFAULT: t2t

t2t: $(ARTIFACTS)

$(ARTIFACTS): %$(HTML_EXT): %$(T2T_EXT)
	$(TXT2TAGS) -t html $< 
# EOF


Mais detalhes sobre a lista de discussão Cascavel-pm