| #!/usr/bin/python |
| # |
| # Copyright (c) 2012, 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 file will run docgen.dart on the SDK libraries, and upload them to |
| Google Cloud Storage for the documentation viewer. |
| """ |
| |
| import optparse |
| import os |
| from os.path import join, dirname, abspath, exists |
| import platform |
| import subprocess |
| import sys |
| sys.path.append(abspath(join(dirname(__file__), '../../../tools'))) |
| import utils |
| from upload_sdk import ExecuteCommand |
| |
| |
| DART = abspath(join(dirname(__file__), '../../../%s/%s/dart-sdk/bin/dart' |
| % (utils.BUILD_ROOT[utils.GuessOS()], utils.GetBuildConf('release', |
| utils.GuessArchitecture())))) |
| PACKAGE_ROOT = abspath(join(dirname(__file__), '../../../%s/%s/packages/' |
| % (utils.BUILD_ROOT[utils.GuessOS()], utils.GetBuildConf('release', |
| utils.GuessArchitecture())))) |
| GSUTIL = utils.GetBuildbotGSUtilPath() |
| GS_SITE = 'gs://dartlang-docgen' |
| DESCRIPTION='Runs docgen.dart on the SDK libraries, and uploads them to Google \ |
| Cloud Storage for the dartdoc-viewer. ' |
| |
| |
| def GetOptions(): |
| parser = optparse.OptionParser(description=DESCRIPTION) |
| parser.add_option('--package-root', dest='pkg_root', |
| help='The package root for dart. (Default is in the build directory.)', |
| action='store', default=PACKAGE_ROOT) |
| (options, args) = parser.parse_args() |
| SetPackageRoot(options.pkg_root) |
| |
| |
| def SetPackageRoot(path): |
| global PACKAGE_ROOT |
| if exists(path): |
| PACKAGE_ROOT = abspath(path) |
| |
| |
| def SetGsutil(): |
| """ If not on buildbots, find gsutil relative to docgen. """ |
| global GSUTIL |
| if not exists(GSUTIL): |
| GSUTIL = abspath(join(dirname(__file__), |
| '../../../third_party/gsutil/gsutil')) |
| |
| |
| def Upload(source, target): |
| """ Upload files to Google Storage. """ |
| cmd = [GSUTIL, '-m', 'cp', '-q', '-a', 'public-read', '-r', source, target] |
| (status, output) = ExecuteCommand(cmd) |
| return status |
| |
| |
| def main(): |
| GetOptions() |
| |
| SetGsutil() |
| |
| # Execute Docgen.dart on the SDK. |
| ExecuteCommand([DART, '--checked', '--package-root=' + PACKAGE_ROOT, |
| abspath(join(dirname(__file__), 'docgen.dart')), |
| '--parse-sdk']) |
| |
| # Use SVN Revision to get the revision number. |
| revision = utils.GetSVNRevision() |
| if revision is None: |
| # Try to find the version from the dart-sdk folder. |
| revision_file_location = abspath(join(dirname(__file__), |
| '../../../%s/%s/dart-sdk/revision' % (utils.BUILD_ROOT[utils.GuessOS()], |
| utils.GetBuildConf('release', utils.GuessArchitecture())))) |
| with open(revision_file_location, 'r') as revision_file: |
| revision = revision_file.readline(5) |
| revision_file.close() |
| |
| if revision is None: |
| raise Exception("Unable to find revision. ") |
| |
| # Upload the all files in Docs into a folder based off Revision number on |
| # Cloud Storage. |
| Upload('./docs/*', GS_SITE + '/' + revision + '/') |
| |
| # Update VERSION file in Cloud Storage. |
| with open('VERSION', 'w') as version_file: |
| version_file.write(revision) |
| version_file.close() |
| Upload('./VERSION', GS_SITE + '/VERSION') |
| |
| # Clean up the files it creates. |
| ExecuteCommand(['rm', '-rf', './docs']) |
| ExecuteCommand(['rm', '-f', './VERSION']) |
| |
| |
| if __name__ == '__main__': |
| main() |