#-*- coding: utf8 -*-
import os # Interface con el Sistema Operativo
from string import Template # Plantillas
header_template = Template("""\
// Automatic header for: $CFILE
#ifndef $DEFINE
#define $DEFINE
#endif
""")
def list_cfiles(path):
"""Devuelve una lista con todos los archivos de código c, del directorio 'path' """
return [cname for cname in os.listdir(path) if cname.split('.')[-1].lower() in ('c', 'cpp')]
def base_name(filename):
"""Devuelve el nombre de un fichero, sin extensión"""
return os.path.splitext(filename)[0]
def header_name(cfilename):
"""Devuelve el nombre de un archivo de cabecera a partir del nombre del archívo de código"""
return base_name(cfilename) + '.h'
def header_process(filename):
"""Genera un archivo de cabecera si no existe"""
# Si existe el archivo de cabecera, retorna
hfilename = header_name(filename)
if os.path.exists(hfilename):
return
# Escribe el archivo de cabecera en el disco
print("Generando: %s" % hfilename)
hfile_text = header_template.substitute(
DEFINE = '_' + basename.upper() + '_H',
CFILE = cfilename)
open(hfilename, 'wt').write(hfile_text)
if __name__ == "__main__":
for cfilename in list_cfiles('.'):
header_process(cfilename)