[pyar] codigo para revisar: copyrighter.py

Martín Olivera martin.olivera en gmail.com
Mie Jun 23 13:32:51 ART 2010


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()
>
>
> --
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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20100623/4fd00552/attachment.html>


More information about the pyar mailing list