blob: 33526b0d0b1bb3afc879528e5771a828a78c5114 [file] [log] [blame]
#!/usr/bin/env python
# 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():
""" Consturcts 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()