[pyar] codigo para revisar: copyrighter.py

Hernan Olivera lholivera en gmail.com
Mie Jun 23 13:57:09 ART 2010


2010/6/23 Martín Olivera <martin.olivera en gmail.com>

> despues de juguetear hice mi primer programita "util" con python
>
> tome pedazos de por ahi, y lo fui modificando, queria compartirles el
> codigo, para que me lo critiquen (por ej no me gusta revisar varias veces el
> texto para buscar determinados patrones, pero si las regex son muy
> complicadas tampoco me parece que el codigo quede legible
>
> lo que tenia que hacer era revisar un monton de archivos buscando notas de
> copyright (es para liberar un programa GPL) y si no tenia le mete un header
> , y si ya tiene copyright, le agrega una linea de copyright "propia" bajo la
> existente
>
> lo paso por aca para recibir las criticas del caso en python-style, asi
> mejoro el estilo :)
>
>>
>> copyrighter.py
>> ________________________________
>> # updates the copyright information for source code files
>> # usage: call recursive_traversal, with the following parameters
>> # directory, copyright header for new files, copyright line for modified
>> files, extensions to check
>>
>> import os
>>
>> excludedir = ["..\\Lib"]
>>
>> addedLines = 0
>> addedHeaders = 0
>>
>> def update_source(fileName, copyrightHeader, copyrightLine):
>>     global addedHeaders, addedLines
>>
>>     text = file(fileName).read()
>>     if 'copyright' in text.lower():
>>         if not(copyrightLine in text):
>>             newlines = []
>>             f = file(fileName)
>>             for line in f:
>>                 newlines.append(line)
>>                 if 'copyright' in line.lower():
>>                     #TODO do the recursive copyright search here
>>                     newlines.append(copyrightLine)
>>             outfile = file(fileName, 'w')
>>             outfile.writelines(newlines)
>>             print fileName+": adding copyright line"
>>             addedLines+=1
>>     else:
>>         newText = []
>>         newText.append(copyrightHeader)
>>         newText.append(text)
>>         outfile = file(fileName, 'w')
>>         outfile.writelines(newText)
>>         print fileName+": adding copyright header"
>>         addedHeaders+=1
>>
>>
>> def recursive_traversal(dir,  copyrightHeader, copyrightLine,
>> fileExtensions):
>>     global excludedir
>>
>>     fns = os.listdir(dir)
>>     #print "listing "+dir
>>     for fn in fns:
>>         fullfn = os.path.join(dir,fn)
>>         if (fullfn in excludedir):
>>             continue
>>         if (os.path.isdir(fullfn)):
>>             recursive_traversal(fullfn, copyrightHeader, copyrightLine,
>> fileExtensions)
>>         else:
>>             for ext in fileExtensions:
>>                 if (fullfn.endswith("."+ext)):
>>                     update_source(fullfn, copyrightHeader, copyrightLine)
>>
>>
>> header = file("license_header","r+").read()
>> line = file("license_line","r+").read()
>> recursive_traversal("..", header, line, ["cpp", "h"])
>> print "added headers: %d - added copyright lines: %d" % (addedHeaders,
>> addedLines)
>> exit()
>>
>>
>>
Que bueno verte por aqui, Martín :)


> --
> Martín Olivera
> microblog en http://identi.ca/martinolivera
> blog en http://blog.martinolivera.com.ar
> jabber en olix en jabber.org
>
> Asociación SOLAR Software Libre Argentina - http://www.solar.org.ar
> Comunidad Ginga Argentina - http://comunidad.ginga.org.ar
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>



-- 
Hernan Olivera
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100623/bf994c9d/attachment.html>


More information about the pyar mailing list