Chromium Code Reviews| Index: lib/src/server/server.dart |
| diff --git a/lib/src/server/server.dart b/lib/src/server/server.dart |
| index b5468dc39be08d784a644fc79901ecba70579007..92ed92855e1549d761fe805fb980c9957cde5a9d 100644 |
| --- a/lib/src/server/server.dart |
| +++ b/lib/src/server/server.dart |
| @@ -37,7 +37,7 @@ import 'dependency_graph.dart'; |
| /// Encapsulates the logic when the compiler is run as a development server. |
| class ServerCompiler extends AbstractCompiler { |
| - final SourceNode _entryNode; |
| + SourceNode _entryNode; |
| List<LibraryInfo> _libraries = <LibraryInfo>[]; |
| final _generators = <CodeGenerator>[]; |
| bool _hashing; |
| @@ -46,22 +46,30 @@ class ServerCompiler extends AbstractCompiler { |
| factory ServerCompiler(AnalysisContext context, CompilerOptions options, |
| {AnalysisErrorListener reporter}) { |
| var srcOpts = options.sourceOptions; |
| - var inputFile = options.inputs[0]; |
| - var inputUri = |
| + var inputFiles = options.inputs; |
| + var inputUris = inputFiles.map((String inputFile) => |
| inputFile.startsWith('dart:') || inputFile.startsWith('package:') |
| ? Uri.parse(inputFile) |
| : new Uri.file(path.absolute(srcOpts.useImplicitHtml |
| ? SourceResolverOptions.implicitHtmlFile |
| - : inputFile)); |
| + : inputFile))); |
| var graph = new SourceGraph(context, reporter, options); |
| - var entryNode = graph.nodeFromUri(inputUri); |
| + var entryNodes = inputUris.map((inputUri) => graph.nodeFromUri(inputUri)); |
| - return new ServerCompiler._(context, options, reporter, entryNode); |
| + return new ServerCompiler._(context, options, reporter, graph, entryNodes); |
| } |
| - ServerCompiler._(AnalysisContext context, CompilerOptions options, |
| - AnalysisErrorListener reporter, this._entryNode) |
| + ServerCompiler._( |
| + AnalysisContext context, |
| + CompilerOptions options, |
| + AnalysisErrorListener reporter, |
| + SourceGraph graph, |
| + List<SourceNode> entryNodes) |
| : super(context, options, reporter) { |
| + _entryNode = entryNodes.length == 1 |
| + ? entryNodes.first |
| + : new EntryNode(graph, new Uri.file(inputBaseDir), entryNodes); |
| + |
| if (outputDir != null) { |
| _generators.add(new JSGenerator(this)); |
| } |
| @@ -69,8 +77,6 @@ class ServerCompiler extends AbstractCompiler { |
| _hashing = options.enableHashing && _generators.length == 1; |
| } |
| - Uri get entryPointUri => _entryNode.uri; |
| - |
| CheckerResults run() { |
| var clock = new Stopwatch()..start(); |
| @@ -113,9 +119,11 @@ class ServerCompiler extends AbstractCompiler { |
| return; |
| } |
| - var filename = path.basename(node.uri.path); |
| - String outputFile = path.join(outputDir, filename); |
| - new File(outputFile).writeAsStringSync(output); |
| + var filepath = |
| + resourceOutputPath(node.uri, _entryNode.uri, options.runtimeDir); |
| + String outputFile = path.join(outputDir, filepath); |
| + var file = new File(outputFile)..createSync(recursive: true); |
| + file.writeAsStringSync(output); |
|
Jennifer Messerly
2016/01/29 16:49:49
same comment, it'd be nice to go all in on the cas
vsm
2016/01/29 18:13:51
Done.
|
| } |
| void _buildResourceFile(ResourceSourceNode node) { |