import glob TEMPLATE = """\ import sys # Remove current dir from sys.path, otherwise setuptools will peek up our # module instead of system. sys.path.pop(0) from setuptools import setup setup(name='micropython-%(name)s', version='%(version)s', description=%(desc)r, long_description=%(long_desc)r, url='https://github.com/micropython/micropython/issues/405', author=%(author)r, author_email=%(author_email)r, maintainer=%(maintainer)r, maintainer_email='micro-python@googlegroups.com', license=%(license)r, py_modules=['%(name)s']) """ DUMMY_DESC = """\ This is a dummy implementation of a module for MicroPython standard library. It contains zero or very little functionality, and primarily intended to avoid import errors (using idea that even if an application imports a module, it may be not using it onevery code path, so may work at least partially). It is expected that more complete implementation of the module will be provided later. Please help with the development if you are interested in this module.""" MICROPYTHON_DEVELS = 'MicroPython Developers' MICROPYTHON_DEVELS_EMAIL = 'micro-python@googlegroups.com' CPYTHON_DEVELS = 'CPython Developers' def parse_metadata(f): data = {} for l in f: l = l.strip() k, v = l.split("=", 1) data[k] = v return data def write_setup(fname, substs): with open(fname, "w") as f: f.write(TEMPLATE % substs) def main(): for fname in glob.iglob("*/metadata.txt"): print(fname) with open(fname) as f: data = parse_metadata(f) module = fname.split("/")[0] if data["type"] == "dummy": data["author"] = MICROPYTHON_DEVELS data["author_email"] = MICROPYTHON_DEVELS_EMAIL data["maintainer"] = MICROPYTHON_DEVELS data["license"] = "MIT" data["desc"] = "Dummy %s module for MicroPython" % module data["long_desc"] = DUMMY_DESC elif data["type"] == "cpython": data["author"] = CPYTHON_DEVELS data["maintainer"] = MICROPYTHON_DEVELS data["license"] = "Python" data["desc"] = "CPython %s module ported to MicroPython" % module elif data["type"] == "micropython": if "author" not in data: data["author"] = MICROPYTHON_DEVELS if "maintainer" not in data: data["author"] = MICROPYTHON_DEVELS else: raise NotImplementedError data["name"] = module write_setup(module + "/setup.py", data) if __name__ == "__main__": main()