| #!/usr/bin/env python3 | |
| # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | |
| # for details. All rights reserved. Use of this source code is governed by a | |
| # BSD-style license that can be found in the LICENSE file. | |
| # This script builds and then uploads the Dart client sample app to AppEngine, | |
| # where it is accessible by visiting http://dart.googleplex.com. | |
| import os | |
| import subprocess | |
| import sys | |
| from os.path import abspath, basename, dirname, exists, join, split, relpath | |
| import base64, re, os, shutil, subprocess, sys, tempfile, optparse | |
| APP_PATH = os.getcwd() | |
| CLIENT_TOOLS_PATH = dirname(abspath(__file__)) | |
| CLIENT_PATH = dirname(CLIENT_TOOLS_PATH) | |
| # Add the client tools directory so we can find htmlconverter.py. | |
| sys.path.append(CLIENT_TOOLS_PATH) | |
| import htmlconverter | |
| def convertOne(infile, options): | |
| outDirBase = 'outcode' | |
| outfile = join(outDirBase, infile) | |
| print('converting %s to %s' % (infile, outfile)) | |
| if 'dart' in options.target: | |
| htmlconverter.convertForDartium(infile, outDirBase, | |
| outfile.replace('.html', '-dart.html'), | |
| options.verbose) | |
| if 'js' in options.target: | |
| htmlconverter.convertForChromium(infile, options.dartc_extra_flags, | |
| outfile.replace('.html', '-js.html'), | |
| options.verbose) | |
| def Flags(): | |
| """ Constructs a parser for extracting flags from the command line. """ | |
| result = optparse.OptionParser() | |
| result.add_option("-t", | |
| "--target", | |
| help="The target html to generate", | |
| metavar="[js,dart]", | |
| default='js,dart') | |
| result.add_option("--verbose", | |
| help="Print verbose output", | |
| default=False, | |
| action="store_true") | |
| result.add_option("--dartc_extra_flags", | |
| help="Additional flag text to pass to dartc", | |
| default="", | |
| action="store") | |
| #result.set_usage("update.py input.html -o OUTDIR -t chromium,dartium") | |
| return result | |
| def getAllHtmlFiles(): | |
| htmlFiles = [] | |
| for filename in os.listdir(APP_PATH): | |
| fName, fExt = os.path.splitext(filename) | |
| if fExt.lower() == '.html': | |
| htmlFiles.append(filename) | |
| return htmlFiles | |
| def main(): | |
| os.chdir(CLIENT_PATH) # TODO(jimhug): I don't like chdir's in scripts... | |
| parser = Flags() | |
| options, args = parser.parse_args() | |
| #if len(args) < 1 or not options.out or not options.target: | |
| # parser.print_help() | |
| # return 1 | |
| REL_APP_PATH = relpath(APP_PATH) | |
| for file in getAllHtmlFiles(): | |
| infile = join(REL_APP_PATH, file) | |
| convertOne(infile, options) | |
| if __name__ == '__main__': | |
| main() |