astyle/config.py
2017-04-01 00:17:31 +02:00

65 lines
1.5 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import traceback
import sys
try:
input = raw_input
except NameError:
pass
project_name = 'astyle'
project_dependencies = \
[
'waf-tools',
]
def importCode(code, name, add_to_sys_modules=0):
"""
Import dynamically generated code as a module.
Python recipe from http://code.activestate.com/recipes/82234
"""
import imp
module = imp.new_module(name)
exec(code, 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:
from urllib.request import urlopen, Request
except ImportError:
from urllib2 import urlopen, Request
try:
# Fetch the code file from the given url
req = Request(url)
response = 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, project_name)
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)
input('Press ENTER to exit...')