Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(861)

Side by Side Diff: pkg/docgen/lib/src/generator.dart

Issue 737033002: Let docgen detect a dart-sdk directory that's differently named, and do it correctly on bleeding ed… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: A much better implementation, actually use the --sdk value Created 6 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/docgen/lib/docgen.dart ('k') | pkg/docgen/lib/src/package_helpers.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library docgen.generator; 5 library docgen.generator;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:collection'; 8 import 'dart:collection';
9 import 'dart:convert'; 9 import 'dart:convert';
10 import 'dart:io'; 10 import 'dart:io';
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 /// also be documented. 54 /// also be documented.
55 /// If [parseSdk] is `true`, then all Dart SDK libraries will be documented. 55 /// If [parseSdk] is `true`, then all Dart SDK libraries will be documented.
56 /// This option is useful when only the SDK libraries are needed. 56 /// This option is useful when only the SDK libraries are needed.
57 /// 57 ///
58 /// Returned Future completes with true if document generation is successful. 58 /// Returned Future completes with true if document generation is successful.
59 Future<bool> generateDocumentation(List<String> files, {String packageRoot, 59 Future<bool> generateDocumentation(List<String> files, {String packageRoot,
60 bool outputToYaml: true, bool includePrivate: false, bool includeSdk: false, 60 bool outputToYaml: true, bool includePrivate: false, bool includeSdk: false,
61 bool parseSdk: false, String introFileName: '', 61 bool parseSdk: false, String introFileName: '',
62 out: DEFAULT_OUTPUT_DIRECTORY, List<String> excludeLibraries: const [], bool 62 out: DEFAULT_OUTPUT_DIRECTORY, List<String> excludeLibraries: const [], bool
63 includeDependentPackages: false, String startPage, String dartBinaryValue, 63 includeDependentPackages: false, String startPage, String dartBinaryValue,
64 String pubScriptValue, bool indentJSON: false}) { 64 String pubScriptValue, bool indentJSON: false, String sdk}) {
65 _excluded = excludeLibraries; 65 _excluded = excludeLibraries;
66 dartBinary = dartBinaryValue; 66 dartBinary = dartBinaryValue;
67 pubScript = pubScriptValue; 67 pubScript = pubScriptValue;
68 68
69 logger.onRecord.listen((record) => print(record.message)); 69 logger.onRecord.listen((record) => print(record.message));
70 70
71 _ensureOutputDirectory(out); 71 _ensureOutputDirectory(out);
72 var updatedPackageRoot = _obtainPackageRoot(packageRoot, parseSdk, files); 72 var updatedPackageRoot = _obtainPackageRoot(packageRoot, parseSdk, files);
73 73
74 var requestedLibraries = _findLibrariesToDocument(files, 74 var requestedLibraries = _findLibrariesToDocument(files,
75 includeDependentPackages); 75 includeDependentPackages);
76 76
77 var allLibraries = []..addAll(requestedLibraries); 77 var allLibraries = []..addAll(requestedLibraries);
78 if (includeSdk) { 78 if (includeSdk) {
79 allLibraries.addAll(_listSdk()); 79 allLibraries.addAll(_listSdk());
80 } 80 }
81 81
82 return getMirrorSystem(allLibraries, includePrivate, 82 return getMirrorSystem(allLibraries, includePrivate,
83 packageRoot: updatedPackageRoot, parseSdk: parseSdk) 83 packageRoot: updatedPackageRoot, parseSdk: parseSdk, sdkRoot: sdk)
84 .then((MirrorSystem mirrorSystem) { 84 .then((MirrorSystem mirrorSystem) {
85 if (mirrorSystem.libraries.isEmpty) { 85 if (mirrorSystem.libraries.isEmpty) {
86 throw new StateError('No library mirrors were created.'); 86 throw new StateError('No library mirrors were created.');
87 } 87 }
88 initializeTopLevelLibraries(mirrorSystem); 88 initializeTopLevelLibraries(mirrorSystem);
89 89
90 var availableLibraries = mirrorSystem.libraries.values 90 var availableLibraries = mirrorSystem.libraries.values
91 .where((each) => each.uri.scheme == 'file'); 91 .where((each) => each.uri.scheme == 'file');
92 var availableLibrariesByPath = 92 var availableLibrariesByPath =
93 new Map.fromIterables(availableLibraries.map((each) => each.uri), 93 new Map.fromIterables(availableLibraries.map((each) => each.uri),
94 availableLibraries); 94 availableLibraries);
95 var librariesToDocument = requestedLibraries 95 var librariesToDocument = requestedLibraries
96 .map((each) { 96 .map((each) {
97 return availableLibrariesByPath 97 return availableLibrariesByPath
98 .putIfAbsent(each, () => throw "Missing library $each"); 98 .putIfAbsent(each, () => throw "Missing library $each");
99 }).toList(); 99 }).toList();
100 librariesToDocument.addAll((includeSdk || parseSdk) ? sdkLibraries : []); 100 librariesToDocument.addAll((includeSdk || parseSdk) ? sdkLibraries : []);
101 librariesToDocument.removeWhere((x) => _excluded.contains( 101 librariesToDocument.removeWhere((x) => _excluded.contains(
102 dart2js_util.nameOf(x))); 102 dart2js_util.nameOf(x)));
103 _documentLibraries(librariesToDocument, includeSdk, parseSdk, introFileName, 103 _documentLibraries(librariesToDocument, includeSdk, parseSdk, introFileName,
104 startPage, indentJSON); 104 startPage, indentJSON);
105 return true; 105 return true;
106 }); 106 });
107 } 107 }
108 108
109 109
110 /// Analyzes set of libraries by getting a mirror system and triggers the 110 /// Analyzes set of libraries by getting a mirror system and triggers the
111 /// documentation of the libraries. 111 /// documentation of the libraries.
112 Future<MirrorSystem> getMirrorSystem(List<Uri> libraries, 112 Future<MirrorSystem> getMirrorSystem(List<Uri> libraries,
113 bool includePrivate, {String packageRoot, bool parseSdk: false}) { 113 bool includePrivate, {String packageRoot, bool parseSdk: false,
114 String sdkRoot}) {
114 if (libraries.isEmpty) throw new StateError('No Libraries.'); 115 if (libraries.isEmpty) throw new StateError('No Libraries.');
115 116
116 includePrivateMembers = includePrivate; 117 includePrivateMembers = includePrivate;
117 118
118 // Finds the root of SDK library based off the location of docgen. 119 // Finds the root of SDK library based off the location of docgen.
119 // We have two different places to look, depending if we're in a development 120 // We have two different places to look, depending if we're in a development
120 // repo or in a built SDK, either sdk or dart-sdk respectively 121 // repo or in a built SDK, either sdk or dart-sdk respectively
121 var root = rootDirectory; 122 if (sdkRoot == null) {
122 var sdkRoot = path.normalize(path.absolute(path.join(root, 'sdk'))); 123 var root = rootDirectory;
123 if (!new Directory(sdkRoot).existsSync()) { 124 sdkRoot = path.normalize(path.absolute(path.join(root, 'sdk')));
124 sdkRoot = path.normalize(path.absolute(path.join(root, 'dart-sdk'))); 125 if (!new Directory(sdkRoot).existsSync()) {
126 sdkRoot = path.normalize(path.absolute(path.join(root, 'dart-sdk')));
127 }
125 } 128 }
126 logger.info('SDK Root: ${sdkRoot}'); 129 logger.info('SDK Root: ${sdkRoot}');
127 return analyzeLibraries(libraries, sdkRoot, packageRoot: packageRoot); 130 return analyzeLibraries(libraries, sdkRoot, packageRoot: packageRoot);
128 } 131 }
129 132
130 /// Writes [text] to a file in the output directory. 133 /// Writes [text] to a file in the output directory.
131 void _writeToFile(String text, String filename) { 134 void _writeToFile(String text, String filename) {
132 if (text == null) return; 135 if (text == null) return;
133 136
134 var filePath = path.join(_outputDirectory, filename); 137 var filePath = path.join(_outputDirectory, filename);
(...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 * [Samples](http://www.dartlang.org/samples/) 477 * [Samples](http://www.dartlang.org/samples/)
475 * [A Tour of the Dart Libraries](http://www.dartlang.org/docs/dart-up-and-runn ing/contents/ch03.html) 478 * [A Tour of the Dart Libraries](http://www.dartlang.org/docs/dart-up-and-runn ing/contents/ch03.html)
476 479
477 This API reference is automatically generated from the source code in the 480 This API reference is automatically generated from the source code in the
478 [Dart project](https://code.google.com/p/dart/). 481 [Dart project](https://code.google.com/p/dart/).
479 If you'd like to contribute to this documentation, see 482 If you'd like to contribute to this documentation, see
480 [Contributing](https://code.google.com/p/dart/wiki/Contributing) 483 [Contributing](https://code.google.com/p/dart/wiki/Contributing)
481 and 484 and
482 [Writing API Documentation](https://code.google.com/p/dart/wiki/WritingApiDocume ntation). 485 [Writing API Documentation](https://code.google.com/p/dart/wiki/WritingApiDocume ntation).
483 """; 486 """;
OLDNEW
« no previous file with comments | « pkg/docgen/lib/docgen.dart ('k') | pkg/docgen/lib/src/package_helpers.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698