Index: pkg/analyzer/tool/task_dependency_graph/generate.dart |
diff --git a/pkg/analyzer/tool/task_dependency_graph/generate.dart b/pkg/analyzer/tool/task_dependency_graph/generate.dart |
index a98eaba6495734266af8b618bc24487892b69cd3..3a7bb121f800252f740ff37084971c8c9b67c28c 100644 |
--- a/pkg/analyzer/tool/task_dependency_graph/generate.dart |
+++ b/pkg/analyzer/tool/task_dependency_graph/generate.dart |
@@ -23,6 +23,7 @@ import 'dart:io' as io; |
import 'package:analyzer/analyzer.dart'; |
import 'package:analyzer/file_system/file_system.dart'; |
import 'package:analyzer/file_system/physical_file_system.dart'; |
+import 'package:analyzer/src/codegen/tools.dart'; |
import 'package:analyzer/src/generated/constant.dart'; |
import 'package:analyzer/src/generated/element.dart'; |
import 'package:analyzer/src/generated/engine.dart'; |
@@ -32,14 +33,21 @@ import 'package:analyzer/src/generated/sdk_io.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/generated/source_io.dart'; |
import 'package:path/path.dart' as path; |
+import 'package:path/path.dart'; |
/** |
* Generate the target .dot file. |
*/ |
main() { |
- new Driver().generateFile(); |
+ String script = Platform.script.toFilePath(windows: Platform.isWindows); |
+ String pkgPath = normalize(join(dirname(script), '..', '..')); |
+ target.generate(pkgPath); |
} |
+final GeneratedFile target = new GeneratedFile( |
+ 'tool/task_dependency_graph/tasks.dot', |
+ (String pkgPath) => new Driver(pkgPath).generateFileContents()); |
+ |
typedef void GetterFinderCallback(PropertyAccessorElement element); |
class Driver { |
@@ -52,9 +60,7 @@ class Driver { |
InterfaceType extensionPointIdType; |
final String rootDir; |
- Driver() |
- : rootDir = |
- findRoot(Platform.script.toFilePath(windows: Platform.isWindows)); |
+ Driver(String pkgPath) : rootDir = new Directory(pkgPath).absolute.path; |
/** |
* Get an [io.File] object corresponding to the file in which the generated |
@@ -64,18 +70,6 @@ class Driver { |
path.join(rootDir, 'tool', 'task_dependency_graph', 'tasks.dot')); |
/** |
- * Determine if the output [file] contains the expected contents. |
- */ |
- bool checkFile() { |
- String expectedContents = generateFileContents(); |
- String actualContents = file.readAsStringSync(); |
- // Normalize Windows line endings to Unix line endings so that the |
- // comparison doesn't fail on Windows. |
- actualContents = actualContents.replaceAll('\r\n', '\n'); |
- return expectedContents == actualContents; |
- } |
- |
- /** |
* Starting at [node], find all calls to registerExtension() which refer to |
* the given [extensionIdVariable], and execute [callback] for the associated |
* result descriptors. |
@@ -123,14 +117,6 @@ class Driver { |
} |
/** |
- * Generate the task dependency graph and write it to the output [file]. |
- */ |
- void generateFile() { |
- String fileContents = generateFileContents(); |
- file.writeAsStringSync(fileContents); |
- } |
- |
- /** |
* Generate the task dependency graph and return it as a [String]. |
*/ |
String generateFileContents() { |
@@ -268,21 +254,6 @@ ${lines.join('\n')} |
throw new Exception( |
'Could not find extension ID corresponding to $resultListGetterName'); |
} |
- |
- /** |
- * Find the root directory of the analyzer package by proceeding |
- * upward to the 'tool' dir, and then going up one more directory. |
- */ |
- static String findRoot(String pathname) { |
- while (path.basename(pathname) != 'tool') { |
- String parent = path.dirname(pathname); |
- if (parent.length >= pathname.length) { |
- throw new Exception("Can't find root directory"); |
- } |
- pathname = parent; |
- } |
- return path.dirname(pathname); |
- } |
} |
/** |