--- /dev/null
+#!/usr/bin/python
+
+from __future__ import print_function
+import os
+import sys
+import subprocess
+import time
+
+# This file is in the dist directory, need to add ../plugin/TagHighlight to
+# module search path
+sys.path = [os.path.abspath(os.path.join(os.path.dirname(__file__),'../plugin/TagHighlight'))] + \
+ sys.path
+
+library_types_root = os.path.abspath(os.path.join(os.path.dirname(__file__),
+ '../plugin/TagHighlight/standard_libraries'))
+
+from module.worker import RunWithOptions
+from module.utilities import TagHighlightOptionDict
+
+library_root = os.path.join(os.environ['HOME'], 'development','libraries')
+tools_dir = os.path.join(library_root, 'tools')
+if not os.path.exists(tools_dir):
+ os.makedirs(tools_dir)
+
+fLog = open(os.path.join(library_root, 'log_%s.txt' % time.strftime('%Y%m%d_%H%M%S')), 'w')
+
+repo_location = os.path.join(tools_dir, 'repo')
+
+libraries = [
+ {
+ 'Name': 'Android SDK',
+ 'Directory': 'android',
+ 'Output': 'android_sdk.taghl',
+ 'Language': 'java',
+ 'ToolFetchCommands': [['wget', '-O', repo_location, '--no-check-certificate', 'https://android.git.kernel.org/repo'],
+ ['chmod','a+x',repo_location]],
+ 'CanUpdate': True,
+ 'UpdateCommands': [[repo_location, 'sync']],
+ 'GetStart': 'InDirectory',
+ 'GetCommands': [[repo_location,'init','-u','git://android.git.kernel.org/platform/manifest.git'],
+ [repo_location, 'sync']],
+ 'SkipPatterns': [],
+ },
+ {
+ 'Name': 'JDK',
+ 'Directory': 'jdk',
+ 'Output': 'jdk.taghl',
+ 'Language': 'java',
+ 'ToolFetchCommands': [],
+ 'CanUpdate': True,
+ 'UpdateCommands': [['hg','pull','-u']],
+ 'GetStart': 'AboveDirectory',
+ 'GetCommands': [['hg','clone','http://hg.openjdk.java.net/jdk7/jdk7/jdk']],
+ 'SkipPatterns': [],
+ },
+ {
+ 'Name': 'Qt4',
+ 'Directory': 'qt4',
+ 'Output': 'qt4.taghl',
+ 'Language': 'c',
+ 'ToolFetchCommands': [],
+ 'CanUpdate': True,
+ 'UpdateCommands': [['git','pull']],
+ 'GetStart': 'AboveDirectory',
+ 'GetCommands': [['git','clone','git://gitorious.org/qt/qt.git','qt4']],
+ 'SkipPatterns': [],
+ },
+ {
+ 'Name': 'wxWidgets',
+ 'Directory': 'wxwidgets',
+ 'Output': 'wxwidgets.taghl',
+ 'Language': 'c',
+ 'ToolFetchCommands': [],
+ 'CanUpdate': True,
+ 'UpdateCommands': [['svn','update']],
+ 'GetStart': 'AboveDirectory',
+ 'GetCommands': [['svn','co','http://svn.wxwidgets.org/svn/wx/wxWidgets/trunk','wxwidgets']],
+ 'SkipPatterns': [],
+ },
+ {
+ 'Name': 'wxPython',
+ 'Directory': 'wxpython',
+ 'Output': 'wxpython.taghl',
+ 'Language': 'python',
+ 'ToolFetchCommands': [],
+ 'CanUpdate': True,
+ 'UpdateCommands': [['svn','update']],
+ 'GetStart': 'AboveDirectory',
+ 'GetCommands': [['svn','co','http://svn.wxwidgets.org/svn/wx/wxPython/trunk','wxpython']],
+ 'SkipPatterns': [],
+ },
+ {
+ 'Name': 'PySide',
+ 'Directory': 'pyside',
+ 'Output': 'pyside.taghl',
+ 'Language': 'python',
+ 'ToolFetchCommands': [],
+ 'CanUpdate': True,
+ 'UpdateCommands': [['git','pull']],
+ 'GetStart': 'AboveDirectory',
+ 'GetCommands': [['git','clone','git://gitorious.org/pyside/pyside.git','pyside']],
+ 'SkipPatterns': [],
+ },
+ ]
+
+if len(sys.argv) > 1:
+ library_list = [i.lower() for i in sys.argv[1:]]
+else:
+ library_list = [i['Name'].lower() for i in libraries]
+
+def Run():
+ for library in libraries:
+ if library['Name'].lower() in library_list:
+ CreateLibraryTypes(library)
+
+def CreateLibraryTypes(library):
+ os.chdir(library_root)
+ library_source_dir = os.path.join(library_root, library['Directory'])
+ done = False
+ if os.path.exists(library_source_dir):
+ if library['CanUpdate']:
+ # We've downloaded this before, just run the update commands
+ os.chdir(library_source_dir)
+ for command in library['UpdateCommands']:
+ p = subprocess.Popen(command, stdout=fLog, stderr=fLog)
+ p.communicate()
+ done = True
+ else:
+ import shutil
+ shutil.rmtree(library_source_dir)
+ if not done:
+ # New project, we need to get any required tools and then download
+ # the source from scratch
+ for command in library['ToolFetchCommands']:
+ p = subprocess.Popen(command, stdout=fLog, stderr=fLog)
+ p.communicate()
+ if library['GetStart'] == 'InDirectory':
+ os.mkdir(library_source_dir)
+ os.chdir(library_source_dir)
+ else:
+ os.chdir(library_root)
+ for command in library['GetCommands']:
+ p = subprocess.Popen(command, stdout=fLog, stderr=fLog)
+ p.communicate()
+
+ output_dir = os.path.join(library_types_root, library['Directory'])
+ if not os.path.exists(output_dir):
+ os.mkdir(output_dir)
+
+ os.chdir(library_root)
+ # Should now have the library; start making the options
+ options = TagHighlightOptionDict()
+ options['recurse'] = True
+ options['types_file_name_override'] = library['Output']
+ options['skip_patterns'] = library['SkipPatterns']
+ options['languages'] = [library['Language']]
+ options['types_file_location'] = output_dir
+ options['source_root'] = library_source_dir
+ options['check_keywords'] = True
+ RunWithOptions(options)
+
+Run()
+
+fLog.close()