| #!/usr/bin/python |
| # |
| # Generates the eclipse projects for PixelPerfect. |
| # |
| # Adapter from GoogleSearch eclipse_setup.py script. |
| |
| import optparse |
| import os |
| import sys |
| |
| |
| def check_path(path, message, create=False): |
| """Returns the full path to an exisiting file, resolving symlinks or exits.""" |
| realpath = os.path.realpath(path) |
| if not os.path.exists(realpath): |
| if create: |
| os.mkdir(realpath) |
| else: |
| sys.exit("%s did not exist, tried %s" % (message, path)) |
| return realpath |
| |
| def list_callback(option, opt, value, parser): |
| setattr(parser.values, option.dest, value.split(',')) |
| |
| def main(args): |
| parser = optparse.OptionParser() |
| parser.set_defaults(projects=('pixelperfect','pixelperfect-test','gcore-fp')) |
| parser.add_option('--platform_src', |
| help='Location of the android platform source tree') |
| |
| options, args = parser.parse_args(args) |
| script_path = os.path.realpath(sys.argv[0]) |
| scripts_dir = os.path.dirname(script_path) |
| par_file = check_path("%s/eclipse_builder.py" % scripts_dir, |
| "eclipse_builder") |
| project_files_dir = check_path("%s/../eclipse" % scripts_dir, |
| "project files folder") |
| android_root = check_path("%s/../../../.." % scripts_dir, "android root") |
| # Put eclipse files in home dir on OS X, and in a sibling dir on Linux. |
| # This is because on OS X the source tree is typically in a mounted disk image |
| if sys.platform == 'darwin': |
| output_dir = check_path(os.path.expanduser("~/eclipse"), "eclipse folder", |
| True) |
| else: |
| output_dir = check_path("%s/../eclipse" % android_root, "eclipse folder", |
| True) |
| output_dir = check_path(("%s/%s") % (output_dir, "pixelperfect"), |
| "project subdirectory", True) |
| project_root = check_path("%s/.." % scripts_dir, "project root") |
| print "project_files_dir: %s" % project_files_dir |
| print "android_root: %s" % android_root |
| print "eclipse_folder: %s" % output_dir |
| print "project_root: %s" % project_root |
| |
| def is_allowed_project_file(filename): |
| if not filename.endswith('.project'): |
| return False |
| return os.path.splitext(os.path.basename(filename))[0] in options.projects |
| |
| for file in sorted(filter(is_allowed_project_file, os.listdir(project_files_dir))): |
| project_folder = "%s/%s" % (output_dir, file.replace(".project", "")) |
| if os.path.exists(project_folder): |
| os.system("rm -r %s" % project_folder) |
| project_file = check_path("%s/%s" % (project_files_dir, file), |
| "project file") |
| command = ("cd %s && %s --project_file=%s --project_root=%s" % |
| (output_dir, par_file, project_file, project_root)) |
| if options.platform_src: |
| command = ("%s --platform_src=%s" % (command, options.platform_src)) |
| print "processing '%s'" % os.path.basename(project_file) |
| os.system(command) |
| |
| if __name__ == '__main__': |
| sys.exit(main(sys.argv[1:])) |