diff --git a/DEPS b/DEPS index 89e3581795d..9ef9d700ec8 100644 --- a/DEPS +++ b/DEPS @@ -50,7 +50,7 @@ vars = { "crypto_rev" : "@2df57a1e26dd88e8d0614207d4b062c73209917d", "csslib_tag" : "@0.12.0", "dart2js_info_rev" : "@154564c838fd7a1d9c33cabf33eae16751446535", - "dartdoc_tag" : "@v0.5.0", + "dartdoc_tag" : "@v0.5.0+3", "dart_services_rev" : "@7aea2574e6f3924bf409a80afb8ad52aa2be4f97", "dart_style_tag": "@0.2.0", "dev_compiler_rev": "@0.1.3", diff --git a/create_sdk.gyp b/create_sdk.gyp index 232009ceda4..769f502e289 100644 --- a/create_sdk.gyp +++ b/create_sdk.gyp @@ -12,6 +12,7 @@ 'utils/compiler/compiler.gyp:dart2js', 'utils/pub/pub.gyp:pub', 'utils/dartfmt/dartfmt.gyp:dartfmt', + 'utils/dartdoc/dartdoc.gyp:dartdoc', 'utils/analysis_server/analysis_server.gyp:analysis_server', 'utils/dartanalyzer/dartanalyzer.gyp:dartanalyzer', ], @@ -38,6 +39,7 @@ '<(SHARED_INTERMEDIATE_DIR)/dartanalyzer.dart.snapshot', '<(SHARED_INTERMEDIATE_DIR)/dartfmt.dart.snapshot', '<(SHARED_INTERMEDIATE_DIR)/analysis_server.dart.snapshot', + '<(SHARED_INTERMEDIATE_DIR)/dartdoc.dart.snapshot', 'tools/VERSION' ], 'outputs': [ diff --git a/sdk/bin/dartdoc b/sdk/bin/dartdoc new file mode 100755 index 00000000000..319df02872f --- /dev/null +++ b/sdk/bin/dartdoc @@ -0,0 +1,29 @@ +#!/bin/bash +# Copyright (c) 2015, 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. + +# Run dart_style/bin/format.dart on the Dart VM. This script assumes the Dart +# SDK's directory structure. + +function follow_links() { + file="$1" + while [ -h "$file" ]; do + # On Mac OS, readlink -f doesn't work. + file="$(readlink "$file")" + done + echo "$file" +} + +# Unlike $0, $BASH_SOURCE points to the absolute path of this file. +PROG_NAME="$(follow_links "$BASH_SOURCE")" + +# Handle the case where dart-sdk/bin has been symlinked to. +BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +SDK_DIR="$(cd "${BIN_DIR}/.." ; pwd -P)" + +SNAPSHOT="$BIN_DIR/snapshots/dartdoc.dart.snapshot" + +# We are running the snapshot in the built SDK. +DART="$BIN_DIR/dart" +exec "$DART" --packages="$BIN_DIR/snapshots/resources/dartdoc/.packages" "$SNAPSHOT" "$@" diff --git a/sdk/bin/dartdoc.bat b/sdk/bin/dartdoc.bat new file mode 100644 index 00000000000..58c20179118 --- /dev/null +++ b/sdk/bin/dartdoc.bat @@ -0,0 +1,44 @@ +@echo off +REM Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file +REM for details. All rights reserved. Use of this source code is governed by a +REM BSD-style license that can be found in the LICENSE file. + +setlocal +rem Handle the case where dart-sdk/bin has been symlinked to. +set DIR_NAME_WITH_SLASH=%~dp0 +set DIR_NAME=%DIR_NAME_WITH_SLASH:~0,-1%% +call :follow_links "%DIR_NAME%", RETURNED_BIN_DIR +rem Get rid of surrounding quotes. +for %%i in ("%RETURNED_BIN_DIR%") do set BIN_DIR=%%~fi + +set DART=%BIN_DIR%\dart +set SNAPSHOT=%BIN_DIR%\snapshots\dartdoc.dart.snapshot + +"%DART%" --packages="$BIN_DIR/snapshots/resources/dartdoc/.packages" "%SNAPSHOT%" %* + +endlocal + +exit /b %errorlevel% + +rem Follow the symbolic links (junctions points) using `dir to determine the +rem canonical path. Output with a link looks something like this +rem +rem 01/03/2013 10:11 PM abc def +rem [c:\dart_bleeding\dart-repo.9\dart\build\ReleaseIA32\dart-sdk] +rem +rem So in the output of 'dir /a:l "targetdir"' we are looking for a filename +rem surrounded by right angle bracket and left square bracket. Once we get +rem the filename, which is name of the link, we recursively follow that. +:follow_links +setlocal +for %%i in (%1) do set result=%%~fi +set current= +for /f "usebackq tokens=2 delims=[]" %%i in (`dir /a:l "%~dp1" 2^>nul ^ + ^| find "> %~n1 ["`) do ( + set current=%%i +) +if not "%current%"=="" call :follow_links "%current%", result +endlocal & set %~2=%result% +goto :eof + +:end diff --git a/tools/create_sdk.py b/tools/create_sdk.py index 4b840708cb6..b4e2135f765 100755 --- a/tools/create_sdk.py +++ b/tools/create_sdk.py @@ -15,6 +15,7 @@ # ....bin/ # ......dart or dart.exe (executable) # ......dart.lib (import library for VM native extensions on Windows) +# ......dartdoc # ......dartfmt # ......dart2js # ......dartanalyzer @@ -23,9 +24,15 @@ # ........analysis_server.dart.snapshot # ........dart2js.dart.snapshot # ........dartanalyzer.dart.snapshot +# ........dartdoc.dart.snapshot # ........dartfmt.dart.snapshot # ........pub.dart.snapshot # ........utils_wrapper.dart.snapshot +#.........resources/ +#...........dartdoc/ +#..............packages +#.............resources/ +#.............templates/ # ....include/ # ......dart_api.h # ......dart_mirrors_api.h @@ -114,18 +121,32 @@ def CopyShellScript(src_file, dest_dir): def CopyDartScripts(home, sdk_root): for executable in ['dart2js_sdk', 'dartanalyzer_sdk', 'dartfmt_sdk', 'docgen', - 'dartdocgen', 'pub_sdk']: + 'dartdocgen', 'pub_sdk', 'dartdoc']: CopyShellScript(os.path.join(home, 'sdk', 'bin', executable), os.path.join(sdk_root, 'bin')) def CopySnapshots(snapshots, sdk_root): for snapshot in ['analysis_server', 'dart2js', 'dartanalyzer', 'dartfmt', - 'utils_wrapper', 'pub']: + 'utils_wrapper', 'pub', 'dartdoc']: snapshot += '.dart.snapshot' copyfile(join(snapshots, snapshot), join(sdk_root, 'bin', 'snapshots', snapshot)) +def CopyDartdocResources(home,sdk_root): + RESOURCE_DIR = join(sdk_root, 'bin', 'snapshots', 'resources') + DARTDOC = join(RESOURCE_DIR, 'dartdoc') + + copytree(join(home, 'third_party', 'pkg', 'dartdoc', 'lib', 'templates'), + join(DARTDOC, 'templates')) + copytree(join(home, 'third_party', 'pkg', 'dartdoc', 'lib', 'resources'), + join(DARTDOC, 'resources')) + # write the .packages file + PACKAGES_FILE = join(DARTDOC, '.packages') + packages_file = open(PACKAGES_FILE, 'w') + packages_file.write('dartdoc:.') + packages_file.close() + def Main(): # Pull in all of the gypi files which will be munged into the sdk. @@ -251,6 +272,7 @@ def Main(): # Copy dart2js/pub. CopyDartScripts(HOME, SDK_tmp) CopySnapshots(SNAPSHOT, SDK_tmp) + CopyDartdocResources(HOME, SDK_tmp) # Write the 'version' file version = utils.GetVersion() diff --git a/utils/dartdoc/dartdoc.gyp b/utils/dartdoc/dartdoc.gyp new file mode 100644 index 00000000000..73c4fa42fd5 --- /dev/null +++ b/utils/dartdoc/dartdoc.gyp @@ -0,0 +1,36 @@ +# Copyright (c) 2014, 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. + +{ + 'targets': [ + { + 'target_name': 'dartdoc', + 'type': 'none', + 'dependencies': [ + '../../runtime/dart-runtime.gyp:dart', + '../../pkg/pkg.gyp:pkg_packages', + ], + 'actions': [ + { + 'action_name': 'generate_dartdoc_snapshot', + 'inputs': [ + '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)dart<(EXECUTABLE_SUFFIX)', + '../../sdk/lib/_internal/sdk_library_metadata/lib/libraries.dart', + '<(SHARED_INTERMEDIATE_DIR)/packages.stamp', + '