74 lines
2.0 KiB
Python
74 lines
2.0 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
import urllib2
|
|
import traceback
|
|
import sys
|
|
|
|
project_name = 'astyle'
|
|
project_dependencies = \
|
|
[
|
|
'waf-tools',
|
|
]
|
|
|
|
# Importing a dynamically generated module
|
|
# Python recipe from http://code.activestate.com/recipes/82234
|
|
|
|
|
|
def importCode(code, name, add_to_sys_modules=0):
|
|
"""
|
|
Import dynamically generated code as a module. code is the
|
|
object containing the code (a string, a file handle or an
|
|
actual compiled code object, same types as accepted by an
|
|
exec statement). The name is the name to give to the module,
|
|
and the final argument says whether to add it to sys.modules
|
|
or not. If it is added, a subsequent import statement using
|
|
name will return this module. If it is not added to sys.modules
|
|
import will try to load it in the normal fashion.
|
|
|
|
import foo
|
|
|
|
is equivalent to
|
|
|
|
foofile = open("/path/to/foo.py")
|
|
foo = importCode(foofile,"foo",1)
|
|
|
|
Returns a newly generated module.
|
|
"""
|
|
import imp
|
|
|
|
module = imp.new_module(name)
|
|
|
|
exec code in module.__dict__
|
|
if add_to_sys_modules:
|
|
sys.modules[name] = module
|
|
|
|
return module
|
|
|
|
|
|
if __name__ == '__main__':
|
|
print('Updating Smart Project Config Tool...')
|
|
|
|
url = "https://raw.github.com/steinwurf/steinwurf-labs/" \
|
|
"master/config_helper/config-impl.py"
|
|
|
|
try:
|
|
# Fetch the code file from the given url
|
|
req = urllib2.Request(url)
|
|
response = urllib2.urlopen(req)
|
|
code = response.read()
|
|
print("Update complete. Code size: {}\n".format(len(code)))
|
|
try:
|
|
# Import the code string as a module
|
|
mod = importCode(code, "config_helper")
|
|
# Run the actual config tool from the dynamic module
|
|
mod.config_tool(project_dependencies)
|
|
except:
|
|
print("Unexpected error:")
|
|
print traceback.format_exc()
|
|
except Exception as e:
|
|
print("Could not fetch code file from:\n\t{}".format(url))
|
|
print(e)
|
|
|
|
raw_input('Press ENTER to exit...')
|